X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc2231.c;h=760bf11ce1ccedc5ce8f90543a212d4325546030;hp=206f50540650cc6a923ce3e1b7b9664998e94408;hb=refs%2Fheads%2Ftry-some-d;hpb=69f4685e616347559d4ec714fd826d7f97a472ef diff --git a/lib-mime/rfc2231.c b/lib-mime/rfc2231.c index 206f505..760bf11 100644 --- a/lib-mime/rfc2231.c +++ b/lib-mime/rfc2231.c @@ -36,13 +36,7 @@ * */ -#include -#include -#include - -#include -#include -#include +#include #include @@ -134,24 +128,10 @@ rfc2231_list_insert(rfc2231_param **list, rfc2231_param *par) *list = par; } -static void purge_empty_parameters(parameter_t **headp) -{ - while (*headp) { - parameter_t *p = *headp; - - if (!p->attribute || !p->value) { - p = parameter_list_pop(headp); - parameter_delete(&p); - } else { - headp = &(*headp)->next; - } - } -} - /* process continuation parameters */ /* XXX: MC: not read */ static void -rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) +rfc2231_join_continuations(parameters_t *head, rfc2231_param *par) { rfc2231_param *q; @@ -164,7 +144,6 @@ rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) size_t l, vl; while (par) { - value = NULL; l = 0; m_strcpy(attribute, sizeof(attribute), par->attribute); @@ -181,7 +160,7 @@ rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) vl = m_strlen(par->value); p_realloc(&value, l + vl + 1); - strcpy (value + l, par->value); /* __STRCPY_CHECKED__ */ + m_strcpy(value + l, vl + 1, par->value); l += vl; q = par->next; @@ -190,15 +169,13 @@ rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) valp = par->value; } while (par && !m_strcmp(par->attribute, attribute)); - if (value) { - if (encoded) - mutt_convert_string (&value, charset, Charset, M_ICONV_HOOK_FROM); - *head = parameter_new(); - (*head)->attribute = m_strdup(attribute); - (*head)->value = value; - head = &(*head)->next; - } + if (!value) + continue; + if (encoded) + mutt_convert_string (&value, charset, mod_cset.charset, M_ICONV_HOOK_FROM); + parameter_setval(head, attribute, value); } + p_delete(&value); } /****************************************************************************/ @@ -206,8 +183,9 @@ rfc2231_join_continuations(parameter_t **head, rfc2231_param *par) /****************************************************************************/ /* XXX: MC: not read */ -void rfc2231_decode_parameters (parameter_t ** headp) +void rfc2231_decode_parameters(parameters_t *headp) { +#if 0 parameter_t *head = NULL; parameter_t **last; parameter_t *p, *q; @@ -225,7 +203,7 @@ void rfc2231_decode_parameters (parameter_t ** headp) if (!headp) return; - purge_empty_parameters (headp); + parameter_purge_empty(headp); for (last = &head, p = *headp; p; p = q) { q = p->next; @@ -239,10 +217,10 @@ void rfc2231_decode_parameters (parameter_t ** 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 (mime_which_token(AssumedCharset, -1) == MIME_US_ASCII) + if (p->value && strstr(p->value, "=?")) { + rfc2047_decode(&p->value); + } else { + if (mime_which_token(mod_cset.assumed_charset, -1) == MIME_US_ASCII) mutt_convert_nonmime_string(&p->value); } @@ -255,7 +233,7 @@ void rfc2231_decode_parameters (parameter_t ** headp) s = rfc2231_get_charset (p->value, charset, sizeof (charset)); rfc2231_decode_one (p->value, s); - mutt_convert_string (&p->value, charset, Charset, M_ICONV_HOOK_FROM); + mutt_convert_string (&p->value, charset, mod_cset.charset, M_ICONV_HOOK_FROM); *last = p; last = &p->next; @@ -294,7 +272,8 @@ void rfc2231_decode_parameters (parameter_t ** headp) *headp = head; if (dirty) - purge_empty_parameters (headp); + parameter_purge_empty(headp); +#endif } #define RFC2231_SPECIALS "@.,;:<>[]\\\"()?/= \t*'%" @@ -319,13 +298,13 @@ int rfc2231_encode_string(char **s) return 0; } - if (Charset && SendCharset) { - charset = mutt_choose_charset(Charset, SendCharset, + if (mod_cset.charset && mod_cset.send_charset) { + charset = mutt_choose_charset(mod_cset.charset, mod_cset.send_charset, *s, m_strlen(*s), &d, &dlen); } if (!charset) { - charset = m_strdup(Charset ? Charset : "unknown-8bit"); + charset = m_strdup(mod_cset.charset ?: "unknown-8bit"); d = *s; dlen = m_strlen(d); }