From 86747c132b87fc97bbb134baaffe9ecc12c5a90d Mon Sep 17 00:00:00 2001 From: Don Zickus Date: Fri, 30 Mar 2007 12:18:45 -0400 Subject: [PATCH] git-mailinfo fixes for patch munging Don't translate the patch to UTF-8, instead preserve the data as is. This also reverts a test case that was included in the original patch series. Also allow overwriting the authorship and title information we gather from RFC2822 mail headers with additional in-body headers, which was pointed out by Linus. Signed-off-by: Don Zickus Signed-off-by: Junio C Hamano --- builtin-mailinfo.c | 23 ++++++++++++----------- t/t5100/patch0005 | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c index d94578cb4a..c95e477e83 100644 --- a/builtin-mailinfo.c +++ b/builtin-mailinfo.c @@ -294,14 +294,14 @@ static char *header[MAX_HDR_PARSED] = { "From","Subject","Date", }; -static int check_header(char *line, char **hdr_data) +static int check_header(char *line, char **hdr_data, int overwrite) { int i; /* search for the interesting parts */ for (i = 0; header[i]; i++) { int len = strlen(header[i]); - if (!hdr_data[i] && + if ((!hdr_data[i] || overwrite) && !strncasecmp(line, header[i], len) && line[len] == ':' && isspace(line[len + 1])) { /* Unwrap inline B and Q encoding, and optionally @@ -614,6 +614,7 @@ static int find_boundary(void) static int handle_boundary(void) { + char newline[]="\n"; again: if (!memcmp(line+content_top->boundary_len, "--", 2)) { /* we hit an end boundary */ @@ -628,7 +629,7 @@ again: "can't recover\n"); exit(1); } - handle_filter("\n"); + handle_filter(newline); /* skip to the next boundary */ if (!find_boundary()) @@ -643,7 +644,7 @@ again: /* slurp in this section's info */ while (read_one_header_line(line, sizeof(line), fin)) - check_header(line, p_hdr_data); + check_header(line, p_hdr_data, 0); /* eat the blank line after section info */ return (fgets(line, sizeof(line), fin) != NULL); @@ -699,10 +700,14 @@ static int handle_commit_msg(char *line) if (!*cp) return 0; } - if ((still_looking = check_header(cp, s_hdr_data)) != 0) + if ((still_looking = check_header(cp, s_hdr_data, 0)) != 0) return 0; } + /* normalize the log message to UTF-8. */ + if (metainfo_charset) + convert_to_utf8(line, charset); + if (patchbreak(line)) { fclose(cmitmsg); cmitmsg = NULL; @@ -767,12 +772,8 @@ static void handle_body(void) return; } - /* Unwrap transfer encoding and optionally - * normalize the log message to UTF-8. - */ + /* Unwrap transfer encoding */ decode_transfer_encoding(line); - if (metainfo_charset) - convert_to_utf8(line, charset); switch (transfer_encoding) { case TE_BASE64: @@ -875,7 +876,7 @@ int mailinfo(FILE *in, FILE *out, int ks, const char *encoding, /* process the email header */ while (read_one_header_line(line, sizeof(line), fin)) - check_header(line, p_hdr_data); + check_header(line, p_hdr_data, 1); handle_body(); handle_info(); diff --git a/t/t5100/patch0005 b/t/t5100/patch0005 index e7d6f66608..7d24b24af8 100644 --- a/t/t5100/patch0005 +++ b/t/t5100/patch0005 @@ -61,7 +61,7 @@ diff --git a/git-cvsimport-script b/git-cvsimport-script push(@old,$fn); -- -David Kågedal +David Kågedal - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org -- 2.11.4.GIT