format-patch: generate MIME header as needed even when there is format.header
commit6bf4f1b4c9d78b2061bd5f3bf77bb21112b755be
authorJunio C Hamano <gitster@pobox.com>
Sat, 15 Mar 2008 00:10:09 +0000 (14 17:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 15 Mar 2008 07:06:06 +0000 (15 00:06 -0700)
tree2a5e51ddb5bed1e3149624a6d860d182fde9ec5d
parenta0b54e7b73415f92225ddf29fe655399bafd4938
format-patch: generate MIME header as needed even when there is format.header

Earlier, the callchain from pretty_print_commit() down to pp_title_line()
had an unwarranted assumption that the presense of "after_subject"
parameter, means the caller has already output MIME headers for
attachments.  The parameter's primary purpose is to give extra header
lines the caller wants to place after pp_title_line() generates the
"Subject: " line.

This assumption does not hold when the user used the format.header
configuration variable to pass extra headers, and caused a message with
non-ASCII character to lack proper MIME headers (e.g.  8-bit CTE header).
The earlier logic also failed to suppress duplicated MIME headers when
"format-patch -s --attach" is asked for and the signer's name demanded
8-bit clean transport.

This patch fixes the logic by introducing a separate need_8bit_cte
parameter passed down the callchain.  This can have one of these values:

 -1 : we've already done MIME crap and we do not want to add extra header
      to say this is 8bit in pp_title_line();

  0 : we haven't done MIME and we have not seen anything that is 8bit yet;

  1 : we haven't done MIME and we have seen something that is 8bit;
      pp_title_line() must add MIME header.

It adds two tests by Jeff King who independently diagnosed this issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.h
log-tree.c
pretty.c
t/t4021-format-patch-signer-mime.sh
t/t4028-format-patch-mime-headers.sh [new file with mode: 0755]