code simplifications.
[apps/madmutt.git] / handler.c
index 27bfb08..5df2b21 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -769,7 +769,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 +839,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 +955,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 +991,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) {
@@ -1171,7 +1179,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];
@@ -1290,6 +1298,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 +1313,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 +1325,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 +1333,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 +1352,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 (tok == MIME_APPLICATION_PGP_ENCRYPTED)
         handler = crypt_pgp_encrypted_handler;
     }
 
@@ -1364,7 +1371,6 @@ int mutt_body_handler (BODY * b, STATE * s)
       handler = crypt_smime_application_smime_handler;
   }
 
-
   if (plaintext || handler) {
     fseeko (s->fpin, b->offset, 0);