X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=muttlib.c;h=a9d58e9eacfddd0becdacc6c558b0a30346ba7c3;hp=7592681805f4038bd274dff16593dd0adaa25ce5;hb=13ce824381b10ea5a66d6ec6177863e4a5e73639;hpb=0ac011f8eb41bab7808881ebf9802b4eb252fe3b diff --git a/muttlib.c b/muttlib.c index 7592681..a9d58e9 100644 --- a/muttlib.c +++ b/muttlib.c @@ -30,12 +30,10 @@ #include "version.h" -#ifdef USE_IMAP -#include "imap.h" -#include "imap/mx_imap.h" -#endif +#include +#include -#include "mutt_crypt.h" +#include #include "lib/debug.h" @@ -157,7 +155,7 @@ int mutt_copy_body (FILE * fp, BODY ** tgt, BODY * src) /* copy parameters */ for (par = b->parameter, ppar = &b->parameter; par; ppar = &(*ppar)->next, par = par->next) { - *ppar = mutt_new_parameter (); + *ppar = parameter_new(); (*ppar)->attribute = m_strdup(par->attribute); (*ppar)->value = m_strdup(par->value); } @@ -178,7 +176,7 @@ void mutt_free_body (BODY ** p) a = a->next; if (b->parameter) - mutt_free_parameter (&b->parameter); + parameter_delete(&b->parameter); if (b->unlink && b->filename) { debug_print (1, ("unlinking %s.\n", b->filename)); unlink (b->filename); @@ -196,7 +194,7 @@ void mutt_free_body (BODY ** p) if (b->hdr) { /* Don't free twice (b->hdr->content = b->parts) */ b->hdr->content = NULL; - mutt_free_header (&b->hdr); + header_delete(&b->hdr); } if (b->parts) @@ -208,46 +206,15 @@ void mutt_free_body (BODY ** p) *p = 0; } -void mutt_free_parameter (PARAMETER ** p) -{ - PARAMETER *t = *p; - PARAMETER *o; - - while (t) { - p_delete(&t->attribute); - p_delete(&t->value); - o = t; - t = t->next; - p_delete(&o); - } - *p = 0; -} - HEADER *mutt_dup_header (HEADER * h) { HEADER *hnew; - hnew = mutt_new_header (); + hnew = header_new(); memcpy (hnew, h, sizeof (HEADER)); return hnew; } -void mutt_free_header (HEADER ** h) -{ - if (!h || !*h) - return; - mutt_free_envelope (&(*h)->env); - mutt_free_body (&(*h)->content); - p_delete(&(*h)->maildir_flags); - p_delete(&(*h)->tree); - p_delete(&(*h)->path); -#ifdef MIXMASTER - mutt_free_list (&(*h)->chain); -#endif - p_delete(&(*h)->data); - p_delete(h); -} - /* returns true if the header contained in "s" is in list "t" */ int mutt_matches_ignore (const char *s, LIST * t) { @@ -337,13 +304,11 @@ char *_mutt_expand_path (char *s, size_t slen, int rx) case '=': case '+': { -#ifdef USE_IMAP /* if folder = imap[s]://host/: don't append slash */ if (imap_is_magic (NONULL (Maildir), NULL) == M_IMAP && Maildir[m_strlen(Maildir) - 1] == '/') m_strcpy(p, sizeof(p), NONULL(Maildir)); else -#endif snprintf (p, sizeof (p), "%s/", NONULL (Maildir)); tail = s + 1; @@ -358,12 +323,12 @@ char *_mutt_expand_path (char *s, size_t slen, int rx) address_t *alias; if ((alias = mutt_lookup_alias (s + 1))) { - h = mutt_new_header (); - h->env = mutt_new_envelope (); + h = header_new(); + h->env = envelope_new(); h->env->from = h->env->to = alias; mutt_default_save (p, sizeof (p), h); h->env->from = h->env->to = NULL; - mutt_free_header (&h); + header_delete(&h); /* Avoid infinite recursion if the resulting folder starts with '@' */ if (*p != '@') recurse = 1; @@ -443,10 +408,10 @@ char *_mutt_expand_path (char *s, size_t slen, int rx) * name. */ -char *mutt_gecos_name (char *dest, size_t destlen, struct passwd *pw) +char *mutt_gecos_name (char *dest, ssize_t destlen, struct passwd *pw) { regmatch_t pat_match[1]; - size_t pwnl; + ssize_t pwnl; int idx; char *p; @@ -506,7 +471,7 @@ void mutt_set_parameter (const char *attribute, const char *value, } } - q = mutt_new_parameter (); + q = parameter_new(); q->attribute = m_strdup(attribute); q->value = m_strdup(value); q->next = *p; @@ -521,7 +486,7 @@ void mutt_delete_parameter (const char *attribute, PARAMETER ** p) if (ascii_strcasecmp (attribute, q->attribute) == 0) { *p = q->next; q->next = NULL; - mutt_free_parameter (&q); + parameter_delete(&q); return; } } @@ -578,46 +543,11 @@ int mutt_is_text_part (BODY * b) return 0; } -void mutt_free_envelope (ENVELOPE ** p) -{ - if (!*p) - return; - address_delete (&(*p)->return_path); - address_delete (&(*p)->from); - address_delete (&(*p)->to); - address_delete (&(*p)->cc); - address_delete (&(*p)->bcc); - address_delete (&(*p)->sender); - address_delete (&(*p)->reply_to); - address_delete (&(*p)->mail_followup_to); - - p_delete(&(*p)->list_post); - p_delete(&(*p)->subject); - /* real_subj is just an offset to subject and shouldn't be freed */ - p_delete(&(*p)->message_id); - p_delete(&(*p)->supersedes); - p_delete(&(*p)->date); - p_delete(&(*p)->x_label); - p_delete(&(*p)->organization); -#ifdef USE_NNTP - p_delete(&(*p)->newsgroups); - p_delete(&(*p)->xref); - p_delete(&(*p)->followup_to); - p_delete(&(*p)->x_comment_to); -#endif - - mutt_buffer_free (&(*p)->spam); - mutt_free_list (&(*p)->references); - mutt_free_list (&(*p)->in_reply_to); - mutt_free_list (&(*p)->userhdrs); - p_delete(p); -} - /* move all the headers from extra not present in base into base */ void mutt_merge_envelopes(ENVELOPE* base, ENVELOPE** extra) { /* copies each existing element if necessary, and sets the element - * to NULL in the source so that mutt_free_envelope doesn't leave us + * to NULL in the source so that envelope_delete doesn't leave us * with dangling pointers. */ #define MOVE_ELEM(h) if (!base->h) { base->h = (*extra)->h; (*extra)->h = NULL; } MOVE_ELEM(return_path); @@ -654,7 +584,7 @@ void mutt_merge_envelopes(ENVELOPE* base, ENVELOPE** extra) MOVE_ELEM(userhdrs); #undef MOVE_ELEM - mutt_free_envelope(extra); + envelope_delete(extra); } void _mutt_mktemp (char *s, const char *src, int line) @@ -689,12 +619,10 @@ void mutt_pretty_mailbox (char *s) scheme = url_check_scheme (s); -#ifdef USE_IMAP if (scheme == U_IMAP || scheme == U_IMAPS) { imap_pretty_mailbox (s); return; } -#endif /* if s is an url, only collapse path component */ if (scheme != U_UNKNOWN) { @@ -925,7 +853,7 @@ int mutt_skipchars (const char *s, const char *c) } void mutt_FormatString (char *dest, /* output buffer */ - size_t destlen, /* output buffer len */ + ssize_t destlen, /* output buffer len */ const char *src, /* template string */ format_t * callback, /* callback for processing */ unsigned long data, /* callback data */ @@ -933,7 +861,7 @@ void mutt_FormatString (char *dest, /* output buffer */ { /* callback flags */ char prefix[SHORT_STRING], buf[LONG_STRING], *cp, *wptr = dest, ch; char ifstring[SHORT_STRING], elsestring[SHORT_STRING]; - size_t wlen, count, len, col, wid; + ssize_t wlen, wid, count, col, len; prefix[0] = '\0'; destlen--; /* save room for the terminal \0 */ @@ -960,7 +888,7 @@ void mutt_FormatString (char *dest, /* output buffer */ /* eat the format string */ cp = prefix; count = 0; - while (count < sizeof (prefix) && + while (count < ssizeof (prefix) && (isdigit ((unsigned char) *src) || *src == '.' || *src == '-')) { *cp++ = *src++; @@ -982,7 +910,7 @@ void mutt_FormatString (char *dest, /* output buffer */ /* eat the `if' part of the string */ cp = ifstring; count = 0; - while (count < sizeof (ifstring) && *src && *src != '?' + while (count < ssizeof (ifstring) && *src && *src != '?' && *src != '&') { *cp++ = *src++; count++; @@ -994,7 +922,7 @@ void mutt_FormatString (char *dest, /* output buffer */ src++; /* skip the & */ cp = elsestring; count = 0; - while (count < sizeof (elsestring) && *src && *src != '?') { + while (count < ssizeof (elsestring) && *src && *src != '?') { *cp++ = *src++; count++; } @@ -1209,9 +1137,7 @@ int mutt_save_confirm (const char *s, struct stat *st) } } else { -#ifdef USE_IMAP if (magic != M_IMAP) -#endif /* execute the block unconditionally if we don't use imap */ { st->st_mtime = 0; st->st_atime = 0;