summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-10-18 15:40:06 -0700
committerJunio C Hamano <gitster@pobox.com>2015-10-21 15:36:37 -0700
commit69e24defd629eb6641e653b73459f57ab750c58b (patch)
tree34bce811a893024015da7e414aa8e01fadd4068c
parentfde00d50f6b084680085b9924b198e7f3138fc9e (diff)
downloadgit-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>
-rw-r--r--builtin/mailinfo.c16
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;
}