summaryrefslogtreecommitdiff
path: root/builtin/mailinfo.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-10-14 22:33:44 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-10-19 05:13:27 (GMT)
commit3a8fcdaf844910578d91ff225bcb1587ddb4d062 (patch)
treec55d5c82b2dc39e8f7733321bd84dd16e0f06c94 /builtin/mailinfo.c
parent2a5ce7cf0da8c4d97dd58f5cbc6092b394648356 (diff)
downloadgit-3a8fcdaf844910578d91ff225bcb1587ddb4d062.zip
git-3a8fcdaf844910578d91ff225bcb1587ddb4d062.tar.gz
git-3a8fcdaf844910578d91ff225bcb1587ddb4d062.tar.bz2
mailinfo: fold decode_header_bq() into decode_header()
In olden days we might have wanted to behave differently in decode_header() if the header line was encoded with RFC2047, but we apparently do not do so, hence this helper function can go, together with its return value. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/mailinfo.c')
-rw-r--r--builtin/mailinfo.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
index 5a4ed75..addc0e0 100644
--- a/builtin/mailinfo.c
+++ b/builtin/mailinfo.c
@@ -525,19 +525,17 @@ static void convert_to_utf8(struct strbuf *line, const char *charset)
strbuf_attach(line, out, strlen(out), strlen(out));
}
-static int decode_header_bq(struct strbuf *it)
+static void decode_header(struct strbuf *it)
{
char *in, *ep, *cp;
struct strbuf outbuf = STRBUF_INIT, *dec;
struct strbuf charset_q = STRBUF_INIT, piecebuf = STRBUF_INIT;
- int rfc2047 = 0;
in = it->buf;
while (in - it->buf <= it->len && (ep = strstr(in, "=?")) != NULL) {
int encoding;
strbuf_reset(&charset_q);
strbuf_reset(&piecebuf);
- rfc2047 = 1;
if (in != ep) {
/*
@@ -567,22 +565,22 @@ static int decode_header_bq(struct strbuf *it)
ep += 2;
if (ep - it->buf >= it->len || !(cp = strchr(ep, '?')))
- goto decode_header_bq_out;
+ goto release_return;
if (cp + 3 - it->buf > it->len)
- goto decode_header_bq_out;
+ goto release_return;
strbuf_add(&charset_q, ep, cp - ep);
encoding = cp[1];
if (!encoding || cp[2] != '?')
- goto decode_header_bq_out;
+ goto release_return;
ep = strstr(cp + 3, "?=");
if (!ep)
- goto decode_header_bq_out;
+ goto release_return;
strbuf_add(&piecebuf, cp + 3, ep - cp - 3);
switch (tolower(encoding)) {
default:
- goto decode_header_bq_out;
+ goto release_return;
case 'b':
dec = decode_b_segment(&piecebuf);
break;
@@ -601,17 +599,10 @@ static int decode_header_bq(struct strbuf *it)
strbuf_addstr(&outbuf, in);
strbuf_reset(it);
strbuf_addbuf(it, &outbuf);
-decode_header_bq_out:
+release_return:
strbuf_release(&outbuf);
strbuf_release(&charset_q);
strbuf_release(&piecebuf);
- return rfc2047;
-}
-
-static void decode_header(struct strbuf *it)
-{
- if (decode_header_bq(it))
- return;
}
static void decode_transfer_encoding(struct strbuf *line)