mappings as standalone module
[apps/madmutt.git] / postpone.c
index bee4690..73a1057 100644 (file)
 # include "config.h"
 #endif
 
+#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/mapping.h>
+
 #include "mutt.h"
+#include "enter.h"
+#include "handler.h"
 #include "mutt_menu.h"
 #include "rfc1524.h"
 #include "mime.h"
-#include "mapping.h"
 #include "sort.h"
+#include "thread.h"
 #include "mx.h"
 #ifdef USE_IMAP
 #include "imap.h"
@@ -25,9 +34,6 @@
 #endif
 #include "mutt_crypt.h"
 
-#include "lib/mem.h"
-#include "lib/intl.h"
-#include "lib/str.h"
 #include "lib/debug.h"
 
 #include <ctype.h>
 #include <sys/stat.h>
 
 static struct mapping_t PostponeHelp[] = {
-  {N_("Exit"), OP_EXIT},
-  {N_("Del"), OP_DELETE},
+  {N_("Exit"),  OP_EXIT},
+  {N_("Del"),   OP_DELETE},
   {N_("Undel"), OP_UNDELETE},
-  {N_("Help"), OP_HELP},
-  {NULL}
+  {N_("Help"),  OP_HELP},
+  {NULL,        OP_NULL}
 };
 
 
@@ -248,7 +254,7 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
   if (!PostContext->msgcount) {
     PostCount = 0;
     mx_close_mailbox (PostContext, NULL);
-    FREE (&PostContext);
+    p_delete(&PostContext);
     mutt_error _("No postponed messages.");
 
     return (-1);
@@ -260,13 +266,13 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
   }
   else if ((h = select_msg ()) == NULL) {
     mx_close_mailbox (PostContext, NULL);
-    FREE (&PostContext);
+    p_delete(&PostContext);
     return (-1);
   }
 
   if (mutt_prepare_template (NULL, PostContext, hdr, h, 0) < 0) {
     mx_fastclose_mailbox (PostContext);
-    FREE (&PostContext);
+    p_delete(&PostContext);
     return (-1);
   }
 
@@ -285,15 +291,14 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
   mx_close_mailbox (PostContext, NULL);
   set_quadoption (OPT_DELETE, opt_delete);
 
-  FREE (&PostContext);
+  p_delete(&PostContext);
 
   for (tmp = hdr->env->userhdrs; tmp;) {
     if (ascii_strncasecmp ("X-Mutt-References:", tmp->data, 18) == 0) {
       if (ctx) {
         /* if a mailbox is currently open, look to see if the orignal message
            the user attempted to reply to is in this mailbox */
-        p = tmp->data + 18;
-        SKIPWS (p);
+        p = vskipspaces(tmp->data + 18);
         if (!ctx->id_hash)
           ctx->id_hash = mutt_make_id_hash (ctx);
         *cur = hash_find (ctx->id_hash, p);
@@ -312,9 +317,8 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
         code |= SENDREPLY;
     }
     else if (ascii_strncasecmp ("X-Mutt-Fcc:", tmp->data, 11) == 0) {
-      p = tmp->data + 11;
-      SKIPWS (p);
-      strfcpy (fcc, p, fcclen);
+      p = vskipspaces(tmp->data + 11);
+      m_strcpy(fcc, fcclen, p);
       mutt_pretty_mailbox (fcc);
 
       /* remove the X-Mutt-Fcc: header field */
@@ -328,10 +332,10 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
       tmp = next;
     }
     else if ((WithCrypto & APPLICATION_PGP)
-             && (safe_strncmp ("Pgp:", tmp->data, 4) == 0       /* this is generated
+             && (m_strncmp("Pgp:", tmp->data, 4) == 0       /* this is generated
                                                                  * by old mutt versions
                                                                  */
-                 || safe_strncmp ("X-Mutt-PGP:", tmp->data, 11) == 0)) {
+                 || m_strncmp("X-Mutt-PGP:", tmp->data, 11) == 0)) {
       hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1);
       hdr->security |= APPLICATION_PGP;
 
@@ -346,7 +350,7 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
       tmp = next;
     }
     else if ((WithCrypto & APPLICATION_SMIME)
-             && safe_strncmp ("X-Mutt-SMIME:", tmp->data, 13) == 0) {
+             && m_strncmp("X-Mutt-SMIME:", tmp->data, 13) == 0) {
       hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1);
       hdr->security |= APPLICATION_SMIME;
 
@@ -362,7 +366,7 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
     }
 
 #ifdef MIXMASTER
-    else if (safe_strncmp ("X-Mutt-Mix:", tmp->data, 11) == 0) {
+    else if (m_strncmp("X-Mutt-Mix:", tmp->data, 11) == 0) {
       char *t;
 
       mutt_free_list (&hdr->chain);
@@ -403,8 +407,7 @@ int mutt_parse_crypt_hdr (char *p, int set_signas)
   if (!WithCrypto)
     return 0;
 
-  SKIPWS (p);
-  for (; *p; p++) {
+  for (p = vskipspaces(p); *p; p++) {
 
     switch (*p) {
     case 'e':
@@ -506,7 +509,7 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
   int rv = -1;
   STATE s;
 
-  memset (&s, 0, sizeof (s));
+  p_clear(&s, 1);
 
   if (!fp && (msg = mx_open_message (ctx, hdr->msgno)) == NULL)
     return (-1);
@@ -518,14 +521,14 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
 
   /* parse the message header and MIME structure */
 
-  fseek (fp, hdr->offset, 0);
+  fseeko (fp, hdr->offset, 0);
   newhdr->offset = hdr->offset;
   newhdr->env = mutt_read_rfc822_header (fp, newhdr, 1, weed);
   newhdr->content->length = hdr->content->length;
   mutt_parse_part (fp, newhdr->content);
 
-  FREE (&newhdr->env->message_id);
-  FREE (&newhdr->env->mail_followup_to);        /* really? */
+  p_delete(&newhdr->env->message_id);
+  p_delete(&newhdr->env->mail_followup_to);        /* really? */
 
   /* decrypt pgp/mime encoded messages */
 
@@ -605,8 +608,8 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
 
     file[0] = '\0';
     if (b->filename) {
-      strfcpy (file, b->filename, sizeof (file));
-      b->d_filename = safe_strdup (b->filename);
+      m_strcpy(file, sizeof(file), b->filename);
+      b->d_filename = m_strdup(b->filename);
     }
     else {
       /* avoid Content-Disposition: header with temporary filename */
@@ -629,7 +632,7 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
       mutt_delete_parameter ("x-mutt-noconv", &b->parameter);
     }
 
-    mutt_adv_mktemp (file, sizeof (file));
+    mutt_adv_mktemp (NULL, file, sizeof (file));
     if ((s.fpout = safe_fopen (file, "w")) == NULL)
       goto bail;