diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-10-18 15:40:06 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-10-21 15:36:37 -0700 |
commit | 69e24defd629eb6641e653b73459f57ab750c58b (patch) | |
tree | 34bce811a893024015da7e414aa8e01fadd4068c /builtin/mailinfo.c | |
parent | fde00d50f6b084680085b9924b198e7f3138fc9e (diff) | |
download | git-69e24defd629eb6641e653b73459f57ab750c58b.tar.gz |
mailinfo: do not let handle_boundary() touch global "line" directly
This function has a single caller, and called with the global "line"
holding the multi-part boundary line the caller saw while processing
the e-mail body. The function then goes into a loop to process each
line of the input, and fills the same global "line" variable from
the input as it needs to read more lines to process the multi-part
headers.
Let the caller explicitly pass a pointer to this global "line"
variable as an argument, and have the function itself use that
strbuf throughout, instead of referring to the global "line" itself.
There still is a helper function that this function calls that still
touches the global directly; it will be updated as the series progresses.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/mailinfo.c')
-rw-r--r-- | builtin/mailinfo.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index 6b4facabd4..9b3f349a11 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -795,14 +795,14 @@ static int find_boundary(void) return 0; } -static int handle_boundary(int *filter_stage, int *header_stage) +static int handle_boundary(struct strbuf *line, int *filter_stage, int *header_stage) { struct strbuf newline = STRBUF_INIT; strbuf_addch(&newline, '\n'); again: - if (line.len >= (*content_top)->len + 2 && - !memcmp(line.buf + (*content_top)->len, "--", 2)) { + if (line->len >= (*content_top)->len + 2 && + !memcmp(line->buf + (*content_top)->len, "--", 2)) { /* we hit an end boundary */ /* pop the current boundary off the stack */ strbuf_release(*content_top); @@ -831,14 +831,14 @@ again: strbuf_reset(&charset); /* slurp in this section's info */ - while (read_one_header_line(&line, fin)) - check_header(&line, p_hdr_data, 0); + while (read_one_header_line(line, fin)) + check_header(line, p_hdr_data, 0); strbuf_release(&newline); /* replenish line */ - if (strbuf_getline(&line, fin, '\n')) + if (strbuf_getline(line, fin, '\n')) return 0; - strbuf_addch(&line, '\n'); + strbuf_addch(line, '\n'); return 1; } @@ -862,7 +862,7 @@ static void handle_body(struct strbuf *line) handle_filter(&prev, &filter_stage, &header_stage); strbuf_reset(&prev); } - if (!handle_boundary(&filter_stage, &header_stage)) + if (!handle_boundary(line, &filter_stage, &header_stage)) goto handle_body_out; } |