Last night I was going through old mail-logs and found this and another one that this is a follow-up to, which I think are still needed. Does anybody see anything wrong with them? Jeff King <peff@xxxxxxxx> writes: > We always use 'utf-8' as the encoding, since we currently > have no way of getting the information from the user. > > This also refactors the quoting of recipient names, since > both processes can share the rfc2047 quoting code. > > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > git-send-email.perl | 19 +++++++++++++++++-- > t/t9001-send-email.sh | 15 +++++++++++++++ > 2 files changed, 32 insertions(+), 2 deletions(-) > > diff --git a/git-send-email.perl b/git-send-email.perl > index 7c4f06c..d0f9d4a 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -536,6 +536,14 @@ EOT > if (!$in_body && /^MIME-Version:/i) { > $need_8bit_cte = 0; > } > + if (!$in_body && /^Subject: ?(.*)/i) { > + my $subject = $1; > + $_ = "Subject: " . > + ($subject =~ /[^[:ascii:]]/ ? > + quote_rfc2047($subject) : > + $subject) . > + "\n"; > + } > print C2 $_; > } > close(C); > @@ -626,6 +634,14 @@ sub unquote_rfc2047 { > return wantarray ? ($_, $encoding) : $_; > } > > +sub quote_rfc2047 { > + local $_ = shift; > + my $encoding = shift || 'utf-8'; > + s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg; > + s/(.*)/=\?$encoding\?q\?$1\?=/; > + return $_; > +} > + > # use the simplest quoting being able to handle the recipient > sub sanitize_address > { > @@ -643,8 +659,7 @@ sub sanitize_address > > # rfc2047 is needed if a non-ascii char is included > if ($recipient_name =~ /[^[:ascii:]]/) { > - $recipient_name =~ s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg; > - $recipient_name =~ s/(.*)/=\?utf-8\?q\?$1\?=/; > + $recipient_name = quote_rfc2047($recipient_name); > } > > # double quotes are needed if specials or CTLs are included > diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh > index e222c49..a4bcd28 100755 > --- a/t/t9001-send-email.sh > +++ b/t/t9001-send-email.sh > @@ -210,4 +210,19 @@ test_expect_success '--compose respects user mime type' ' > ! grep "^Content-Type: text/plain; charset=utf-8" msgtxt1 > ' > > +test_expect_success '--compose adds MIME for utf8 subject' ' > + clean_fake_sendmail && > + echo y | \ > + GIT_EDITOR=$(pwd)/fake-editor \ > + GIT_SEND_EMAIL_NOTTY=1 \ > + git send-email \ > + --compose --subject utf8-sübjëct \ > + --from="Example <nobody@xxxxxxxxxxx>" \ > + --to=nobody@xxxxxxxxxxx \ > + --smtp-server="$(pwd)/fake.sendmail" \ > + $patches && > + grep "^fake edit" msgtxt1 && > + grep "^Subject: =?utf-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1 > +' > + > test_done > -- > 1.5.5.rc1.141.g50ecd.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html