X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc2231.c;h=7cd45d286b272877f1584ee20816b2333403a369;hp=1d53c8e38e86bec8530b90fbb32f04ffe57ba0aa;hb=c621d41d614275fb6265ab8184a825a72b5a52b4;hpb=a743b55a20cbf3a33699fdb24dcb8638e878cc46 diff --git a/lib-mime/rfc2231.c b/lib-mime/rfc2231.c index 1d53c8e..7cd45d2 100644 --- a/lib-mime/rfc2231.c +++ b/lib-mime/rfc2231.c @@ -36,17 +36,12 @@ * */ -#include -#include -#include - -#include -#include -#include +#include #include #include "charset.h" +#include "mutt.h" typedef struct rfc2231_param { struct rfc2231_param *next; @@ -133,15 +128,14 @@ rfc2231_list_insert(rfc2231_param **list, rfc2231_param *par) *list = par; } -static void purge_empty_parameters(PARAMETER **headp) +static void purge_empty_parameters(parameter_t **headp) { while (*headp) { - PARAMETER *p = *headp; + parameter_t *p = *headp; if (!p->attribute || !p->value) { - *headp = p->next; - p->next = NULL; - mutt_free_parameter(&p); + p = parameter_list_pop(headp); + parameter_delete(&p); } else { headp = &(*headp)->next; } @@ -151,7 +145,7 @@ static void purge_empty_parameters(PARAMETER **headp) /* process continuation parameters */ /* XXX: MC: not read */ static void -rfc2231_join_continuations(PARAMETER **head, rfc2231_param *par) +rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) { rfc2231_param *q; @@ -193,7 +187,7 @@ rfc2231_join_continuations(PARAMETER **head, rfc2231_param *par) if (value) { if (encoded) mutt_convert_string (&value, charset, Charset, M_ICONV_HOOK_FROM); - *head = mutt_new_parameter (); + *head = parameter_new(); (*head)->attribute = m_strdup(attribute); (*head)->value = value; head = &(*head)->next; @@ -206,11 +200,11 @@ rfc2231_join_continuations(PARAMETER **head, rfc2231_param *par) /****************************************************************************/ /* XXX: MC: not read */ -void rfc2231_decode_parameters (PARAMETER ** headp) +void rfc2231_decode_parameters (parameter_t ** headp) { - PARAMETER *head = NULL; - PARAMETER **last; - PARAMETER *p, *q; + parameter_t *head = NULL; + parameter_t **last; + parameter_t *p, *q; rfc2231_param *conthead = NULL; rfc2231_param *conttmp; @@ -220,9 +214,7 @@ void rfc2231_decode_parameters (PARAMETER ** headp) int encoded; int idx; - short dirty = 0; /* set to 1 when we may have created - * empty parameters. - */ + short dirty = 0; /* 1 when we may have created empty parameters. */ if (!headp) return; @@ -241,11 +233,11 @@ void rfc2231_decode_parameters (PARAMETER ** headp) * Internet Gateways. So we actually decode it. */ - if (option (OPTRFC2047PARAMS) && p->value && strstr (p->value, "=?")) - rfc2047_decode (&p->value); - else if (!option (OPTSTRICTMIME)) { - if (ascii_strcasecmp (AssumedCharset, "us-ascii")) - mutt_convert_nonmime_string (&p->value); + if (p->value && strstr(p->value, "=?")) { + rfc2047_decode(&p->value); + } else { + if (mime_which_token(AssumedCharset, -1) == MIME_US_ASCII) + mutt_convert_nonmime_string(&p->value); } *last = p;