* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <dirent.h>
-#include <time.h>
-#include <sys/types.h>
+#include <lib-lib/lib-lib.h>
#include <utime.h>
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
-#include <lib-lib/url.h>
-
#include <lib-mime/mime.h>
-
+#include <lib-mime/rfc3676.h>
+#include <lib-sys/unix.h>
#include <lib-ui/curses.h>
#include <lib-ui/enter.h>
-#include "mutt.h"
#include "alias.h"
-#include "rfc3676.h"
#include "keymap.h"
#include "copy.h"
#include "mx.h"
static int edit_address (address_t ** a, const char *field)
{
char buf[HUGE_STRING];
- const char *err = NULL;
+ char *err = NULL;
int idna_ok = 0;
do {
}
#ifdef USE_NNTP
-char *nntp_get_header(const char *s)
+static char *nntp_get_header(const char *s)
{
return m_strdup(skipspaces(s));
}
return 0;
}
-string_list_t *mutt_make_references (ENVELOPE * e)
-{
- string_list_t *t = NULL, *l = NULL;
-
- if (e->references)
- l = string_list_dup(e->references);
- else
- l = string_list_dup(e->in_reply_to);
-
- if (e->message_id) {
- t = string_item_new();
- t->data = m_strdup(e->message_id);
- t->next = l;
- l = t;
- }
-
- return l;
-}
-
void mutt_fix_reply_recipients (ENVELOPE * env)
{
mutt_expand_aliases_env (env);
}
/* the CC field can get cluttered, especially with lists */
- env->to = mutt_remove_duplicates (env->to);
- env->cc = mutt_remove_duplicates (env->cc);
+ address_list_uniq(env->to);
+ address_list_uniq(env->cc);
env->cc = mutt_remove_xrefs (env->to, env->cc);
if (env->cc && !env->to) {
#endif
}
+static string_list_t *mutt_make_references (ENVELOPE * e)
+{
+ string_list_t *t = NULL, *l = NULL;
+
+ if (e->references)
+ l = string_list_dup(e->references);
+ else
+ l = string_list_dup(e->in_reply_to);
+
+ if (e->message_id) {
+ t = string_item_new();
+ t->data = m_strdup(e->message_id);
+ t->next = l;
+ l = t;
+ }
+
+ return l;
+}
+
void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
string_list_t *** pp, string_list_t *** qq)
{
}
}
- e->mail_followup_to = mutt_remove_duplicates(e->mail_followup_to);
+ address_list_uniq(e->mail_followup_to);
}
}
char *pgpkeylist = NULL;
/* save current value of "pgp_sign_as" */
- char *signas = NULL;
- const char *tag = NULL, *err = NULL;
+ char *signas = NULL, *err = NULL;
+ const char *tag = NULL;
char *ctype;
int rv = -1;
}
if (!(flags & (SENDKEY | SENDPOSTPONED | SENDRESEND))) {
- pbody = mutt_new_body ();
+ pbody = body_new();
pbody->next = msg->content; /* don't kill command-line attachments */
msg->content = pbody;
msg->content->disposition = DISPINLINE;
if (option (OPTTEXTFLOWED) && msg->content->type == TYPETEXT
&& !ascii_strcasecmp (msg->content->subtype, "plain")) {
- mutt_set_parameter ("format", "flowed", &msg->content->parameter);
+ parameter_setval(&msg->content->parameter, "format", "flowed");
if (option (OPTDELSP))
- mutt_set_parameter ("delsp", "yes", &msg->content->parameter);
+ parameter_setval(&msg->content->parameter, "delsp", "yes");
}
if (!tempfile) {
query_quadoption (OPT_FORWEDIT,
_("Edit forwarded message?")) == M_YES)) {
/* If the this isn't a text message, look for a mailcap edit command */
- if (mutt_needs_mailcap (msg->content)) {
+ if (rfc1524_mailcap_isneeded(msg->content)) {
if (!mutt_edit_attachment (msg->content))
goto cleanup;
} else if (option (OPTEDITHDRS)) {
if (save_sig) {
/* cleanup the second signature structures */
if (save_content->parts) {
- mutt_free_body (&save_content->parts->next);
+ body_list_wipe(&save_content->parts->next);
save_content->parts = NULL;
}
- mutt_free_body (&save_content);
+ body_list_wipe(&save_content);
/* restore old signature and attachments */
msg->content->parts->next = save_sig;
}
else if (save_content) {
/* destroy the new encrypted body. */
- mutt_free_body (&save_content);
+ body_list_wipe(&save_content);
}
}
if ((msg->security & ENCRYPT)
|| ((msg->security & SIGN)
&& msg->content->type == TYPEAPPLICATION)) {
- mutt_free_body (&msg->content); /* destroy PGP data */
+ body_list_wipe(&msg->content); /* destroy PGP data */
msg->content = clear_content; /* restore clear text. */
}
else if ((msg->security & SIGN) && msg->content->type == TYPEMULTIPART) {
- mutt_free_body (&msg->content->parts->next); /* destroy sig */
+ body_list_wipe(&msg->content->parts->next); /* destroy sig */
msg->content = mutt_remove_multipart (msg->content);
}
p_delete(&pgpkeylist);
if (free_clear_content)
- mutt_free_body (&clear_content);
+ body_list_wipe(&clear_content);
if (flags & SENDREPLY) {
if (cur && ctx)