*
*/
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
+#include <lib-lib/lib-lib.h>
#include <lib-mime/mime.h>
#include "charset.h"
+#include "mutt.h"
typedef struct rfc2231_param {
struct rfc2231_param *next;
*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;
}
/* 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;
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;
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;
/****************************************************************************/
/* 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;
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;
* 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;
char *charset = NULL;
char *e, *p, *t, *d = NULL;
int escapes = 0;
- size_t dlen = 0;
+ ssize_t dlen = 0;
/*
* A shortcut to detect pure 7bit data.