mailinfo: move transfer_encoding to struct mailinfo
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
28c6bfe94c
commit
ab50e38b5d
@ -23,14 +23,14 @@ struct mailinfo {
|
|||||||
const char *metainfo_charset;
|
const char *metainfo_charset;
|
||||||
|
|
||||||
char *message_id;
|
char *message_id;
|
||||||
|
enum {
|
||||||
|
TE_DONTCARE, TE_QP, TE_BASE64
|
||||||
|
} transfer_encoding;
|
||||||
int patch_lines;
|
int patch_lines;
|
||||||
int filter_stage; /* still reading log or are we copying patch? */
|
int filter_stage; /* still reading log or are we copying patch? */
|
||||||
int header_stage; /* still checking in-body headers? */
|
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 charset = STRBUF_INIT;
|
||||||
static struct strbuf **p_hdr_data, **s_hdr_data;
|
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);
|
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"))
|
if (strcasestr(line->buf, "base64"))
|
||||||
transfer_encoding = TE_BASE64;
|
mi->transfer_encoding = TE_BASE64;
|
||||||
else if (strcasestr(line->buf, "quoted-printable"))
|
else if (strcasestr(line->buf, "quoted-printable"))
|
||||||
transfer_encoding = TE_QP;
|
mi->transfer_encoding = TE_QP;
|
||||||
else
|
else
|
||||||
transfer_encoding = TE_DONTCARE;
|
mi->transfer_encoding = TE_DONTCARE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_multipart_boundary(const struct strbuf *line)
|
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: ");
|
len = strlen("Content-Transfer-Encoding: ");
|
||||||
strbuf_add(&sb, line->buf + len, line->len - len);
|
strbuf_add(&sb, line->buf + len, line->len - len);
|
||||||
decode_header(mi, &sb);
|
decode_header(mi, &sb);
|
||||||
handle_content_transfer_encoding(&sb);
|
handle_content_transfer_encoding(mi, &sb);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
goto check_header_out;
|
goto check_header_out;
|
||||||
}
|
}
|
||||||
@ -544,11 +545,11 @@ check_header_out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void decode_transfer_encoding(struct strbuf *line)
|
static void decode_transfer_encoding(struct mailinfo *mi, struct strbuf *line)
|
||||||
{
|
{
|
||||||
struct strbuf *ret;
|
struct strbuf *ret;
|
||||||
|
|
||||||
switch (transfer_encoding) {
|
switch (mi->transfer_encoding) {
|
||||||
case TE_QP:
|
case TE_QP:
|
||||||
ret = decode_q_segment(line, 0);
|
ret = decode_q_segment(line, 0);
|
||||||
break;
|
break;
|
||||||
@ -835,7 +836,7 @@ again:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* set some defaults */
|
/* set some defaults */
|
||||||
transfer_encoding = TE_DONTCARE;
|
mi->transfer_encoding = TE_DONTCARE;
|
||||||
strbuf_reset(&charset);
|
strbuf_reset(&charset);
|
||||||
|
|
||||||
/* slurp in this section's info */
|
/* slurp in this section's info */
|
||||||
@ -873,9 +874,9 @@ static void handle_body(struct mailinfo *mi, struct strbuf *line)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Unwrap transfer encoding */
|
/* Unwrap transfer encoding */
|
||||||
decode_transfer_encoding(line);
|
decode_transfer_encoding(mi, line);
|
||||||
|
|
||||||
switch (transfer_encoding) {
|
switch (mi->transfer_encoding) {
|
||||||
case TE_BASE64:
|
case TE_BASE64:
|
||||||
case TE_QP:
|
case TE_QP:
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user