X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=muttlib.c;h=c5be0b78dfb816e6c7c8790d5e41f849a26ee333;hp=6146d4e8359704733c8c359420f1063e7c578fe5;hb=8bca9860d0edd96e0087b3e47be2814474425654;hpb=238b70e39b78f585c586bd51aef41988b3cc73d1 diff --git a/muttlib.c b/muttlib.c index 6146d4e..c5be0b7 100644 --- a/muttlib.c +++ b/muttlib.c @@ -19,23 +19,21 @@ #include #include +#include + #include "mutt.h" #include "enter.h" #include "mutt_curses.h" -#include "mime.h" #include "mx.h" #include "url.h" #include "attach.h" -#include "reldate.h" #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,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; @@ -357,15 +320,15 @@ char *_mutt_expand_path (char *s, size_t slen, int rx) case '@': { HEADER *h; - ADDRESS *alias; + 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; @@ -503,12 +466,12 @@ void mutt_set_parameter (const char *attribute, const char *value, for (q = *p; q; q = q->next) { if (ascii_strcasecmp (attribute, q->attribute) == 0) { - str_replace (&q->value, value); + m_strreplace(&q->value, value); return; } } - 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; } } @@ -542,9 +505,9 @@ int mutt_needs_mailcap (BODY * m) break; case TYPEAPPLICATION: - if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (m)) + if (mutt_is_application_pgp (m)) return 0; - if ((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime (m)) + if (mutt_is_application_smime (m)) return 0; break; @@ -561,7 +524,7 @@ int mutt_is_text_part (BODY * b) int t = b->type; char *s = b->subtype; - if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)) + if (mutt_is_application_pgp (b)) return 0; if (t == TYPETEXT) @@ -572,7 +535,7 @@ int mutt_is_text_part (BODY * b) return 1; } - if ((WithCrypto & APPLICATION_PGP) && t == TYPEAPPLICATION) { + if (t == TYPEAPPLICATION) { if (!ascii_strcasecmp ("pgp-keys", s)) return 1; } @@ -580,46 +543,11 @@ int mutt_is_text_part (BODY * b) return 0; } -void mutt_free_envelope (ENVELOPE ** p) -{ - if (!*p) - return; - rfc822_free_address (&(*p)->return_path); - rfc822_free_address (&(*p)->from); - rfc822_free_address (&(*p)->to); - rfc822_free_address (&(*p)->cc); - rfc822_free_address (&(*p)->bcc); - rfc822_free_address (&(*p)->sender); - rfc822_free_address (&(*p)->reply_to); - rfc822_free_address (&(*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,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) @@ -677,7 +605,7 @@ void mutt_free_alias (ALIAS ** p) t = *p; *p = (*p)->next; p_delete(&t->name); - rfc822_free_address (&t->addr); + address_delete (&t->addr); p_delete(&t); } } @@ -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) { @@ -829,7 +755,7 @@ int mutt_check_overwrite (const char *attname, const char *path, (_("File is a directory, save under it? [(y)es, (n)o, (a)ll]"), _("yna"))) { case 3: /* all */ - str_replace (directory, fname); + m_strreplace(directory, fname); break; case 1: /* yes */ p_delete(directory); @@ -879,7 +805,7 @@ int mutt_check_overwrite (const char *attname, const char *path, return 0; } -void mutt_save_path (char *d, size_t dsize, ADDRESS * a) +void mutt_save_path (char *d, size_t dsize, address_t * a) { if (a && a->mailbox) { m_strcpy(d, dsize, a->mailbox); @@ -889,13 +815,13 @@ void mutt_save_path (char *d, size_t dsize, ADDRESS * a) if ((p = strpbrk (d, "%@"))) *p = 0; } - str_tolower (d); + m_strtolower(d); } else *d = 0; } -void mutt_safe_path (char *s, size_t l, ADDRESS * a) +void mutt_safe_path (char *s, size_t l, address_t * a) { char *p; @@ -1070,7 +996,7 @@ void mutt_FormatString (char *dest, /* output buffer */ data, flags); if (lower) - str_tolower (buf); + m_strtolower(buf); if (nodots) { char *p = buf; @@ -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; @@ -1296,9 +1218,9 @@ const char *mutt_make_version (int full) static char vstring[STRING]; if (full) - snprintf (vstring, sizeof (vstring), "Mutt-ng %s-r%s (based " - "on Mutt 1.5.11/%s)", MUTT_VERSION, MUTT_REVISION, - ReleaseDate); + snprintf (vstring, sizeof (vstring), + "Mutt-ng %s-r%s (based on Mutt 1.5.11)", + MUTT_VERSION, MUTT_REVISION); else snprintf (vstring, sizeof (vstring), "mutt-ng/%s-r%s", MUTT_VERSION, MUTT_REVISION); @@ -1392,7 +1314,7 @@ int mutt_cmp_header (const HEADER * h1, const HEADER * h2) { } /* return 1 if address lists are strictly identical */ -int mutt_cmp_addr (const ADDRESS * a, const ADDRESS * b) +int mutt_cmp_addr (const address_t * a, const address_t * b) { while (a && b) { if (m_strcmp(a->mailbox, b->mailbox) ||