diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2014-11-25 15:00:26 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-25 14:00:14 -0800 |
commit | bb29456c89599acfc3ef3046e6a55ce0f48c9865 (patch) | |
tree | 3277c86e17aee3cf2c6bb166c0ba6837ac7778c2 /git-send-email.perl | |
parent | 652e759330da379a8e09e03bbf99e03c10c228cc (diff) | |
download | git-bb29456c89599acfc3ef3046e6a55ce0f48c9865.tar.gz |
git-send-email: delay creation of MIME headers
After the next patch, git-send-email will sometimes modify
existing Content-Transfer-Encoding headers. Delay the addition
of the header to @xh until just before sending. Do the same
for MIME-Version, to avoid adding it twice.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 9949db01e1..b29a3045b7 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1324,6 +1324,8 @@ foreach my $t (@files) { my $author_encoding; my $has_content_type; my $body_encoding; + my $xfer_encoding; + my $has_mime_version; @to = (); @cc = (); @xh = (); @@ -1394,9 +1396,16 @@ foreach my $t (@files) { } push @xh, $_; } + elsif (/^MIME-Version/i) { + $has_mime_version = 1; + push @xh, $_; + } elsif (/^Message-Id: (.*)/i) { $message_id = $1; } + elsif (/^Content-Transfer-Encoding: (.*)/i) { + $xfer_encoding = $1 if not defined $xfer_encoding; + } elsif (!/^Date:\s/i && /^[-A-Za-z]+:\s+\S/) { push @xh, $_; } @@ -1444,10 +1453,9 @@ foreach my $t (@files) { if defined $cc_cmd && !$suppress_cc{'cccmd'}; if ($broken_encoding{$t} && !$has_content_type) { + $xfer_encoding = '8bit' if not defined $xfer_encoding; $has_content_type = 1; - push @xh, "MIME-Version: 1.0", - "Content-Type: text/plain; charset=$auto_8bit_encoding", - "Content-Transfer-Encoding: 8bit"; + push @xh, "Content-Type: text/plain; charset=$auto_8bit_encoding"; $body_encoding = $auto_8bit_encoding; } @@ -1467,14 +1475,19 @@ foreach my $t (@files) { } } else { + $xfer_encoding = '8bit' if not defined $xfer_encoding; $has_content_type = 1; push @xh, - 'MIME-Version: 1.0', - "Content-Type: text/plain; charset=$author_encoding", - 'Content-Transfer-Encoding: 8bit'; + "Content-Type: text/plain; charset=$author_encoding"; } } } + if (defined $xfer_encoding) { + push @xh, "Content-Transfer-Encoding: $xfer_encoding"; + } + if (defined $xfer_encoding or $has_content_type) { + unshift @xh, 'MIME-Version: 1.0' unless $has_mime_version; + } $needs_confirm = ( $confirm eq "always" or |