#include <lib-lib/macros.h>
#include <lib-lib/buffer.h>
+#include <lib-mime/mime.h>
+
#include "mutt.h"
#include "enter.h"
#include "recvattach.h"
#include "mx.h"
-#include "mime.h"
-#include "rfc2047.h"
-#include "rfc2231.h"
#include "mutt_crypt.h"
#include "url.h"
return (ENCQUOTEDPRINTABLE);
else if (ascii_strncasecmp ("base64", c, sizeof ("base64") - 1) == 0)
return (ENCBASE64);
- else if (ascii_strncasecmp ("x-uuencode", c, sizeof ("x-uuencode") - 1) ==
- 0)
- return (ENCUUENCODED);
-#ifdef SUN_ATTACHMENT
- else if (ascii_strncasecmp ("uuencode", c, sizeof ("uuencode") - 1) == 0)
+ else if (ascii_strncasecmp ("x-uuencode", c, sizeof ("x-uuencode") - 1) == 0)
return (ENCUUENCODED);
-#endif
else
return (ENCOTHER);
}
return TYPETEXT;
else if (ascii_strcasecmp ("multipart", s) == 0)
return TYPEMULTIPART;
-#ifdef SUN_ATTACHMENT
- else if (ascii_strcasecmp ("x-sun-attachment", s) == 0)
- return TYPEMULTIPART;
-#endif
else if (ascii_strcasecmp ("application", s) == 0)
return TYPEAPPLICATION;
else if (ascii_strcasecmp ("message", s) == 0)
if ((pc = mutt_get_parameter ("name", ct->parameter)) != 0
&& !ct->filename)
ct->filename = m_strdup(pc);
-
-#ifdef SUN_ATTACHMENT
- /* this is deep and utter perversion */
- if ((pc = mutt_get_parameter ("conversions", ct->parameter)) != 0)
- ct->encoding = mutt_check_encoding (pc);
-#endif
-
}
/* Now get the subtype */
/* Finally, get the major type */
ct->type = mutt_check_mime_type (s);
-#ifdef SUN_ATTACHMENT
- if (ascii_strcasecmp ("x-sun-attachment", s) == 0)
- ct->subtype = m_strdup("x-sun-attachment");
-#endif
-
if (ct->type == TYPEOTHER) {
ct->xtype = m_strdup(s);
}
s = vskipspaces(s + 1);
if ((s = mutt_get_parameter("filename",
(parms = parse_parameters (s)))) != 0)
- str_replace (&ct->filename, s);
+ m_strreplace(&ct->filename, s);
if ((s = mutt_get_parameter ("name", parms)) != 0)
ct->form_name = m_strdup(s);
mutt_free_parameter (&parms);
else if (!ascii_strcasecmp ("disposition", line + 8))
parse_content_disposition (c, p);
else if (!ascii_strcasecmp ("description", line + 8)) {
- str_replace (&p->description, c);
- rfc2047_decode (&p->description);
- }
- }
-#ifdef SUN_ATTACHMENT
- else if (!ascii_strncasecmp ("x-sun-", line, 6)) {
- if (!ascii_strcasecmp ("data-type", line + 6))
- mutt_parse_content_type (c, p);
- else if (!ascii_strcasecmp ("encoding-info", line + 6))
- p->encoding = mutt_check_encoding (c);
- else if (!ascii_strcasecmp ("content-lines", line + 6))
- mutt_set_parameter ("content-lines", c, &(p->parameter));
- else if (!ascii_strcasecmp ("data-description", line + 6)) {
- str_replace (&p->description, c);
+ m_strreplace(&p->description, c);
rfc2047_decode (&p->description);
}
}
-#endif
}
p->offset = ftello (fp); /* Mark the start of the real data */
if (p->type == TYPETEXT && !p->subtype)
switch (b->type) {
case TYPEMULTIPART:
-#ifdef SUN_ATTACHMENT
- if (!ascii_strcasecmp (b->subtype, "x-sun-attachment"))
- bound = "--------";
- else
-#endif
- bound = mutt_get_parameter ("boundary", b->parameter);
-
+ bound = mutt_get_parameter ("boundary", b->parameter);
fseeko (fp, b->offset, SEEK_SET);
b->parts = mutt_parse_multipart (fp, bound,
b->offset + b->length,
/* try to recover from parsing error */
if (!b->parts) {
b->type = TYPETEXT;
- str_replace (&b->subtype, "plain");
+ m_strreplace(&b->subtype, "plain");
}
}
BODY *mutt_parse_multipart (FILE * fp, const char *boundary, off_t end_off,
int digest)
{
-#ifdef SUN_ATTACHMENT
- int lines;
-#endif
int blen, len, crlf = 0;
char buffer[LONG_STRING];
BODY *head = 0, *last = 0, *new = 0;
else if (buffer[2 + blen] == 0) {
new = mutt_read_mime_header (fp, digest);
-#ifdef SUN_ATTACHMENT
- if (mutt_get_parameter ("content-lines", new->parameter)) {
- for (lines =
- atoi (mutt_get_parameter ("content-lines", new->parameter));
- lines; lines--)
- if (ftello (fp) >= end_off
- || fgets (buffer, LONG_STRING, fp) == NULL)
- break;
- }
-#endif
-
/*
* Consistency checking - catch
* bad attachment end boundaries
if ((msg = mx_open_message (ctx, cur->msgno))) {
mutt_parse_part (msg->fp, cur->content);
- if (WithCrypto)
- cur->security = crypt_query (cur->content);
+ cur->security = crypt_query (cur->content);
mx_close_message (&msg);
}
}
else if (ascii_strcasecmp (line + 8, "description") == 0) {
if (hdr) {
- str_replace (&hdr->content->description, p);
+ m_strreplace(&hdr->content->description, p);
rfc2047_decode (&hdr->content->description);
}
matched = 1;
case 'd':
if (!ascii_strcasecmp ("ate", line + 1)) {
- str_replace (&e->date, p);
+ m_strreplace(&e->date, p);
if (hdr)
hdr->date_sent = mutt_parse_date (p, hdr);
matched = 1;
* and mark mail/(esp.) news article as your own. aaargh! this
* bothered me for _years_ */
if (!e->from) {
- e->from = rfc822_new_address ();
+ e->from = address_new ();
e->from->personal = m_strdup(p);
}
matched = 1;
#ifdef USE_NNTP
else if (!m_strcasecmp(line + 1, "ollowup-to")) {
if (!e->followup_to) {
- str_skip_trailws (p);
- e->followup_to = m_strdup(vskipspaces(p));
+ m_strrtrim(p);
+ e->followup_to = m_strdup(skipspaces(p));
}
matched = 1;
}
/* Take the first mailto URL */
if (url_check_scheme (beg) == U_MAILTO) {
p_delete(&e->list_post);
- e->list_post = str_substrdup (beg, end);
+ e->list_post = p_dupstr(beg, end - beg);
break;
}
}
else if (!ascii_strncasecmp (line + 1, "ail-", 4)) {
if (!ascii_strcasecmp (line + 5, "reply-to")) {
/* override the Reply-To: field */
- rfc822_free_address (&e->reply_to);
+ address_delete (&e->reply_to);
e->reply_to = rfc822_parse_adrlist (e->reply_to, p);
matched = 1;
}
case 'n':
if (!m_strcasecmp(line + 1, "ewsgroups")) {
p_delete(&e->newsgroups);
- str_skip_trailws (p);
- e->newsgroups = m_strdup(vskipspaces(p));
+ m_strrtrim(p);
+ e->newsgroups = m_strdup(skipspaces(p));
matched = 1;
}
break;
if (hdr) {
hdr->content->hdr_offset = hdr->offset;
hdr->content->offset = ftello (f);
- rfc2047_decode_envelope (e);
+ rfc2047_decode_envelope(e);
/* check for missing or invalid date */
if (hdr->date_sent <= 0) {
debug_print (1, ("no date found, using received "
return (e);
}
-ADDRESS *mutt_parse_adrlist (ADDRESS * p, const char *s)
+address_t *mutt_parse_adrlist (address_t * p, const char *s)
{
const char *q;