Skip to content

Commit 0da4677

Browse files
author
Junio C Hamano
committed
fix rfc2047 formatter.
Running git-format-patch on patches from Lukas destroyed the From: line. This fixes it. Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent 0e26f7a commit 0da4677

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

commit.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ static int add_rfc2047(char *buf, const char *line, int len)
447447
memcpy(bp, q_utf8, sizeof(q_utf8)-1);
448448
bp += sizeof(q_utf8)-1;
449449
for (i = 0; i < len; i++) {
450-
unsigned ch = line[i];
450+
unsigned ch = line[i] & 0xFF;
451451
if (is_rfc2047_special(ch)) {
452452
sprintf(bp, "=%02X", ch);
453453
bp += 3;
@@ -571,10 +571,23 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
571571
* to say this is not a 7-bit ASCII.
572572
*/
573573
if (fmt == CMIT_FMT_EMAIL && !after_subject) {
574-
int i;
575-
for (i = 0; !plain_non_ascii && msg[i] && i < len; i++)
576-
if (msg[i] & 0x80)
574+
int i, ch, in_body;
575+
576+
for (in_body = i = 0; (ch = msg[i]) && i < len; i++) {
577+
if (!in_body) {
578+
/* author could be non 7-bit ASCII but
579+
* the log may so; skip over the
580+
* header part first.
581+
*/
582+
if (ch == '\n' &&
583+
i + 1 < len && msg[i+1] == '\n')
584+
in_body = 1;
585+
}
586+
else if (ch & 0x80) {
577587
plain_non_ascii = 1;
588+
break;
589+
}
590+
}
578591
}
579592

580593
for (;;) {

0 commit comments

Comments
 (0)