X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=headers.c;h=b083ded4b78071d81c4021a0d15b38640477787c;hp=e5a1540c57b7f00b0f15dd6f4f0787838492d6ea;hb=db3bd72d8b48f1f9b49899da081ffbec4ce2c1c6;hpb=bbc4fd52516a8afefbd14c77e34f8389d6f0a6ed diff --git a/headers.c b/headers.c index e5a1540..b083ded 100644 --- a/headers.c +++ b/headers.c @@ -7,25 +7,16 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif +#include +#include #include "mutt.h" -#include "ascii.h" -#include "mutt_crypt.h" +#include "alias.h" +#include "crypt.h" #include "mutt_idna.h" -#include "lib/intl.h" -#include "lib/debug.h" - -#include -#include -#include - -void mutt_edit_headers (const char *editor, - const char *body, - HEADER * msg, char *fcc, size_t fcclen) +void mutt_edit_headers(const char *body, + HEADER * msg, char *fcc, ssize_t fcclen) { char path[_POSIX_PATH_MAX]; /* tempfile used to edit headers + body */ char buffer[LONG_STRING]; @@ -35,16 +26,16 @@ void mutt_edit_headers (const char *editor, ENVELOPE *n; time_t mtime; struct stat st; - LIST *cur, **last = NULL, *tmp; + string_list_t *cur, **last = NULL, *tmp; - mutt_mktemp (path); - if ((ofp = safe_fopen (path, "w")) == NULL) { + ofp = m_tempfile(path, sizeof(path), NONULL(mod_core.tmpdir), NULL); + if (!ofp) { mutt_perror (path); return; } mutt_env_to_local (msg->env); - mutt_write_rfc822_header (ofp, msg->env, NULL, 1, 0); + mutt_write_rfc822_header (ofp, msg->env, NULL, 1); fputc ('\n', ofp); /* tie off the header. */ /* now copy the body of the message. */ @@ -55,27 +46,26 @@ void mutt_edit_headers (const char *editor, mutt_copy_stream (ifp, ofp); - fclose (ifp); - fclose (ofp); + m_fclose(&ifp); + m_fclose(&ofp); if (stat (path, &st) == -1) { mutt_perror (path); return; } - mtime = mutt_decrease_mtime (path, &st); + mtime = m_decrease_mtime(path, &st); - mutt_edit_file (editor, path); + mutt_edit_file(path); stat (path, &st); if (mtime == st.st_mtime) { - debug_print (1, ("temp file was not modified.\n")); /* the file has not changed! */ mutt_unlink (path); return; } mutt_unlink (body); - mutt_free_list (&msg->env->userhdrs); + string_list_wipe(&msg->env->userhdrs); /* Read the temp file back in */ if ((ifp = fopen (path, "r")) == NULL) { @@ -85,7 +75,7 @@ void mutt_edit_headers (const char *editor, if ((ofp = safe_fopen (body, "w")) == NULL) { /* intentionally leak a possible temporary file here */ - fclose (ifp); + m_fclose(&ifp); mutt_perror (body); return; } @@ -93,23 +83,20 @@ void mutt_edit_headers (const char *editor, n = mutt_read_rfc822_header (ifp, NULL, 1, 0); while ((i = fread (buffer, 1, sizeof (buffer), ifp)) > 0) fwrite (buffer, 1, i, ofp); - fclose (ofp); - fclose (ifp); + m_fclose(&ofp); + m_fclose(&ifp); mutt_unlink (path); /* restore old info. */ n->references = msg->env->references; msg->env->references = NULL; - mutt_free_envelope (&msg->env); + envelope_delete(&msg->env); msg->env = n; n = NULL; if (!msg->env->in_reply_to) -#ifdef USE_NNTP - if (!option (OPTNEWSSEND)) -#endif - mutt_free_list (&msg->env->references); + string_list_wipe(&msg->env->references); mutt_expand_aliases_env (msg->env); @@ -127,33 +114,31 @@ void mutt_edit_headers (const char *editor, * message based upon this one. */ if (fcc && ascii_strncasecmp ("fcc:", cur->data, 4) == 0) { - p = cur->data + 4; - SKIPWS (p); + p = vskipspaces(cur->data + 4); if (*p) { - strfcpy (fcc, p, fcclen); + m_strcpy(fcc, fcclen, p); mutt_pretty_mailbox (fcc); } keep = 0; } else if (ascii_strncasecmp ("attach:", cur->data, 7) == 0) { - BODY *body; + BODY *bbody; BODY *parts; char *q; - p = cur->data + 7; - SKIPWS (p); + p = vskipspaces(cur->data + 7); if (*p) { if ((q = strpbrk (p, " \t"))) { - str_substrcpy (path, p, q, sizeof (path)); - SKIPWS (q); + m_strncpy(path, sizeof(path), p, q - p); + q = vskipspaces(q); } else - strfcpy (path, p, sizeof (path)); + m_strcpy(path, sizeof(path), p); mutt_expand_path (path, sizeof (path)); - if ((body = mutt_make_file_attach (path))) { - body->description = str_dup (q); + if ((bbody = mutt_make_file_attach (path))) { + bbody->description = m_strdup(q); for (parts = msg->content; parts->next; parts = parts->next); - parts->next = body; + parts->next = bbody; } else { mutt_pretty_mailbox (path); @@ -164,8 +149,7 @@ void mutt_edit_headers (const char *editor, } - else if ((WithCrypto & APPLICATION_PGP) - && ascii_strncasecmp ("pgp:", cur->data, 4) == 0) { + else if (ascii_strncasecmp("pgp:", cur->data, 4) == 0) { msg->security = mutt_parse_crypt_hdr (cur->data + 4, 0); if (msg->security) msg->security |= APPLICATION_PGP; @@ -181,7 +165,7 @@ void mutt_edit_headers (const char *editor, *last = cur->next; cur = cur->next; tmp->next = NULL; - mutt_free_list (&tmp); + string_list_wipe(&tmp); } } }