X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=muttlib.c;h=5ad138c795ff5a10b6ef445d78f4b783fb4d0bfe;hp=29380660ae430d266b31aa76d1418194326bec45;hb=2a2f2f9a5bad73c883b7f9c9b4166d932b6aaf37;hpb=ac813896ca32d850febc2d95065ac4fa040f11f9 diff --git a/muttlib.c b/muttlib.c index 2938066..5ad138c 100644 --- a/muttlib.c +++ b/muttlib.c @@ -12,16 +12,18 @@ # include "config.h" #endif -#include #include -#include -#include -#include #include -#include #include -#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include @@ -30,7 +32,6 @@ #include #include #include -#include #include #include @@ -38,6 +39,7 @@ #include #include +#include "alias.h" #include "mutt.h" #include "mx.h" #include "attach.h" @@ -166,23 +168,14 @@ int mutt_copy_body (FILE * fp, BODY ** tgt, BODY * src) } - -void mutt_free_body (BODY ** p) +static void body_wipe(BODY *b) { - BODY *a = *p, *b; - - while (a) { - b = a; - a = a->next; - if (b->parameter) - parameter_list_wipe(&b->parameter); + parameter_list_wipe(&b->parameter); + if (b->unlink && b->filename) { - debug_print (1, ("unlinking %s.\n", b->filename)); - unlink (b->filename); + unlink (b->filename); } - else if (b->filename) - debug_print (1, ("not unlinking %s.\n", b->filename)); p_delete(&b->filename); p_delete(&b->content); @@ -192,18 +185,25 @@ void mutt_free_body (BODY ** p) p_delete(&b->form_name); if (b->hdr) { - /* Don't free twice (b->hdr->content = b->parts) */ - b->hdr->content = NULL; - header_delete(&b->hdr); + /* Don't free twice (b->hdr->content = b->parts) */ + b->hdr->content = NULL; + header_delete(&b->hdr); } if (b->parts) - mutt_free_body (&b->parts); + mutt_free_body(&b->parts); +} - p_delete(&b); - } +DO_DELETE(BODY, body); + +void mutt_free_body(BODY **p) +{ + while (*p) { + BODY *b = *p; + *p = b->next; - *p = 0; + body_delete(&b); + } } HEADER *mutt_dup_header (HEADER * h) @@ -401,51 +401,40 @@ char *_mutt_expand_path (char *s, ssize_t slen, int rx) return (s); } -char *mutt_get_parameter (const char *s, PARAMETER * p) -{ - for (; p; p = p->next) - if (ascii_strcasecmp (s, p->attribute) == 0) - return (p->value); - - return NULL; -} - void mutt_set_parameter (const char *attribute, const char *value, PARAMETER ** p) { - PARAMETER *q; + PARAMETER *q; - if (!value) { - mutt_delete_parameter (attribute, p); - return; - } + if (!value) { + mutt_delete_parameter (attribute, p); + return; + } - for (q = *p; q; q = q->next) { - if (ascii_strcasecmp (attribute, q->attribute) == 0) { - m_strreplace(&q->value, value); - return; + for (q = *p; q; q = q->next) { + if (ascii_strcasecmp (attribute, q->attribute) == 0) { + m_strreplace(&q->value, value); + return; + } } - } - q = parameter_new(); - q->attribute = m_strdup(attribute); - q->value = m_strdup(value); - q->next = *p; - *p = q; + q = parameter_new(); + q->attribute = m_strdup(attribute); + q->value = m_strdup(value); + parameter_list_push(p, q); } void mutt_delete_parameter (const char *attribute, PARAMETER ** p) { - PARAMETER *q; + while (*p) { + if (!ascii_strcasecmp(attribute, (*p)->attribute)) { + PARAMETER *q = parameter_list_pop(p); + parameter_delete(&q); + return; + } - for (q = *p; q; p = &q->next, q = q->next) { - if (ascii_strcasecmp (attribute, q->attribute) == 0) { - *p = q->next; - q->next = NULL; - parameter_list_wipe(&q); - return; + p = &(*p)->next; } - } } /* returns 1 if Mutt can't display this type of data, 0 otherwise */ @@ -549,7 +538,6 @@ void _mutt_mktemp (char *s, const char *src, int line) snprintf (s, _POSIX_PATH_MAX, "%s/madmutt-%s-%d-%d-%d-%x%x", NONULL (Tempdir), NONULL (Hostname), (int) getuid (), (int) getpid (), Counter++, (unsigned int) rand(), (unsigned int) rand()); - debug_print (1, ("%s:%d: mutt_mktemp returns \"%s\".\n", src, line, s)); unlink (s); } @@ -1207,8 +1195,6 @@ int mutt_match_spam_list (const char *s, SPAM_LIST * l, char *text, int x) /* Does this pattern match? */ if (regexec(l->rx->rx, s, l->nmatch, (regmatch_t *)pmatch, (int) 0) == 0) { - debug_print (5, ("%s matches %s\n%d subst", s, l->rx->pattern, l->rx->rx->re_nsub)); - /* Copy template into text, with substitutions. */ for (p = l->template; *p;) { if (*p == '%') { @@ -1223,7 +1209,6 @@ int mutt_match_spam_list (const char *s, SPAM_LIST * l, char *text, int x) } } text[tlen] = '\0'; - debug_print (5, ("\"%s\"\n", text)); return 1; } }