builtin format-patch: squelch content-type for 7-bit ASCII
When --attach is not used, usually we do not say Content-Type: and fluff, but if the commit message is not 7-bit ASCII, mark it as "text/plain; charset=UTF-8". This unclutters output somewhat. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
cdd406e389
commit
c831da6647
17
commit.c
17
commit.c
@ -559,10 +559,24 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
|
|||||||
int indent = 4;
|
int indent = 4;
|
||||||
int parents_shown = 0;
|
int parents_shown = 0;
|
||||||
const char *msg = commit->buffer;
|
const char *msg = commit->buffer;
|
||||||
|
int plain_non_ascii = 0;
|
||||||
|
|
||||||
if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL)
|
if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL)
|
||||||
indent = 0;
|
indent = 0;
|
||||||
|
|
||||||
|
/* After-subject is used to pass in Content-Type: multipart
|
||||||
|
* MIME header; in that case we do not have to do the
|
||||||
|
* plaintext content type even if the commit message has
|
||||||
|
* non 7-bit ASCII character. Otherwise, check if we need
|
||||||
|
* to say this is not a 7-bit ASCII.
|
||||||
|
*/
|
||||||
|
if (fmt == CMIT_FMT_EMAIL && !after_subject) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; !plain_non_ascii && msg[i] && i < len; i++)
|
||||||
|
if (msg[i] & 0x80)
|
||||||
|
plain_non_ascii = 1;
|
||||||
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
const char *line = msg;
|
const char *line = msg;
|
||||||
int linelen = get_one_line(msg, len);
|
int linelen = get_one_line(msg, len);
|
||||||
@ -648,13 +662,12 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
|
|||||||
buf[offset++] = '\n';
|
buf[offset++] = '\n';
|
||||||
if (fmt == CMIT_FMT_ONELINE)
|
if (fmt == CMIT_FMT_ONELINE)
|
||||||
break;
|
break;
|
||||||
if (subject) {
|
if (subject && plain_non_ascii) {
|
||||||
static const char header[] =
|
static const char header[] =
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n";
|
"Content-Transfer-Encoding: 8bit\n";
|
||||||
memcpy(buf + offset, header, sizeof(header)-1);
|
memcpy(buf + offset, header, sizeof(header)-1);
|
||||||
offset += sizeof(header)-1;
|
offset += sizeof(header)-1;
|
||||||
subject = NULL;
|
|
||||||
}
|
}
|
||||||
if (after_subject) {
|
if (after_subject) {
|
||||||
int slen = strlen(after_subject);
|
int slen = strlen(after_subject);
|
||||||
|
Loading…
Reference in New Issue
Block a user