* 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 <lib-mx/mx.h>
-#include "mutt.h"
#include "alias.h"
#include "keymap.h"
#include "copy.h"
-#include "mx.h"
#include <lib-crypt/crypt.h>
#include "mutt_idna.h"
#include "attach.h"
#ifdef USE_NNTP
-#include "nntp.h"
+#include <nntp/nntp.h>
#endif
#ifdef MIXMASTER
else if (SignOffString)
fputs ("\n", f);
mutt_copy_stream (tmpfp, f);
- fclose (tmpfp);
+ m_fclose(&tmpfp);
if (thepid != -1)
mutt_wait_filter (thepid);
}
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) {
m_strreplace(&env->subject, buffer);
}
-void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
- HEADER * cur, ENVELOPE * curenv)
+void mutt_make_misc_reply_headers (ENVELOPE * env,
+ CONTEXT * ctx __attribute__ ((unused)),
+ HEADER * cur __attribute__ ((unused)),
+ ENVELOPE * curenv)
{
/* This takes precedence over a subject that might have
* been taken from a List-Post header. Is that correct?
#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)
{
return -1;
}
else if (flags & SENDKEY) {
- BODY *tmp;
+ BODY *btmp;
- if ((tmp = crypt_pgp_make_key_attachment (NULL)) == NULL)
+ if ((btmp = crypt_pgp_make_key_attachment (NULL)) == NULL)
return -1;
- tmp->next = msg->content;
- msg->content = tmp;
+ btmp->next = msg->content;
+ msg->content = btmp;
}
mutt_clear_error ();
}
}
- e->mail_followup_to = mutt_remove_duplicates(e->mail_followup_to);
+ address_list_uniq(e->mail_followup_to);
}
}
int i;
/* Write out the message in MIME form. */
- mutt_mktemp (tempfile);
- if ((tempfp = safe_fopen (tempfile, "w")) == NULL)
- return (-1);
+ tempfp = m_tempfile(tempfile, sizeof(tempfile), NONULL(Tempdir), NULL);
+ if (!tempfp)
+ return -1;
#ifdef MIXMASTER
mutt_write_rfc822_header (tempfp, msg->env, msg->content, 0,
fputc ('\n', tempfp); /* tie off the header. */
if ((mutt_write_mime_body (msg->content, tempfp) == -1)) {
- fclose (tempfp);
+ m_fclose(&tempfp);
unlink (tempfile);
return (-1);
}
- if (fclose (tempfp) != 0) {
- mutt_perror (tempfile);
+ if (m_fclose(&tempfp) != 0) {
+ mutt_perror (_("Can't create temporary file"));
unlink (tempfile);
return (-1);
}
fseeko (fp, -1, SEEK_END);
if ((c = fgetc (fp)) != '\n')
fputc ('\n', fp);
- safe_fclose (&fp);
+ m_fclose(&fp);
}
int mutt_resend_message (FILE * fp, CONTEXT * ctx, HEADER * cur)
CONTEXT * ctx, /* current mailbox */
HEADER * cur)
{ /* current message */
- char buffer[LONG_STRING];
char fcc[_POSIX_PATH_MAX] = ""; /* where to copy this message */
FILE *tempfp = NULL;
BODY *pbody;
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 (!tempfile) {
- mutt_mktemp (buffer);
- tempfp = safe_fopen (buffer, "w+");
+ char buffer[_POSIX_PATH_MAX];
+ tempfp = m_tempfile(buffer, sizeof(buffer), NONULL(Tempdir), NULL);
msg->content->filename = m_strdup(buffer);
- }
- else {
- tempfp = safe_fopen (tempfile, "a+");
+ } else {
+ tempfp = safe_fopen(tempfile, "a+");
msg->content->filename = m_strdup(tempfile);
}
msg->env->from->personal = m_strdup(Realname);
if (!(flags & SENDKEY))
- safe_fclose (&tempfp);
+ m_fclose(&tempfp);
if (!(flags & SENDBATCH)) {
struct stat st;
}
}
- safe_fclose (&tempfp);
+ m_fclose(&tempfp);
header_delete(&msg);
return rv;