X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMbox.pm;h=94e61d4d2ffdd99b3a5c5a9b2d14f2ca5bbfc1d5;hb=3b1b7abf814dbc7f2a737b2ca0e12b0fa518ff44;hp=16de1a728ab6345f58c0637f537bfca6485a44ce;hpb=92de3139920992bfad32ef927153f27addfdc72c;p=public-inbox.git diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm index 16de1a72..94e61d4d 100644 --- a/lib/PublicInbox/Mbox.pm +++ b/lib/PublicInbox/Mbox.pm @@ -14,19 +14,13 @@ use PublicInbox::MID qw/mid_escape/; use PublicInbox::Hval qw/to_filename/; use PublicInbox::Smsg; use PublicInbox::WwwStream qw(html_oneshot); -use Email::Simple; -use Email::MIME::Encode; +use PublicInbox::Eml; sub subject_fn ($) { my ($hdr) = @_; - my $fn = $hdr->header('Subject'); + my $fn = $hdr->header_str('Subject'); return 'no-subject' if (!defined($fn) || $fn eq ''); - # no need for full Email::MIME, here - if ($fn =~ /=\?/) { - eval { $fn = Encode::decode('MIME-Header', $fn) }; - return 'no-subject' if $@; - } $fn =~ s/^re:\s+//i; $fn eq '' ? 'no-subject' : to_filename($fn); } @@ -51,7 +45,7 @@ sub getline { my $ibx = $ctx->{-inbox}; $next = $ibx->over->next_by_mid($ctx->{mid}, \$id, \$prev); $mref = $ibx->msg_by_smsg($cur) or return; - $hdr = Email::Simple->new($mref)->header_obj; + $hdr = PublicInbox::Eml->new($mref)->header_obj; @$more = ($ctx, $id, $prev, $next); # $next may be undef, here msg_hdr($ctx, $hdr) . msg_body($$mref); } @@ -72,7 +66,7 @@ sub emit_raw { } else { $mref = $ibx->msg_by_mid($mid) or return; } - my $hdr = Email::Simple->new($mref)->header_obj; + my $hdr = PublicInbox::Eml->new($mref)->header_obj; $more = [ $ctx, $id, $prev, $next, $mref, $hdr ]; # for ->getline my $fn = subject_fn($hdr); my @hdr = ('Content-Type'); @@ -106,12 +100,15 @@ sub msg_hdr ($$;$) { 'List-Post', "{-primary_address}>", ); my $crlf = $header_obj->crlf; - my $buf = 'From mboxrd@z Thu Jan 1 00:00:00 1970' . $crlf . - $header_obj->as_string; + my $buf = $header_obj->as_string; + # fixup old bug from import (pre-a0c07cba0e5d8b6a) + $buf =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s; + $buf = "From mboxrd\@z Thu Jan 1 00:00:00 1970" . $crlf . $buf; + for (my $i = 0; $i < @append; $i += 2) { my $k = $append[$i]; my $v = $append[$i + 1]; - my @v = $header_obj->header($k); + my @v = $header_obj->header_raw($k); foreach (@v) { if ($v eq $_) { $v = undef; @@ -149,8 +146,7 @@ sub thread_cb { sub thread_mbox { my ($ctx, $over, $sfx) = @_; - eval { require PublicInbox::MboxGz }; - return need_gzip($ctx) if $@; + require PublicInbox::MboxGz; my $msgs = $ctx->{msgs} = $over->get_thread($ctx->{mid}, {}); return [404, [qw(Content-Type text/plain)], []] if !@$msgs; $ctx->{prev} = $msgs->[-1]; @@ -218,8 +214,7 @@ sub results_cb { sub mbox_all { my ($ctx, $query) = @_; - eval { require PublicInbox::MboxGz }; - return need_gzip($ctx) if $@; + require PublicInbox::MboxGz; return mbox_all_ids($ctx) if $query eq ''; my $qopts = $ctx->{qopts} = { mset => 2 }; my $srch = $ctx->{srch} = $ctx->{-inbox}->search or @@ -233,15 +228,4 @@ sub mbox_all { PublicInbox::MboxGz->response($ctx, \&results_cb, 'results-'.$query); } -sub need_gzip { - html_oneshot($_[0], 501, \<gzipped mbox not available - -The administrator needs to install the Compress::Raw::Zlib Perl module -to support gzipped mboxes. - -Return to index -EOF -} - 1;