X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMsgIter.pm;h=dd28417b70c043b092f231147d82580ba94e31cf;hb=HEAD;hp=c503eb98b8c502e3ecda265007772fada888424f;hpb=af0b0fb7a454470a32c452119d0392e0dedb3fe1;p=public-inbox.git diff --git a/lib/PublicInbox/MsgIter.pm b/lib/PublicInbox/MsgIter.pm index c503eb98..dd28417b 100644 --- a/lib/PublicInbox/MsgIter.pm +++ b/lib/PublicInbox/MsgIter.pm @@ -84,18 +84,30 @@ sub msg_part_text ($$) { # If forcing charset=UTF-8 failed, # caller will warn further down... $s = $part->body if $@; + } elsif ($err && $ct =~ m!\bapplication/octet-stream\b!i) { + # Some unconfigured/poorly-configured MUAs will set + # application/octet-stream even for all text attachments. + # Try to see if it's printable text that we can index + # and display: + $s = $part->body; + utf8::decode($s); + undef($s =~ /[^\p{XPosixPrint}\s]/s ? $s : $err); } ($s, $err); } # returns an array of quoted or unquoted sections sub split_quotes { + # some editors don't put trailing newlines at the end, + # make sure split_quotes can work: + $_[0] .= "\n" if substr($_[0], -1) ne "\n"; + # Quiet "Complex regular subexpression recursion limit" warning # in case an inconsiderate sender quotes 32K of text at once. # The warning from Perl is harmless for us since our callers can # tolerate less-than-ideal matches which work within Perl limits. no warnings 'regexp'; - split(/((?:^>[^\n]*\n)+)/sm, shift); + split(/((?:^>[^\n]*\n)+)/sm, $_[0]); } 1;