summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2015-10-14 16:16:05 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2015-10-21 15:53:25 -0700
commitab50e38b5d15dc4490cc45c3d7ad6c232cb4c330 (patch)
tree5b76c79935f070d8d896d9e2d368f4b1461442eb /builtin
parentmailinfo: move check for metainfo_charset to convert_to_utf8() (diff)
downloadtgif-ab50e38b5d15dc4490cc45c3d7ad6c232cb4c330.tar.xz
mailinfo: move transfer_encoding to struct mailinfo
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/mailinfo.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
index 1048a46e40..f74973ea0d 100644
--- a/builtin/mailinfo.c
+++ b/builtin/mailinfo.c
@@ -23,14 +23,14 @@ struct mailinfo {
const char *metainfo_charset;
char *message_id;
+ enum {
+ TE_DONTCARE, TE_QP, TE_BASE64
+ } transfer_encoding;
int patch_lines;
int filter_stage; /* still reading log or are we copying patch? */
int header_stage; /* still checking in-body headers? */
};
-static enum {
- TE_DONTCARE, TE_QP, TE_BASE64
-} transfer_encoding;
static struct strbuf charset = STRBUF_INIT;
static struct strbuf **p_hdr_data, **s_hdr_data;
@@ -221,14 +221,15 @@ static void handle_message_id(struct mailinfo *mi, const struct strbuf *line)
mi->message_id = strdup(line->buf);
}
-static void handle_content_transfer_encoding(const struct strbuf *line)
+static void handle_content_transfer_encoding(struct mailinfo *mi,
+ const struct strbuf *line)
{
if (strcasestr(line->buf, "base64"))
- transfer_encoding = TE_BASE64;
+ mi->transfer_encoding = TE_BASE64;
else if (strcasestr(line->buf, "quoted-printable"))
- transfer_encoding = TE_QP;
+ mi->transfer_encoding = TE_QP;
else
- transfer_encoding = TE_DONTCARE;
+ mi->transfer_encoding = TE_DONTCARE;
}
static int is_multipart_boundary(const struct strbuf *line)
@@ -511,7 +512,7 @@ static int check_header(struct mailinfo *mi,
len = strlen("Content-Transfer-Encoding: ");
strbuf_add(&sb, line->buf + len, line->len - len);
decode_header(mi, &sb);
- handle_content_transfer_encoding(&sb);
+ handle_content_transfer_encoding(mi, &sb);
ret = 1;
goto check_header_out;
}
@@ -544,11 +545,11 @@ check_header_out:
return ret;
}
-static void decode_transfer_encoding(struct strbuf *line)
+static void decode_transfer_encoding(struct mailinfo *mi, struct strbuf *line)
{
struct strbuf *ret;
- switch (transfer_encoding) {
+ switch (mi->transfer_encoding) {
case TE_QP:
ret = decode_q_segment(line, 0);
break;
@@ -835,7 +836,7 @@ again:
}
/* set some defaults */
- transfer_encoding = TE_DONTCARE;
+ mi->transfer_encoding = TE_DONTCARE;
strbuf_reset(&charset);
/* slurp in this section's info */
@@ -873,9 +874,9 @@ static void handle_body(struct mailinfo *mi, struct strbuf *line)
}
/* Unwrap transfer encoding */
- decode_transfer_encoding(line);
+ decode_transfer_encoding(mi, line);
- switch (transfer_encoding) {
+ switch (mi->transfer_encoding) {
case TE_BASE64:
case TE_QP:
{