From 3ef89f98a662a135ae18dddf3ff3e61e8e3ca996 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 20 Jun 2017 22:06:54 +0000 Subject: [PATCH] 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. --- lib/PublicInbox/Import.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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; -- 2.44.0