Use signed size parameter in post_entry()
[apps/madmutt.git] / postpone.c
index 73a1057..0d97216 100644 (file)
 #include <lib-lib/file.h>
 #include <lib-lib/mapping.h>
 
+#include <lib-mime/mime.h>
+
 #include "mutt.h"
 #include "enter.h"
 #include "handler.h"
 #include "mutt_menu.h"
 #include "rfc1524.h"
-#include "mime.h"
 #include "sort.h"
 #include "thread.h"
 #include "mx.h"
-#ifdef USE_IMAP
-#include "imap.h"
-#include "imap/mx_imap.h"
-#endif
-#include "mutt_crypt.h"
+#include <lib-crypt/crypt.h>
+
+#include <imap/imap.h>
+#include <imap/mx_imap.h>
 
 #include "lib/debug.h"
 
@@ -81,7 +81,6 @@ int mutt_num_postponed (int force)
   if (!Postponed)
     return 0;
 
-#ifdef USE_IMAP
   /* LastModify is useless for IMAP */
   if (imap_is_magic (Postponed, NULL) == M_IMAP) {
     if (force) {
@@ -97,7 +96,6 @@ int mutt_num_postponed (int force)
     }
     return PostCount;
   }
-#endif
 
   if (stat (Postponed, &st) == -1) {
     PostCount = 0;
@@ -149,7 +147,7 @@ void mutt_update_num_postponed (void)
   UpdateNumPostponed = 1;
 }
 
-static void post_entry (char *s, size_t slen, MUTTMENU * menu, int entry)
+static void post_entry (char *s, ssize_t slen, MUTTMENU * menu, int entry)
 {
   CONTEXT *ctx = (CONTEXT *) menu->data;
 
@@ -331,10 +329,9 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
       mutt_free_list (&tmp);
       tmp = next;
     }
-    else if ((WithCrypto & APPLICATION_PGP)
-             && (m_strncmp("Pgp:", tmp->data, 4) == 0       /* this is generated
-                                                                 * by old mutt versions
-                                                                 */
+    else if ((m_strncmp("Pgp:", tmp->data, 4) == 0       /* this is generated
+                                                          * by old mutt versions
+                                                          */
                  || m_strncmp("X-Mutt-PGP:", tmp->data, 11) == 0)) {
       hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1);
       hdr->security |= APPLICATION_PGP;
@@ -349,8 +346,7 @@ int mutt_get_postponed (CONTEXT * ctx, HEADER * hdr, HEADER ** cur, char *fcc,
       mutt_free_list (&tmp);
       tmp = next;
     }
-    else if ((WithCrypto & APPLICATION_SMIME)
-             && m_strncmp("X-Mutt-SMIME:", tmp->data, 13) == 0) {
+    else if (m_strncmp("X-Mutt-SMIME:", tmp->data, 13) == 0) {
       hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1);
       hdr->security |= APPLICATION_SMIME;
 
@@ -404,11 +400,7 @@ int mutt_parse_crypt_hdr (char *p, int set_signas)
   char pgp_sign_as[LONG_STRING] = "\0", *q;
   char smime_cryptalg[LONG_STRING] = "\0";
 
-  if (!WithCrypto)
-    return 0;
-
   for (p = vskipspaces(p); *p; p++) {
-
     switch (*p) {
     case 'e':
     case 'E':
@@ -487,11 +479,11 @@ int mutt_parse_crypt_hdr (char *p, int set_signas)
   }
 
   /* the cryptalg field must not be empty */
-  if ((WithCrypto & APPLICATION_SMIME) && *smime_cryptalg)
-    str_replace (&SmimeCryptAlg, smime_cryptalg);
+  if (*smime_cryptalg)
+    m_strreplace(&SmimeCryptAlg, smime_cryptalg);
 
-  if ((WithCrypto & APPLICATION_PGP) && (set_signas || *pgp_sign_as))
-    str_replace (&PgpSignAs, pgp_sign_as);
+  if (set_signas || *pgp_sign_as)
+    m_strreplace(&PgpSignAs, pgp_sign_as);
 
   return pgp;
 }
@@ -532,10 +524,10 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
 
   /* decrypt pgp/mime encoded messages */
 
-  if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME) & hdr->security)
-      && mutt_is_multipart_encrypted (newhdr->content)) {
-    int ccap =
-      WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME) & hdr->security;
+  if ((APPLICATION_PGP | APPLICATION_SMIME) & hdr->security
+      && mutt_is_multipart_encrypted (newhdr->content))
+  {
+    int ccap = (APPLICATION_PGP | APPLICATION_SMIME) & hdr->security;
     newhdr->security |= ENCRYPT | ccap;
     if (!crypt_valid_passphrase (ccap))
       goto err;
@@ -549,7 +541,7 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
         || b == NULL) {
     err:
       mx_close_message (&msg);
-      mutt_free_envelope (&newhdr->env);
+      envelope_delete(&newhdr->env);
       mutt_free_body (&newhdr->content);
       mutt_error _("Decryption failed.");
 
@@ -567,15 +559,13 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
    * resending messages 
    */
 
-  if (WithCrypto && mutt_is_multipart_signed (newhdr->content)) {
+  if (mutt_is_multipart_signed (newhdr->content)) {
     newhdr->security |= SIGN;
-    if ((WithCrypto & APPLICATION_PGP)
-        &&
-        ascii_strcasecmp (mutt_get_parameter
+    if (ascii_strcasecmp (mutt_get_parameter
                           ("protocol", newhdr->content->parameter),
                           "application/pgp-signature") == 0)
       newhdr->security |= APPLICATION_PGP;
-    else if ((WithCrypto & APPLICATION_SMIME))
+    else
       newhdr->security |= APPLICATION_SMIME;
 
     /* destroy the signature */
@@ -637,15 +627,14 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
       goto bail;
 
 
-    if ((WithCrypto & APPLICATION_PGP)
-        && (mutt_is_application_pgp (b) & (ENCRYPT | SIGN))) {
+    if (mutt_is_application_pgp (b) & (ENCRYPT | SIGN)) {
 
       mutt_body_handler (b, &s);
 
       newhdr->security |= mutt_is_application_pgp (newhdr->content);
 
       b->type = TYPETEXT;
-      str_replace (&b->subtype, "plain");
+      m_strreplace(&b->subtype, "plain");
       mutt_delete_parameter ("x-action", &b->parameter);
     }
     else
@@ -654,7 +643,7 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
     if (safe_fclose (&s.fpout) != 0)
       goto bail;
 
-    str_replace (&b->filename, file);
+    m_strreplace(&b->filename, file);
     b->unlink = 1;
 
     mutt_stamp_attachment (b);
@@ -667,12 +656,9 @@ int mutt_prepare_template (FILE * fp, CONTEXT * ctx, HEADER * newhdr,
   /* Fix encryption flags. */
 
   /* No inline if multipart. */
-  if (WithCrypto && (newhdr->security & INLINE) && newhdr->content->next)
+  if ((newhdr->security & INLINE) && newhdr->content->next)
     newhdr->security &= ~INLINE;
 
-  /* Do we even support multiple mechanisms? */
-  newhdr->security &= WithCrypto | ~(APPLICATION_PGP | APPLICATION_SMIME);
-
   /* Theoretically, both could be set. Take the one the user wants to set by default. */
   if ((newhdr->security & APPLICATION_PGP)
       && (newhdr->security & APPLICATION_SMIME)) {
@@ -693,7 +679,7 @@ bail:
     mx_close_message (&msg);
 
   if (rv == -1) {
-    mutt_free_envelope (&newhdr->env);
+    envelope_delete(&newhdr->env);
     mutt_free_body (&newhdr->content);
   }