From: Eric Wong Date: Tue, 20 Jun 2017 22:06:54 +0000 (+0000) Subject: import: fix encoding issues from weird "raw" emails X-Git-Tag: v1.0.0~54 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=3ef89f98a662a135ae18dddf3ff3e61e8e3ca996 import: fix encoding issues from weird "raw" emails This seems to allow weirdly-encoded "raw" emails in blade.nagaokaut.ac.jp/ruby/ruby-core/* to be handled without difficulties. --- diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm index 65da4ddf..31dc7695 100644 --- a/lib/PublicInbox/Import.pm +++ b/lib/PublicInbox/Import.pm @@ -54,6 +54,8 @@ sub gfi_start { $self->{lockfh} = $lockfh; $self->{pid} = $pid; $self->{nchg} = 0; + binmode $out_w, ':raw' or die "binmode :raw failed: $!"; + binmode $in_r, ':raw' or die "binmode :raw failed: $!"; ($in_r, $out_w); } @@ -187,13 +189,14 @@ sub add { print $w "reset $ref\n" or wfail; } + utf8::encode($email); + utf8::encode($name); + utf8::encode($subject); # quiet down wide character warnings: - binmode $w, ':utf8' or die "binmode :utf8 failed: $!"; print $w "commit $ref\nmark :$commit\n", "author $name <$email> $date\n", "committer $self->{ident} ", now2822(), "\n" or wfail; - binmode $w, ':raw' or die "binmode :raw failed: $!"; - print $w "data ", (bytes::length($subject) + 1), "\n", + print $w "data ", (length($subject) + 1), "\n", $subject, "\n\n" or wfail; if ($tip ne '') { print $w 'from ', ($parent ? $parent : $tip), "\n" or wfail;