X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearchMsg.pm;h=0fb2a07e43f5818f30acfe4ba4cfc8fdec60ce65;hb=23a4e44bedabe5b8b651346cabc2a870c5377a30;hp=93be747507bc7c7589afcad39758a3d10dfa7d33;hpb=f564327fd1e694056a4b13ed398cabd8d0d4c173;p=public-inbox.git diff --git a/lib/PublicInbox/SearchMsg.pm b/lib/PublicInbox/SearchMsg.pm index 93be7475..0fb2a07e 100644 --- a/lib/PublicInbox/SearchMsg.pm +++ b/lib/PublicInbox/SearchMsg.pm @@ -1,5 +1,5 @@ -# Copyright (C) 2015 all contributors -# License: GPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) +# Copyright (C) 2015-2016 all contributors +# License: AGPL-3.0+ # based on notmuch, but with no concept of folders, files or flags # # Wraps a document inside our Xapian search index. @@ -7,11 +7,10 @@ package PublicInbox::SearchMsg; use strict; use warnings; use Search::Xapian; -use Email::Address qw//; -use Email::Simple qw//; use POSIX qw//; use Date::Parse qw/str2time/; use PublicInbox::MID qw/mid_clean/; +use PublicInbox::Address; use Encode qw/find_encoding/; my $enc_utf8 = find_encoding('UTF-8'); our $PFX2TERM_RE = undef; @@ -66,7 +65,8 @@ sub __hdr ($$) { my $mime = $self->{mime} or return; $val = $mime->header($field); $val = '' unless defined $val; - $val =~ tr/\t\r\n/ /; + $val =~ tr/\n/ /; + $val =~ tr/\r//d; $self->{$field} = $val; } @@ -87,9 +87,7 @@ sub from ($) { my ($self) = @_; my $from = __hdr($self, 'from'); if (defined $from && !defined $self->{from_name}) { - $from =~ tr/\t\r\n/ /; - my @from = Email::Address->parse($from); - $self->{from_name} = $from[0]->name; + $self->{from_name} = PublicInbox::Address::from_name($from); } $from; } @@ -148,12 +146,9 @@ sub ensure_metadata { sub mini_mime { my ($self) = @_; $self->ensure_metadata; - my @hs = ( + my @h = ( 'Subject' => $self->subject, 'X-PI-From' => $self->from_name, - ); - - my @h = ( # prevent Email::Simple::Creator from running, # this header is useless for threading as we use X-PI-TS # for sorting and display: @@ -164,7 +159,7 @@ sub mini_mime { if (my $refs = $self->{references}) { push @h, References => $refs; } - my $mime = Email::MIME->create(header_str => \@hs, header => \@h); + my $mime = Email::MIME->create(header => \@h); my $h = $mime->header_obj; # set these headers manually since Encode::encode('MIME-Q', ...) @@ -189,12 +184,7 @@ sub mid ($;$) { } } -sub _extract_mid { - my ($self) = @_; - - my $mid = $self->mime->header('Message-ID'); - defined $mid ? mid_clean($mid) : $mid; -} +sub _extract_mid { mid_clean(mid_mime($_[0]->mime)) } sub mime { my ($self, $mime) = @_;