Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- builtin/mailinfo.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index 18781b7..810d132 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -22,6 +22,7 @@ struct mailinfo { int use_inbody_headers; /* defaults to 1 */ const char *metainfo_charset; + struct strbuf charset; char *message_id; enum { TE_DONTCARE, TE_QP, TE_BASE64 @@ -31,9 +32,6 @@ struct mailinfo { int header_stage; /* still checking in-body headers? */ }; - -static struct strbuf charset = STRBUF_INIT; - static struct strbuf **p_hdr_data, **s_hdr_data; #define MAX_HDR_PARSED 10 @@ -186,7 +184,7 @@ static struct strbuf *content[MAX_BOUNDARIES]; static struct strbuf **content_top = content; -static void handle_content_type(struct strbuf *line) +static void handle_content_type(struct mailinfo *mi, struct strbuf *line) { struct strbuf *boundary = xmalloc(sizeof(struct strbuf)); strbuf_init(boundary, line->len); @@ -200,7 +198,7 @@ static void handle_content_type(struct strbuf *line) *content_top = boundary; boundary = NULL; } - slurp_attr(line->buf, "charset=", &charset); + slurp_attr(line->buf, "charset=", &mi->charset); if (boundary) { strbuf_release(boundary); @@ -349,7 +347,7 @@ static int check_header(struct mailinfo *mi, strbuf_add(&sb, line->buf + len, line->len - len); decode_header(mi, &sb); strbuf_insert(&sb, 0, "Content-Type: ", len); - handle_content_type(&sb); + handle_content_type(mi, &sb); ret = 1; goto check_header_out; } @@ -745,7 +743,7 @@ static int handle_commit_msg(struct mailinfo *mi, struct strbuf *line) mi->header_stage = 0; /* normalize the log message to UTF-8. */ - convert_to_utf8(mi, line, charset.buf); + convert_to_utf8(mi, line, mi->charset.buf); if (mi->use_scissors && is_scissors_line(line)) { int i; @@ -840,7 +838,7 @@ again: /* set some defaults */ mi->transfer_encoding = TE_DONTCARE; - strbuf_reset(&charset); + strbuf_reset(&mi->charset); /* slurp in this section's info */ while (read_one_header_line(line, mi->input)) @@ -1027,6 +1025,7 @@ static void setup_mailinfo(struct mailinfo *mi) memset(mi, 0, sizeof(*mi)); strbuf_init(&mi->name, 0); strbuf_init(&mi->email, 0); + strbuf_init(&mi->charset, 0); mi->header_stage = 1; mi->use_inbody_headers = 1; git_config(git_mailinfo_config, &mi); @@ -1036,6 +1035,7 @@ static void clear_mailinfo(struct mailinfo *mi) { strbuf_release(&mi->name); strbuf_release(&mi->email); + strbuf_release(&mi->charset); free(mi->message_id); } -- 2.6.2-383-g144b2e6 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html