int mutt_write_mime_header (BODY * a, FILE * f)
{
- PARAMETER *p;
char buffer[STRING];
char *t;
char *fn;
fprintf (f, "Content-Type: %s/%s", TYPE (a), a->subtype);
if (a->parameter) {
+ parameter_t *p;
+
len = 25 + m_strlen(a->subtype); /* approximate len. of content-type */
for (p = a->parameter; p; p = p->next) {
int mutt_write_mime_body (BODY * a, FILE * f)
{
- char *p, boundary[SHORT_STRING];
+ const char *p;
+ char boundary[SHORT_STRING];
char send_charset[SHORT_STRING];
FILE *fpin;
BODY *t;
if (a->type == TYPEMULTIPART) {
/* First, find the boundary to use */
- if (!(p = mutt_get_parameter ("boundary", a->parameter))) {
+ if (!(p = parameter_getval(a->parameter, "boundary"))) {
mutt_error _("No boundary parameter found! [report this error]");
return (-1);
#undef write_as_text_part
-#define BOUNDARYLEN 16
-void mutt_generate_boundary (PARAMETER ** parm)
-{
- char rs[BOUNDARYLEN + 1];
- char *p = rs;
- int i;
-
- rs[BOUNDARYLEN] = 0;
- for (i = 0; i < BOUNDARYLEN; i++)
- *p++ = __m_b64chars[lrand48() % sizeof(__m_b64chars)];
- *p = 0;
-
- mutt_set_parameter ("boundary", rs, parm);
-}
-
typedef struct {
int from;
int whitespace;
p_clear(&state, 1);
if (b != NULL && b->type == TYPETEXT && (!b->noconv && !b->force_charset)) {
- char *chs = mutt_get_parameter ("charset", b->parameter);
+ const char *chs = parameter_getval(b->parameter, "charset");
char *fchs = b->use_disp ? ((FileCharset && *FileCharset) ?
FileCharset : Charset) : Charset;
if (Charset && (chs || SendCharset) &&
&fromcode, &tocode, info) != -1) {
if (!chs) {
charset_canonicalize (chsbuf, sizeof (chsbuf), tocode);
- mutt_set_parameter ("charset", chsbuf, &b->parameter);
+ parameter_setval(&b->parameter, "charset", chsbuf);
}
b->file_charset = fromcode;
p_delete(&tocode);
safe_fclose (&fp);
if (b != NULL && b->type == TYPETEXT && (!b->noconv && !b->force_charset))
- mutt_set_parameter ("charset", (!info->hibin ? "us-ascii" :
- Charset
- && !charset_is_us_ascii (Charset) ? Charset :
- "unknown-8bit"), &b->parameter);
+ parameter_setval(&b->parameter, "charset",
+ (!info->hibin ? "us-ascii"
+ : Charset && !charset_is_us_ascii(Charset) ? Charset : "unknown-8bit"));
return info;
}
return;
}
a->length = sb.st_size;
- mutt_free_body (&a->parts);
+ body_list_wipe(&a->parts);
a->hdr->content = NULL;
}
char *mutt_get_body_charset (char *d, ssize_t dlen, BODY * b)
{
- char *p = NULL;
+ const char *p = NULL;
if (b && b->type != TYPETEXT)
return NULL;
if (b)
- p = mutt_get_parameter ("charset", b->parameter);
+ p = parameter_getval(b->parameter, "charset");
if (p)
- charset_canonicalize (d, dlen, NONULL (p));
+ charset_canonicalize (d, dlen, p);
else
m_strcpy(d, dlen, "us-ascii");
a->noconv = 0;
if (!a->force_charset && !a->noconv)
- mutt_delete_parameter ("charset", &a->parameter);
+ parameter_delval(&a->parameter, "charset");
if ((info = mutt_get_content_info (a->filename, a)) == NULL)
return;
if ((fp = safe_fopen (buffer, "w+")) == NULL)
return NULL;
- body = mutt_new_body ();
+ body = body_new();
body->type = TYPEMESSAGE;
body->subtype = m_strdup("rfc822");
body->filename = m_strdup(buffer);
BODY *att;
CONTENT *info;
- att = mutt_new_body ();
+ att = body_new();
att->filename = m_strdup(path);
/* Attempt to determine the appropriate content-type based on the filename
#endif
if ((info = mutt_get_content_info (path, att)) == NULL) {
- mutt_free_body (&att);
+ body_list_wipe(&att);
return NULL;
}
{
BODY *new;
- new = mutt_new_body ();
+ new = body_new();
new->type = TYPEMULTIPART;
new->subtype = m_strdup("mixed");
new->encoding = get_toplevel_encoding (b);
- mutt_generate_boundary (&new->parameter);
+ parameter_set_boundary(&new->parameter);
new->use_disp = 0;
new->disposition = DISPINLINE;
new->parts = b;
t = b;
b = b->parts;
t->parts = NULL;
- mutt_free_body (&t);
+ body_list_wipe(&t);
}
return b;
}
if (b->type == TYPEMESSAGE || b->type == TYPEMULTIPART)
set_noconv_flags (b->parts, flag);
else if (b->type == TYPETEXT && b->noconv) {
- if (flag)
- mutt_set_parameter ("x-mutt-noconv", "yes", &b->parameter);
- else
- mutt_delete_parameter ("x-mutt-noconv", &b->parameter);
+ parameter_setval(&b->parameter, "x-mutt-noconv", flag ? "yes" : NULL);
}
}
}