and less size_t's
[apps/madmutt.git] / send.c
diff --git a/send.c b/send.c
index 8ba9c3c..6821f01 100644 (file)
--- a/send.c
+++ b/send.c
 # 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/debug.h>
+#include <lib-lib/url.h>
 
 #include <lib-mime/mime.h>
 
+#include <lib-ui/curses.h>
+#include <lib-ui/enter.h>
+
 #include "mutt.h"
-#include "enter.h"
-#include "mutt_curses.h"
 #include "rfc3676.h"
 #include "keymap.h"
 #include "copy.h"
 #include "mx.h"
-#include "mutt_crypt.h"
+#include <lib-crypt/crypt.h>
 #include "mutt_idna.h"
-#include "url.h"
 #include "attach.h"
 
-#include "lib/debug.h"
-
-#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>
-
 #ifdef USE_NNTP
 #include "nntp.h"
 #endif
@@ -110,13 +110,13 @@ static address_t *mutt_remove_xrefs (address_t * a, address_t * b)
       if (prev) {
         prev->next = b->next;
         b->next = NULL;
-        address_delete (&b);
+        address_list_wipe(&b);
         b = prev;
       }
       else {
         top = top->next;
         b->next = NULL;
-        address_delete (&b);
+        address_list_wipe(&b);
         b = top;
       }
     }
@@ -152,7 +152,7 @@ static address_t *remove_user (address_t * a, int leave_only)
       a = a->next;
       if (!leave_only || a || last) {
         tmp->next = NULL;
-        address_delete (&tmp);
+        address_list_wipe(&tmp);
       }
       else
         last = top = tmp;
@@ -183,7 +183,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];
-  char *err = NULL;
+  const char *err = NULL;
   int idna_ok = 0;
 
   do {
@@ -192,7 +192,7 @@ static int edit_address (address_t ** a, const char *field)
     rfc822_write_address (buf, sizeof (buf), *a, 0);
     if (mutt_get_field (field, buf, sizeof (buf), M_ALIAS) != 0)
       return (-1);
-    address_delete (a);
+    address_list_wipe(a);
     *a = mutt_expand_aliases (mutt_parse_adrlist (NULL, buf));
     if ((idna_ok = mutt_addrlist_to_idna (*a, &err)) != 0) {
       mutt_error (_("Error: '%s' is a bad IDN."), err);
@@ -208,7 +208,7 @@ static int edit_address (address_t ** a, const char *field)
 static int edit_envelope (ENVELOPE * en, int flags)
 {
   char buf[HUGE_STRING];
-  LIST *uh = UserHeader;
+  string_list_t *uh = UserHeader;
   regmatch_t pat_match[1];
 
 #ifdef USE_NNTP
@@ -310,7 +310,7 @@ char *nntp_get_header(const char *s)
 
 static void process_user_recips (ENVELOPE * env)
 {
-  LIST *uh = UserHeader;
+  string_list_t *uh = UserHeader;
 
   for (; uh; uh = uh->next) {
     if (ascii_strncasecmp ("to:", uh->data, 3) == 0)
@@ -332,8 +332,8 @@ static void process_user_recips (ENVELOPE * env)
 
 static void process_user_header (ENVELOPE * env)
 {
-  LIST *uh = UserHeader;
-  LIST *last = env->userhdrs;
+  string_list_t *uh = UserHeader;
+  string_list_t *last = env->userhdrs;
 
   if (last)
     while (last->next)
@@ -342,11 +342,11 @@ static void process_user_header (ENVELOPE * env)
   for (; uh; uh = uh->next) {
     if (ascii_strncasecmp ("from:", uh->data, 5) == 0) {
       /* User has specified a default From: address.  Remove default address */
-      address_delete (&env->from);
+      address_list_wipe(&env->from);
       env->from = rfc822_parse_adrlist (env->from, uh->data + 5);
     }
     else if (ascii_strncasecmp ("reply-to:", uh->data, 9) == 0) {
-      address_delete (&env->reply_to);
+      address_list_wipe(&env->reply_to);
       env->reply_to = rfc822_parse_adrlist (env->reply_to, uh->data + 9);
     }
     else if (ascii_strncasecmp ("message-id:", uh->data, 11) == 0)
@@ -362,11 +362,11 @@ static void process_user_header (ENVELOPE * env)
              ascii_strncasecmp ("supersedes:", uh->data, 11) != 0 &&
              ascii_strncasecmp ("subject:", uh->data, 8) != 0) {
       if (last) {
-        last->next = mutt_new_list ();
+        last->next = string_item_new();
         last = last->next;
       }
       else
-        last = env->userhdrs = mutt_new_list ();
+        last = env->userhdrs = string_item_new();
       last->data = m_strdup(uh->data);
     }
   }
@@ -585,17 +585,17 @@ int mutt_fetch_recips (ENVELOPE * out, ENVELOPE * in, int flags)
   return 0;
 }
 
-LIST *mutt_make_references (ENVELOPE * e)
+string_list_t *mutt_make_references (ENVELOPE * e)
 {
-  LIST *t = NULL, *l = NULL;
+  string_list_t *t = NULL, *l = NULL;
 
   if (e->references)
-    l = mutt_copy_list (e->references);
+    l = string_list_dup(e->references);
   else
-    l = mutt_copy_list (e->in_reply_to);
+    l = string_list_dup(e->in_reply_to);
 
   if (e->message_id) {
-    t = mutt_new_list ();
+    t = string_item_new();
     t->data = m_strdup(e->message_id);
     t->next = l;
     l = t;
@@ -657,9 +657,9 @@ void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
 }
 
 void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
-                                    LIST *** pp, LIST *** qq)
+                                    string_list_t *** pp, string_list_t *** qq)
 {
-  LIST **p = NULL, **q = NULL;
+  string_list_t **p = NULL, **q = NULL;
 
   if (pp)
     p = *pp;
@@ -679,7 +679,7 @@ void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
   *p = mutt_make_references (curenv);
 
   if (curenv->message_id) {
-    *q = mutt_new_list ();
+    *q = string_item_new();
     (*q)->data = m_strdup(curenv->message_id);
   }
 
@@ -698,7 +698,7 @@ mutt_make_reference_headers (ENVELOPE * curenv, ENVELOPE * env, CONTEXT * ctx)
 
   if (!curenv) {
     HEADER *h;
-    LIST **p = NULL, **q = NULL;
+    string_list_t **p = NULL, **q = NULL;
     int i;
 
     for (i = 0; i < ctx->vcount; i++) {
@@ -1072,7 +1072,7 @@ static void fix_end_of_file (const char *data)
 
 int mutt_resend_message (FILE * fp, CONTEXT * ctx, HEADER * cur)
 {
-  HEADER *msg = mutt_new_header ();
+  HEADER *msg = header_new();
 
   if (mutt_prepare_template (fp, ctx, msg, cur, 1) < 0)
     return -1;
@@ -1099,8 +1099,8 @@ int ci_send_message (int flags, /* send mode */
   char *pgpkeylist = NULL;
 
   /* save current value of "pgp_sign_as" */
-  char *signas = NULL, *err = NULL;
-  const char *tag = NULL;
+  char *signas = NULL;
+  const char *tag = NULL, *err = NULL;
   char *ctype;
 
   int rv = -1;
@@ -1135,7 +1135,7 @@ int ci_send_message (int flags, /* send mode */
    */
 
   if (!msg) {
-    msg = mutt_new_header ();
+    msg = header_new();
 
     if (flags == SENDPOSTPONED) {
       if ((flags =
@@ -1165,7 +1165,7 @@ int ci_send_message (int flags, /* send mode */
     }
 
     if (!msg->env)
-      msg->env = mutt_new_envelope ();
+      msg->env = envelope_new();
   }
 
   /* Parse and use an eventual list-post header */
@@ -1174,7 +1174,7 @@ int ci_send_message (int flags, /* send mode */
     /* Use any list-post header as a template */
     url_parse_mailto (msg->env, NULL, cur->env->list_post);
     /* We don't let them set the sender's address. */
-    address_delete (&msg->env->from);
+    address_list_wipe(&msg->env->from);
   }
 
   if (!(flags & (SENDKEY | SENDPOSTPONED | SENDRESEND))) {
@@ -1261,8 +1261,7 @@ int ci_send_message (int flags, /* send mode */
       msg->env->newsgroups = m_strdup(((NNTP_DATA *) ctx->data)->group);
 #endif
 
-    if (!(flags & SENDMAILX) &&
-        !(option (OPTAUTOEDIT) && option (OPTEDITHDRS)) &&
+    if (!(option (OPTAUTOEDIT) && option (OPTEDITHDRS)) &&
         !((flags & SENDREPLY) && option (OPTFASTREPLY))) {
       if (edit_envelope (msg->env, flags) == -1)
         goto cleanup;
@@ -1303,7 +1302,7 @@ int ci_send_message (int flags, /* send mode */
     msg->replied = 0;
 
     if (killfrom) {
-      address_delete (&msg->env->from);
+      address_list_wipe(&msg->env->from);
       killfrom = 0;
     }
 
@@ -1311,9 +1310,7 @@ int ci_send_message (int flags, /* send mode */
       process_user_header (msg->env);
 
 
-    if (option (OPTSIGONTOP)
-        && (!(flags & (SENDMAILX | SENDKEY)) && Editor
-            && m_strcmp(Editor, "builtin") != 0))
+    if (option (OPTSIGONTOP) && (!(flags & SENDKEY) && Editor))
       append_signature (tempfp);
 
     /* include replies/forwarded messages, unless we are given a template */
@@ -1321,9 +1318,7 @@ int ci_send_message (int flags, /* send mode */
         && generate_body (tempfp, msg, flags, ctx, cur) == -1)
       goto cleanup;
 
-    if (!option (OPTSIGONTOP)
-        && (!(flags & (SENDMAILX | SENDKEY)) && Editor
-            && m_strcmp(Editor, "builtin") != 0))
+    if (!option (OPTSIGONTOP) && (!(flags & SENDKEY) && Editor))
       append_signature (tempfp);
 
     /* 
@@ -1331,24 +1326,22 @@ int ci_send_message (int flags, /* send mode */
      * can take effect.
      */
 
-    if (!(flags & SENDMAILX)) {
-      if (option (OPTCRYPTAUTOSIGN))
-        msg->security |= SIGN;
-      if (option (OPTCRYPTAUTOENCRYPT))
-        msg->security |= ENCRYPT;
-      if (option (OPTCRYPTREPLYENCRYPT) && cur && (cur->security & ENCRYPT))
-        msg->security |= ENCRYPT;
-      if (option (OPTCRYPTREPLYSIGN) && cur && (cur->security & SIGN))
-        msg->security |= SIGN;
-      if (option (OPTCRYPTREPLYSIGNENCRYPTED) && cur
-          && (cur->security & ENCRYPT))
-        msg->security |= SIGN;
-      if (msg->security & (ENCRYPT | SIGN)) {
-        if (option (OPTPGPAUTOINLINE))
-          msg->security |= INLINE;
-        if (option (OPTPGPREPLYINLINE) && cur && (cur->security & INLINE))
-          msg->security |= INLINE;
-      }
+    if (option (OPTCRYPTAUTOSIGN))
+      msg->security |= SIGN;
+    if (option (OPTCRYPTAUTOENCRYPT))
+      msg->security |= ENCRYPT;
+    if (option (OPTCRYPTREPLYENCRYPT) && cur && (cur->security & ENCRYPT))
+      msg->security |= ENCRYPT;
+    if (option (OPTCRYPTREPLYSIGN) && cur && (cur->security & SIGN))
+      msg->security |= SIGN;
+    if (option (OPTCRYPTREPLYSIGNENCRYPTED) && cur
+        && (cur->security & ENCRYPT))
+      msg->security |= SIGN;
+    if (msg->security & (ENCRYPT | SIGN)) {
+      if (option (OPTPGPAUTOINLINE))
+        msg->security |= INLINE;
+      if (option (OPTPGPREPLYINLINE) && cur && (cur->security & INLINE))
+        msg->security |= INLINE;
     }
 
     if (msg->security) {
@@ -1404,11 +1397,7 @@ int ci_send_message (int flags, /* send mode */
   if (!(flags & SENDKEY))
     safe_fclose (&tempfp);
 
-  if (flags & SENDMAILX) {
-    if (mutt_builtin_editor (msg->content->filename, msg, cur) == -1)
-      goto cleanup;
-  }
-  else if (!(flags & SENDBATCH)) {
+  if (!(flags & SENDBATCH)) {
     struct stat st;
     time_t mtime = mutt_decrease_mtime (msg->content->filename, NULL);
 
@@ -1433,9 +1422,7 @@ int ci_send_message (int flags, /* send mode */
       if (mutt_needs_mailcap (msg->content)) {
         if (!mutt_edit_attachment (msg->content))
           goto cleanup;
-      } else if (!Editor || m_strcmp("builtin", Editor) == 0)
-        mutt_builtin_editor (msg->content->filename, msg, cur);
-      else if (option (OPTEDITHDRS)) {
+      } else if (option (OPTEDITHDRS)) {
         mutt_env_to_local (msg->env);
         mutt_edit_headers (Editor, msg->content->filename, msg, fcc,
                            sizeof (fcc));
@@ -1486,7 +1473,7 @@ int ci_send_message (int flags, /* send mode */
     }
     mutt_select_fcc (fcc, sizeof (fcc), msg);
     if (killfrom) {
-      address_delete (&msg->env->from);
+      address_list_wipe(&msg->env->from);
       killfrom = 0;
     }
   }
@@ -1494,7 +1481,7 @@ int ci_send_message (int flags, /* send mode */
 
   mutt_update_encoding (msg->content);
 
-  if (!(flags & (SENDMAILX | SENDBATCH))) {
+  if (!(flags & SENDBATCH)) {
   main_loop:
 
     fcc_error = 0;              /* reset value since we may have failed before */
@@ -1659,7 +1646,7 @@ int ci_send_message (int flags, /* send mode */
       && (msg->content->parts != clear_content))
     free_clear_content = 1;
 
-  if (!option (OPTNOCURSES) && !(flags & SENDMAILX))
+  if (!option (OPTNOCURSES))
     mutt_message _("Sending message...");
 
   mutt_prepare_envelope (msg->env, 1);
@@ -1678,10 +1665,8 @@ int ci_send_message (int flags, /* send mode */
    * I'd like to think a bit more about this before including it.
    */
 
-#ifdef USE_IMAP
   if ((flags & SENDBATCH) && fcc[0] && mx_get_magic (fcc) == M_IMAP)
     fcc[0] = '\0';
-#endif
 
   if (*fcc && m_strcmp("/dev/null", fcc) != 0) {
     BODY *tmpbody = msg->content;
@@ -1788,15 +1773,15 @@ int ci_send_message (int flags, /* send mode */
       goto cleanup;
     }
   }
-  else if (!option (OPTNOCURSES) && !(flags & SENDMAILX))
+  else if (!option (OPTNOCURSES))
     mutt_message (i != 0 ? _("Sending in background.") :
 #ifdef USE_NNTP
                   (flags & SENDNEWS) ? _("Article posted.") :
-                  _("Mail sent."));
+                  _("Mail sent.")
 #else
-                  _("Mail sent."));
+                  _("Mail sent.")
 #endif
-
+    );
   if (msg->security & ENCRYPT)
     p_delete(&pgpkeylist);
 
@@ -1826,7 +1811,7 @@ cleanup:
   }
 
   safe_fclose (&tempfp);
-  mutt_free_header (&msg);
+  header_delete(&msg);
 
   return rv;
 }