move more functions in file.c
[apps/madmutt.git] / send.c
diff --git a/send.c b/send.c
index 2d05c43..ed87f4b 100644 (file)
--- a/send.c
+++ b/send.c
@@ -7,46 +7,24 @@
  * 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 <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-lib/lib-lib.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
@@ -69,7 +47,7 @@ static void append_signature (FILE * f)
     else if (SignOffString)
       fputs ("\n", f);
     mutt_copy_stream (tmpfp, f);
-    fclose (tmpfp);
+    m_fclose(&tmpfp);
     if (thepid != -1)
       mutt_wait_filter (thepid);
   }
@@ -183,7 +161,7 @@ static address_t *find_mailing_lists (address_t * t, address_t * c)
 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 {
@@ -302,7 +280,7 @@ static int edit_envelope (ENVELOPE * en, int flags)
 }
 
 #ifdef USE_NNTP
-char *nntp_get_header(const char *s)
+static char *nntp_get_header(const char *s)
 {
     return m_strdup(skipspaces(s));
 }
@@ -585,25 +563,6 @@ int mutt_fetch_recips (ENVELOPE * out, ENVELOPE * in, int flags)
   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);
@@ -617,8 +576,8 @@ void mutt_fix_reply_recipients (ENVELOPE * 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) {
@@ -636,8 +595,10 @@ void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur)
   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?
@@ -656,6 +617,25 @@ void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
 #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)
 {
@@ -856,13 +836,13 @@ static int generate_body (FILE * tempfp,        /* stream for outgoing message *
       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 ();
@@ -925,7 +905,7 @@ void mutt_set_followup_to (ENVELOPE * e)
       }
     }
 
-    e->mail_followup_to = mutt_remove_duplicates(e->mail_followup_to);
+    address_list_uniq(e->mail_followup_to);
 
   }
 }
@@ -992,9 +972,9 @@ static int send_message (HEADER * msg)
   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,
@@ -1007,13 +987,13 @@ static int send_message (HEADER * msg)
   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);
   }
@@ -1067,7 +1047,7 @@ static void fix_end_of_file (const char *data)
   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)
@@ -1086,7 +1066,6 @@ int ci_send_message (int flags, /* send mode */
                      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;
@@ -1099,8 +1078,8 @@ int ci_send_message (int flags, /* send mode */
   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;
@@ -1198,12 +1177,11 @@ int ci_send_message (int flags, /* send mode */
     }
 
     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);
     }
 
@@ -1393,11 +1371,11 @@ int ci_send_message (int flags, /* send mode */
     msg->env->from->personal = m_strdup(Realname);
 
   if (!(flags & SENDKEY))
-    safe_fclose (&tempfp);
+    m_fclose(&tempfp);
 
   if (!(flags & SENDBATCH)) {
     struct stat st;
-    time_t mtime = mutt_decrease_mtime (msg->content->filename, NULL);
+    time_t mtime = m_decrease_mtime(msg->content->filename, NULL);
 
     mutt_update_encoding (msg->content);
 
@@ -1417,7 +1395,7 @@ int ci_send_message (int flags, /* send mode */
          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)) {
@@ -1808,7 +1786,7 @@ cleanup:
     }
   }
 
-  safe_fclose (&tempfp);
+  m_fclose(&tempfp);
   header_delete(&msg);
 
   return rv;