From: Jonathan Tan Date: Mon, 19 Sep 2016 21:08:50 +0000 (-0700) Subject: mailinfo: separate in-body header processing X-Git-Tag: v2.11.0-rc0~102^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=334192b411312c1ffab01af346d2d64d23597d84;p=thirdparty%2Fgit.git mailinfo: separate in-body header processing The check_header function contains logic specific to in-body headers, although it is invoked during both the processing of actual headers and in-body headers. Separate out the in-body header part into its own function. Signed-off-by: Jonathan Tan Signed-off-by: Junio C Hamano --- diff --git a/mailinfo.c b/mailinfo.c index e19abe3cb9..0c4738a70e 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -495,21 +495,6 @@ static int check_header(struct mailinfo *mi, goto check_header_out; } - /* for inbody stuff */ - if (starts_with(line->buf, ">From") && isspace(line->buf[5])) { - ret = is_format_patch_separator(line->buf + 1, line->len - 1); - goto check_header_out; - } - if (starts_with(line->buf, "[PATCH]") && isspace(line->buf[7])) { - for (i = 0; header[i]; i++) { - if (!strcmp("Subject", header[i])) { - handle_header(&hdr_data[i], line); - ret = 1; - goto check_header_out; - } - } - } - check_header_out: strbuf_release(&sb); return ret; @@ -623,6 +608,22 @@ static int is_scissors_line(const struct strbuf *line) gap * 2 < perforation); } +static int check_inbody_header(struct mailinfo *mi, const struct strbuf *line) +{ + if (starts_with(line->buf, ">From") && isspace(line->buf[5])) + return is_format_patch_separator(line->buf + 1, line->len - 1); + if (starts_with(line->buf, "[PATCH]") && isspace(line->buf[7])) { + int i; + for (i = 0; header[i]; i++) + if (!strcmp("Subject", header[i])) { + handle_header(&mi->s_hdr_data[i], line); + return 1; + } + return 0; + } + return check_header(mi, line, mi->s_hdr_data, 0); +} + static int handle_commit_msg(struct mailinfo *mi, struct strbuf *line) { assert(!mi->filter_stage); @@ -633,7 +634,7 @@ static int handle_commit_msg(struct mailinfo *mi, struct strbuf *line) } if (mi->use_inbody_headers && mi->header_stage) { - mi->header_stage = check_header(mi, line, mi->s_hdr_data, 0); + mi->header_stage = check_inbody_header(mi, line); if (mi->header_stage) return 0; } else