summaryrefslogtreecommitdiff
path: root/git-send-email.perl
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2008-03-28 17:28:33 -0400
committerJunio C Hamano <gitster@pobox.com>2008-05-21 13:05:09 -0700
commit0706bd19ef9b41e7519df2c73796ef93484272fd (patch)
tree2ca94cbd6c7971e36b709f0266d0e84726cb1c2e /git-send-email.perl
parente4d594c6bdcb25b996120fe21c901af7a08a7f6d (diff)
downloadgit-0706bd19ef9b41e7519df2c73796ef93484272fd.tar.gz
send-email: specify content-type of --compose body
If the compose message contains non-ascii characters, then we assume it is in utf-8 and include the appropriate MIME headers. If the user has already included a MIME-Version header, then we assume they know what they are doing and don't add any headers. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-xgit-send-email.perl24
1 files changed, 24 insertions, 0 deletions
diff --git a/git-send-email.perl b/git-send-email.perl
index be4a20d7cd..71ba44d69d 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -518,8 +518,22 @@ EOT
open(C,"<",$compose_filename)
or die "Failed to open $compose_filename : " . $!;
+ my $need_8bit_cte = file_has_nonascii($compose_filename);
+ my $in_body = 0;
while(<C>) {
next if m/^GIT: /;
+ if (!$in_body && /^\n$/) {
+ $in_body = 1;
+ if ($need_8bit_cte) {
+ print C2 "MIME-Version: 1.0\n",
+ "Content-Type: text/plain; ",
+ "charset=utf-8\n",
+ "Content-Transfer-Encoding: 8bit\n";
+ }
+ }
+ if (!$in_body && /^MIME-Version:/i) {
+ $need_8bit_cte = 0;
+ }
print C2 $_;
}
close(C);
@@ -956,3 +970,13 @@ sub validate_patch {
}
return undef;
}
+
+sub file_has_nonascii {
+ my $fn = shift;
+ open(my $fh, '<', $fn)
+ or die "unable to open $fn: $!\n";
+ while (my $line = <$fh>) {
+ return 1 if $line =~ /[^[:ascii:]]/;
+ }
+ return 0;
+}