more useless and cluttered things.
[apps/madmutt.git] / handler.c
index 27bfb08..0746269 100644 (file)
--- a/handler.c
+++ b/handler.c
 #include "keymap.h"
 #include "copy.h"
 #include "charset.h"
-#include <lib-crypt/crypt.h>
+#include "crypt.h"
 #include "state.h"
 #include "attach.h"
-#include "lib.h"
-
 
 typedef int handler_f (BODY *, STATE *);
 typedef handler_f *handler_t;
@@ -769,7 +767,7 @@ static int alternative_handler (BODY * a, STATE * s)
     b->parts = mutt_parse_multipart(s->fpin,
                                     parameter_getval(a->parameter, "boundary"),
                                     (long)st.st_size,
-                                    !ascii_strcasecmp("digest", a->subtype));
+                                    mime_which_token(a->subtype, -1) == MIME_DIGEST);
   }
   else
     b = a;
@@ -839,18 +837,27 @@ static int alternative_handler (BODY * a, STATE * s)
       b = a;
     while (b) {
       if (b->type == TYPETEXT) {
-        if (!ascii_strcasecmp ("plain", b->subtype) && type <= TXTPLAIN) {
-          choice = b;
-          type = TXTPLAIN;
-        }
-        else if (!ascii_strcasecmp ("enriched", b->subtype)
-                 && type <= TXTENRICHED) {
-          choice = b;
-          type = TXTENRICHED;
-        }
-        else if (!ascii_strcasecmp ("html", b->subtype) && type <= TXTHTML) {
-          choice = b;
-          type = TXTHTML;
+        switch (mime_which_token(b->subtype, -1)) {
+          case MIME_PLAIN:
+            if (type <= TXTPLAIN) {
+              choice = b;
+              type = TXTPLAIN;
+            }
+            break;
+          case MIME_ENRICHED:
+            if (type <= TXTENRICHED) {
+              choice = b;
+              type = TXTENRICHED;
+            }
+            break;
+          case MIME_HTML:
+            if (type <= TXTHTML) {
+              choice = b;
+              type = TXTHTML;
+            }
+            break;
+          default:
+            break;
         }
       }
       b = b->next;
@@ -946,16 +953,15 @@ int mutt_can_decode (BODY * a)
     return (1);
   else if (a->type == TYPEMULTIPART) {
     BODY *p;
+    int tok = mime_which_token(a->subtype, -1);
 
-    if (ascii_strcasecmp (a->subtype, "signed") == 0 ||
-        ascii_strcasecmp (a->subtype, "encrypted") == 0)
-      return (1);
+    if (tok == MIME_SIGNED || tok == MIME_ENCRYPTED)
+      return 1;
 
     for (p = a->parts; p; p = p->next) {
       if (mutt_can_decode (p))
         return (1);
     }
-
   }
   else if (a->type == TYPEAPPLICATION) {
     if (mutt_is_application_pgp(a))
@@ -983,10 +989,10 @@ static int multipart_handler (BODY * a, STATE * s)
     b->parts = mutt_parse_multipart(s->fpin,
                                     parameter_getval(a->parameter, "boundary"),
                                     (long)st.st_size,
-                                    !ascii_strcasecmp("digest", a->subtype));
-  }
-  else
+                                    mime_which_token(a->subtype, -1) == MIME_DIGEST);
+  } else {
     b = a;
+  }
 
   for (p = b->parts, count = 1; p; p = p->next, count++) {
     if (s->flags & M_DISPLAY) {
@@ -1021,8 +1027,7 @@ static int multipart_handler (BODY * a, STATE * s)
     }
     rc = mutt_body_handler (p, s);
     state_putc ('\n', s);
-    if (rc || ((s->flags & M_REPLYING)
-        && (option (OPTINCLUDEONLYFIRST)) && (s->flags & M_FIRSTDONE)))
+    if (rc)
       break;
   }
 
@@ -1171,7 +1176,7 @@ static int external_body_handler (BODY * b, STATE * s)
   else
     expire = -1;
 
-  if (!ascii_strcasecmp (access_type, "x-mutt-deleted")) {
+  if (mime_which_token(access_type, -1) == MIME_X_MUTT_DELETED) {
     if (s->flags & (M_DISPLAY | M_PRINTING)) {
       char *length;
       char pretty_size[10];
@@ -1244,12 +1249,12 @@ void mutt_decode_attachment (BODY * b, STATE * s)
       const char *charset = parameter_getval(b->parameter, "charset");
 
       if (!charset)
-        charset = charset_getfirst(AssumedCharset);
-      if (charset && Charset)
-        cd = mutt_iconv_open (Charset, charset, M_ICONV_HOOK_FROM);
+        charset = charset_getfirst(mod_cset.assumed_charset);
+      if (charset && mod_cset.charset)
+        cd = mutt_iconv_open (mod_cset.charset, charset, M_ICONV_HOOK_FROM);
     } else {
       if (b->file_charset)
-        cd = mutt_iconv_open (Charset, b->file_charset, M_ICONV_HOOK_FROM);
+        cd = mutt_iconv_open (mod_cset.charset, b->file_charset, M_ICONV_HOOK_FROM);
     }
   }
 
@@ -1290,6 +1295,7 @@ int mutt_body_handler (BODY * b, STATE * s)
   int rc = 0;
 
   int oflags = s->flags;
+  int tok = mime_which_token(b->subtype, -1);
 
   /* first determine which handler to use to process this part */
 
@@ -1304,7 +1310,7 @@ int mutt_body_handler (BODY * b, STATE * s)
     rfc1524_entry_delete(&entry);
   }
   else if (b->type == TYPETEXT) {
-    if (ascii_strcasecmp ("plain", b->subtype) == 0) {
+    if (tok == MIME_PLAIN) {
       /* avoid copying this part twice since removing the transfer-encoding is
        * the only operation needed.
        */
@@ -1316,7 +1322,7 @@ int mutt_body_handler (BODY * b, STATE * s)
       else
         plaintext = 1;
     }
-    else if (ascii_strcasecmp ("enriched", b->subtype) == 0)
+    else if (tok == MIME_ENRICHED)
       handler = text_enriched_handler;
     else                        /* text body type without a handler */
       plaintext = 1;
@@ -1324,17 +1330,17 @@ int mutt_body_handler (BODY * b, STATE * s)
   else if (b->type == TYPEMESSAGE) {
     if (mutt_is_message_type (b))
       handler = message_handler;
-    else if (!ascii_strcasecmp ("delivery-status", b->subtype))
+    else if (tok == MIME_DELIVERY_STATUS)
       plaintext = 1;
-    else if (!ascii_strcasecmp ("external-body", b->subtype))
+    else if (tok == MIME_EXTERNAL_BODY)
       handler = external_body_handler;
   }
   else if (b->type == TYPEMULTIPART) {
     char *p;
 
-    if (ascii_strcasecmp ("alternative", b->subtype) == 0)
+    if (tok == MIME_ALTERNATIVE)
       handler = alternative_handler;
-    else if (ascii_strcasecmp ("signed", b->subtype) == 0) {
+    else if (tok == MIME_SIGNED) {
       p = parameter_getval(b->parameter, "protocol");
 
       if (!p)
@@ -1343,14 +1349,12 @@ int mutt_body_handler (BODY * b, STATE * s)
       else if (s->flags & M_VERIFY)
         handler = mutt_signed_handler;
     }
-    else if (m_strcasecmp("encrypted", b->subtype) == 0) {
+    else if (tok == MIME_ENCRYPTED) {
       p = parameter_getval(b->parameter, "protocol");
 
       if (!p)
-        mutt_error (_
-                    ("Error: multipart/encrypted has no protocol parameter!"));
-
-      else if (ascii_strcasecmp ("application/pgp-encrypted", p) == 0)
+        mutt_error(_("Error: multipart/encrypted has no protocol parameter!"));
+      else if (mime_which_token(p, -1) == MIME_APPLICATION_PGP_ENCRYPTED)
         handler = crypt_pgp_encrypted_handler;
     }
 
@@ -1364,7 +1368,6 @@ int mutt_body_handler (BODY * b, STATE * s)
       handler = crypt_smime_application_smime_handler;
   }
 
-
   if (plaintext || handler) {
     fseeko (s->fpin, b->offset, 0);
 
@@ -1379,7 +1382,7 @@ int mutt_body_handler (BODY * b, STATE * s)
       if (!plaintext) {
         /* decode to a tempfile, saving the original destination */
         fp = s->fpout;
-        s->fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(Tempdir), NULL);
+        s->fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL);
         if (!s->fpout) {
           mutt_error _("Unable to open temporary file!");
           goto bail;
@@ -1434,7 +1437,6 @@ int mutt_body_handler (BODY * b, STATE * s)
         s->fpin = fp;
       }
     }
-    s->flags |= M_FIRSTDONE;
   }
   else if (s->flags & M_DISPLAY) {
     state_mark_attach (s);
@@ -1451,7 +1453,6 @@ int mutt_body_handler (BODY * b, STATE * s)
   }
 
 bail:
-  s->flags = oflags | (s->flags & M_FIRSTDONE);
-
+  s->flags = oflags;
   return (rc);
 }