X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=muttlib.c;h=729c0503757424e35634d437fc6531c6e4992f01;hp=0bf733c30c16f0fb2efbb66f576398f027be8a07;hb=7b8296cfa5c33fbc73c34c4fe1ff6d7bfbaaba01;hpb=10b7d54ecaa5c54622bf1239b57fa2e3359db0e1 diff --git a/muttlib.c b/muttlib.c index 0bf733c..729c050 100644 --- a/muttlib.c +++ b/muttlib.c @@ -12,44 +12,42 @@ # include "config.h" #endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include #include #include #include #include #include +#include #include +#include +#include + #include "mutt.h" -#include "enter.h" -#include "mutt_curses.h" #include "mx.h" #include "url.h" #include "attach.h" #include "version.h" -#ifdef USE_IMAP -#include "imap.h" -#include "imap/mx_imap.h" -#endif - -#include "mutt_crypt.h" +#include +#include -#include "lib/debug.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #define SW (option(OPTMBOXPANE)?SidebarWidth:0) @@ -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,48 +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 -#if defined USE_POP || defined USE_IMAP || defined USE_NNTP - p_delete(&(*h)->data); -#endif - p_delete(h); -} - /* returns true if the header contained in "s" is in list "t" */ int mutt_matches_ignore (const char *s, LIST * t) { @@ -339,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; @@ -360,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; @@ -424,7 +387,7 @@ char *_mutt_expand_path (char *s, size_t slen, int rx) } if (rx && *p && !recurse) { - mutt_rx_sanitize_string (q, sizeof (q), p); + rx_sanitize_string (q, sizeof (q), p); snprintf (tmp, sizeof (tmp), "%s%s", q, tail); } else @@ -445,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; @@ -508,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; @@ -523,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; } } @@ -580,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); @@ -656,13 +584,13 @@ 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) { - snprintf (s, _POSIX_PATH_MAX, "%s/muttng-%s-%d-%d-%d-%x%x", NONULL (Tempdir), + 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)); @@ -691,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) { @@ -927,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 */ @@ -935,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 */ @@ -962,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++; @@ -984,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++; @@ -996,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++; } @@ -1178,13 +1104,11 @@ int mutt_save_confirm (const char *s, struct stat *st) magic = mx_get_magic (s); -#ifdef USE_POP if (magic == M_POP) { mutt_error _("Can't save message to POP mailbox."); return 1; } -#endif #ifdef USE_NNTP if (magic == M_NNTP) { @@ -1213,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; @@ -1297,10 +1219,10 @@ const char *mutt_make_version (int full) if (full) snprintf (vstring, sizeof (vstring), - "Mutt-ng %s-r%s (based on Mutt 1.5.11)", + "Madmutt/%s-r%s (based on Mutt 1.5.11)", MUTT_VERSION, MUTT_REVISION); else - snprintf (vstring, sizeof (vstring), "mutt-ng/%s-r%s", + snprintf (vstring, sizeof (vstring), "Madmutt/%s-%s", MUTT_VERSION, MUTT_REVISION); return vstring; } @@ -1314,7 +1236,7 @@ void mutt_free_spam_list (SPAM_LIST ** list) while (*list) { p = *list; *list = (*list)->next; - rx_free (&p->rx); + rx_delete(&p->rx); p_delete(&p->template); p_delete(&p); }