* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/buffer.h>
-#include <lib-lib/date.h>
-#include <lib-lib/url.h>
+#include <lib-lib/lib-lib.h>
#include "recvattach.h"
-
#include "charset.h"
#include "mime.h"
o = NULL;
} else {
new = p_new(char, n + m + 1);
- strcpy(new, o);
- strcpy(new + n, s);
+ m_strcpy(new, n + m + 1, o);
+ m_strcpy(new + n, m + 1, s);
}
}
s++;
for (i = 0; *s && i < ssizeof(buffer) - 1; i++, s++) {
- if (!option(OPTSTRICTMIME)) {
- /* As iso-2022-* has a characer of '"' with non-ascii state,
- * ignore it. */
- if (*s == 0x1b && i < ssizeof(buffer) - 2) {
- state_ascii = s[1] == '(' && (s[2] == 'B' || s[2] == 'J');
- }
+ /* As iso-2022-* has a characer of '"' with non-ascii state,
+ * ignore it. */
+ if (*s == 0x1b && i < ssizeof(buffer) - 2) {
+ state_ascii = s[1] == '(' && (s[2] == 'B' || s[2] == 'J');
}
if (state_ascii && *s == '"')
break;
* field, so we can attempt to convert the type to BODY here.
*/
switch (ct->type) {
- char buffer[SHORT_STRING];
+ char buffer[STRING];
case TYPETEXT:
ct->subtype = m_strdup("plain");
pc = parameter_getval(ct->parameter, "charset");
if (!pc) {
parameter_setval(&ct->parameter, "charset",
- option(OPTSTRICTMIME)
- ? "us-ascii"
- : charset_getfirst(AssumedCharset));
+ charset_getfirst(mod_cset.assumed_charset));
}
}
}
if (b->subtype) {
fseeko(fp, b->offset, SEEK_SET);
- if (mutt_is_message_type(b->type, b->subtype)) {
+ if (mutt_is_message_type(b)) {
b->parts = mutt_parse_messageRFC822(fp, b);
} else
if (mime_which_token(b->subtype, -1) == MIME_EXTERNAL_BODY) {
time_t mutt_parse_date(const char *s, HEADER *h)
{
int zhours = 0, zminutes = 0, zoccident = 0;
- char scratch[SHORT_STRING];
+ char scratch[STRING];
struct tm tm;
int count = 0;
char *p;
p_clear(&tm, 1);
while ((p = strtok (p, " \t")) != NULL) {
- char tzstr[SHORT_STRING];
+ char tzstr[STRING];
const char *ptz;
switch (count) {
case MIME_LIST_POST:
/* RFC 2369. FIXME: We should ignore whitespace, but don't. */
- if (strncmp(p, "NO", 2)) {
+ if (m_strncmp(p, "NO", 2)) {
char *beg, *end;
for (beg = strchr (p, '<'); beg; beg = strchr (end, ',')) {
e->to = rfc822_parse_adrlist(e->to, p);
break;
-#ifdef USE_NNTP
- case MIME_X_COMMENT_TO:
- if (!e->x_comment_to)
- e->x_comment_to = m_strdup(p);
- break;
-#endif
-
case MIME_X_LABEL:
e->x_label = m_strdup(p);
break;
/* restore the original line */
line[m_strlen(line)] = ':';
- if (weed && option(OPTWEED) && mutt_matches_ignore(line, Ignore)
- && !mutt_matches_ignore(line, UnIgnore)) {
+ if (weed && string_list_contains(Ignore, line, "*")
+ && !string_list_contains(UnIgnore, line, "*")) {
break;
}
p = strpbrk(line, ": \t");
if (!p || *p != ':') {
- char return_path[LONG_STRING];
- time_t t;
-
/* some bogus MTAs will quote the original "From " line */
- if (!m_strncmp(">From ", line, 6))
+ if (!m_strncmp(">From ", line, 6) || !m_strncmp("From ", line, 5))
continue; /* just ignore */
- if (is_from(line, return_path, sizeof(return_path), &t)) {
- /* MH somtimes has the From_ line in the middle of the header! */
- if (hdr && !hdr->received)
- hdr->received = t - mutt_local_tz(t);
- continue;
- }
-
fseeko(f, loc, 0);
break; /* end of header */
}
- if (mutt_match_spam_list(line, SpamList, buf, sizeof(buf))) {
- if (!rx_list_match(NoSpamList, line)) {
- /* if spam tag already exists, figure out how to amend it */
- if (e->spam && *buf) {
- if (SpamSep) {
- /* If SpamSep defined, append with separator */
- mutt_buffer_addstr(e->spam, SpamSep);
- mutt_buffer_addstr(e->spam, buf);
- } else {
- /* else overwrite */
- mutt_buffer_reset(e->spam);
- mutt_buffer_addstr(e->spam, buf);
- }
- }
- else if (!e->spam && *buf) {
- /* spam tag is new, and match expr is non-empty; copy */
- e->spam = mutt_buffer_from(NULL, buf);
- }
- else if (!e->spam) {
- /* match expr is empty; plug in null string if no existing tag */
- e->spam = mutt_buffer_from(NULL, "");
+ if (rx_list_match2(SpamList, line, buf, sizeof(buf))
+ && !rx_list_match(NoSpamList, line))
+ {
+ /* if spam tag already exists, figure out how to amend it */
+ if (e->spam && *buf) {
+ if (mod_mime.spam_separator) {
+ mutt_buffer_addstr(e->spam, mod_mime.spam_separator);
+ } else {
+ mutt_buffer_reset(e->spam);
}
+ mutt_buffer_addstr(e->spam, buf);
+ }
+
+ if (!e->spam) {
+ e->spam = mutt_buffer_from(NULL, buf);
}
}
int mutt_count_body_parts(HEADER *hdr, int flags)
{
- if (!option(OPTCOUNTATTACH))
- return 0;
-
if (hdr->attach_valid && !(flags & M_PARTS_RECOUNT))
return hdr->attach_total;