#include <lib-crypt/crypt.h>
-#include "lib/list.h"
-
#include "mutt.h"
#include "handler.h"
#include "recvattach.h"
p_delete(&ref);
}
+static int edit_header(int mode, const char *s)
+{
+ const char *p;
+ int slen = m_strlen(s);
+
+ if (mode != 1 || option(OPTXMAILTO))
+ return 1;
+
+ p = skipspaces(EditorHeaders);
+ while (*p) {
+ if (!ascii_strncasecmp(p, s, slen) && p[slen - 1] == ':')
+ return 1;
+ p = skipspaces(p + slen);
+ }
+
+ return 0;
+}
+
/* Note: all RFC2047 encoding should be done outside of this routine, except
* for the "real name." This will allow this routine to be used more than
* once, if necessary.
char *p;
string_list_t *tmp = env->userhdrs;
int has_agent = 0; /* user defined user-agent header field exists */
- list2_t* hdrs = list_from_str (EditorHeaders, " ");
#ifdef USE_NNTP
if (!option (OPTNEWSSEND))
if (mode == 0 && !privacy)
fputs (mutt_make_date (buffer, sizeof (buffer)), fp);
-#define EDIT_HEADER(x) (mode != 1 || option(OPTXMAILTO) || (mode == 1 && list_lookup(hdrs,(list_lookup_t*) ascii_strcasecmp,x) >= 0))
-
/* OPTUSEFROM is not consulted here so that we can still write a From:
* field if the user sets it with the `my_hdr' command
*/
#ifdef USE_NNTP
if (!option (OPTNEWSSEND))
#endif
- if (EDIT_HEADER("To:"))
+ if (edit_header(mode, "To:"))
fputs ("To:\n", fp);
if (env->cc) {
#ifdef USE_NNTP
if (!option (OPTNEWSSEND))
#endif
- if (EDIT_HEADER("Cc:"))
+ if (edit_header(mode, "Cc:"))
fputs ("Cc:\n", fp);
if (env->bcc) {
#ifdef USE_NNTP
if (!option (OPTNEWSSEND))
#endif
- if (EDIT_HEADER("Bcc:"))
+ if (edit_header(mode, "Bcc:"))
fputs ("Bcc:\n", fp);
#ifdef USE_NNTP
if (env->newsgroups)
fprintf (fp, "Newsgroups: %s\n", env->newsgroups);
- else if (mode == 1 && option (OPTNEWSSEND) && EDIT_HEADER("Newsgroups:"))
+ else if (mode == 1 && option (OPTNEWSSEND) && edit_header(mode, "Newsgroups:"))
fputs ("Newsgroups:\n", fp);
if (env->followup_to)
fprintf (fp, "Followup-To: %s\n", env->followup_to);
- else if (mode == 1 && option (OPTNEWSSEND) && EDIT_HEADER("Followup-To:"))
+ else if (mode == 1 && option (OPTNEWSSEND) && edit_header(mode, "Followup-To:"))
fputs ("Followup-To:\n", fp);
if (env->x_comment_to)
fprintf (fp, "X-Comment-To: %s\n", env->x_comment_to);
else if (mode == 1 && option (OPTNEWSSEND) && option (OPTXCOMMENTTO) &&
- EDIT_HEADER("X-Comment-To:"))
+ edit_header(mode, "X-Comment-To:"))
fputs ("X-Comment-To:\n", fp);
#endif
if (env->subject)
fprintf (fp, "Subject: %s\n", env->subject);
- else if (mode == 1 && EDIT_HEADER("Subject:"))
+ else if (mode == 1 && edit_header(mode, "Subject:"))
fputs ("Subject:\n", fp);
/* save message id if the user has set it */
fputs ("Reply-To: ", fp);
mutt_write_address_list (env->reply_to, fp, 10, 0);
}
- else if (mode > 0 && EDIT_HEADER("Reply-To:"))
+ else if (mode > 0 && edit_header(mode, "Reply-To:"))
fputs ("Reply-To:\n", fp);
if (env->mail_followup_to)
fputc ('\n', fp);
}
-#undef EDIT_HEADER
-
/* Add any user defined headers */
for (; tmp; tmp = tmp->next) {
if ((p = strchr (tmp->data, ':'))) {
fprintf (fp, "User-Agent: %s (%s)\n", mutt_make_version (0), os);
}
- list_del (&hdrs, (list_del_t*)xmemfree);
-
return (ferror (fp) == 0 ? 0 : -1);
}