On Fri, Jan 25, 2013 at 07:28:54PM +0400, Alexey Shumkin wrote: > "git format-patch --attach/--inline" generates multi-part messages. > Every part of such messages can contain non-ASCII characters with its own > "Content-Type" and "Content-Transfer-Encoding" headers. > But git-send-mail script interprets a patch-file as one-part message > and does not recognize multi-part messages. > So already quoted printable email subject may be encoded as quoted printable > again. Due to this bug email subject looks corrupted in email clients. I don't think that the problem with the Subject is multi-part message specific. The real problem with the Subject is probably that is_rfc2047_quoted() does not detect that the Subject is already quoted. Of course we still need that explicit multi-part message support to avoid "Which 8bit encoding should I declare [UTF-8]? " message. > > diff --git a/git-send-email.perl b/git-send-email.perl > index 94c7f76..d49befe 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -1499,12 +1499,17 @@ sub file_has_nonascii { > > sub body_or_subject_has_nonascii { > my $fn = shift; > + my $multipart = 0; > open(my $fh, '<', $fn) > or die "unable to open $fn: $!\n"; > while (my $line = <$fh>) { > last if $line =~ /^$/; > + if ($line =~ /^Content-Type:\s*multipart\/mixed.*$/) { > + $multipart = 1; > + } > return 1 if $line =~ /^Subject.*[^[:ascii:]]/; > } > + return 0 if $multipart; > while (my $line = <$fh>) { > return 1 if $line =~ /[^[:ascii:]]/; > } After this change the function name is no longer appropriate. Maybe we should join body_or_subject_has_nonascii() and file_declares_8bit_cte() because in case of multi-part messages "next unless (body_or_subject_has_nonascii($f) && !file_declares_8bit_cte($f));" is not valid anymore. We could also check for broken_encoding in single pass. Thanks, Krzysiek -- 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