]> diplodocus.org Git - nmh/blobdiff - uip/mhparse.c
mhlsbr.c: Don't need to `else' after longjmp() at end of then-block.
[nmh] / uip / mhparse.c
index 71405616cba9a7b0f5bd4b5a1008d936e36a0353..904c12376448a69b8968b213815680c955114b15 100644 (file)
@@ -13,6 +13,7 @@
 #include <h/mime.h>
 #include <h/mhparse.h>
 #include <h/utils.h>
+#include "mhmisc.h"
 #include <h/mhcachesbr.h>
 #include "../sbr/m_mktemp.h"
 #include "mhfree.h"
@@ -33,19 +34,19 @@ int checksw = 0;    /* check Content-MD5 field */
  * 3) Suppress the warning about extraneous trailing ';' in header parameter
  *    lists.
  */
-int skip_mp_cte_check;
-int suppress_bogus_mp_content_warning;
-int bogus_mp_content;
-int suppress_extraneous_trailing_semicolon_warning;
+bool skip_mp_cte_check;
+bool suppress_bogus_mp_content_warning;
+bool bogus_mp_content;
+bool suppress_extraneous_trailing_semicolon_warning;
 
 /*
  * By default, suppress warning about multiple MIME-Version header fields.
  */
-int suppress_multiple_mime_version_warning = 1;
+bool suppress_multiple_mime_version_warning = true;
 
 /* list of preferred type/subtype pairs, for -prefer */
-char *preferred_types[NPREFS],
-     *preferred_subtypes[NPREFS];
+char *preferred_types[NPREFS];
+char *preferred_subtypes[NPREFS];
 int npreferred;
 
 
@@ -106,11 +107,6 @@ static struct k2v EncodingType[] = {
 };
 
 
-/* mhmisc.c */
-int part_ok (CT);
-int type_ok (CT, int);
-void content_error (char *, CT, char *, ...);
-
 /*
  * static prototypes
  */
@@ -173,7 +169,7 @@ struct str2init str2ces[] = {
 /*
  * NOTE WELL: si_key MUST NOT have value of NOTOK
  *
- * si_key is 1 if access method is anonymous.
+ * si_val is 1 if access method is anonymous.
  */
 struct str2init str2methods[] = {
     { "afs",         1,        InitFile },
@@ -202,7 +198,7 @@ parse_mime (char *file)
     size_t n;
     struct stat statbuf;
 
-    bogus_mp_content = 0;
+    bogus_mp_content = false;
 
     /*
      * Check if file is actually standard input
@@ -300,7 +296,7 @@ get_content (FILE *in, char *file, int toplevel)
     /* allocate the content structure */
     NEW0(ct);
     ct->c_fp = in;
-    ct->c_file = add (file, NULL);
+    ct->c_file = mh_xstrdup(FENDNULL(file));
     ct->c_begin = ftell (ct->c_fp) + 1;
 
     /*
@@ -391,7 +387,7 @@ get_content (FILE *in, char *file, int toplevel)
            char c, *cp, *dp;
            char *vrsn;
 
-           vrsn = add (hp->value, NULL);
+           vrsn = mh_xstrdup(FENDNULL(hp->value));
 
            /* Now, cleanup this field */
            cp = vrsn;
@@ -474,7 +470,7 @@ get_content (FILE *in, char *file, int toplevel)
            }
 
            /* get copy of this field */
-           ct->c_celine = cp = add (hp->value, NULL);
+           ct->c_celine = cp = mh_xstrdup(FENDNULL(hp->value));
 
            while (isspace ((unsigned char) *cp))
                cp++;
@@ -512,7 +508,7 @@ get_content (FILE *in, char *file, int toplevel)
                goto next_header;
            }
 
-           ep = cp = add (hp->value, NULL);    /* get a copy */
+           ep = cp = mh_xstrdup(FENDNULL(hp->value)); /* get a copy */
 
            while (isspace ((unsigned char) *cp))
                cp++;
@@ -642,7 +638,7 @@ get_ctinfo (char *cp, CT ct, int magic)
     ci = &ct->c_ctinfo;
 
     /* store copy of Content-Type line */
-    cp = ct->c_ctline = add (cp, NULL);
+    cp = ct->c_ctline = mh_xstrdup(FENDNULL(cp));
 
     while (isspace ((unsigned char) *cp))      /* trim leading spaces */
        cp++;
@@ -891,7 +887,7 @@ get_dispo (char *cp, CT ct, int buildflag)
      * time.
      */
 
-    dispoheader = cp = add(cp, NULL);
+    dispoheader = cp = mh_xstrdup(FENDNULL(cp));
 
     while (isspace ((unsigned char) *cp))      /* trim leading spaces */
        cp++;
@@ -1227,7 +1223,7 @@ end_part:
     if (! suppress_bogus_mp_content_warning) {
         inform("bogus multipart content in message %s", ct->c_file);
     }
-    bogus_mp_content = 1;
+    bogus_mp_content = true;
 
     if (!inout && part) {
        p = part->mp_part;
@@ -1436,7 +1432,7 @@ InitMessage (CT ct)
                /* scan for parameters "id", "number", and "total" */
                for (pm = ci->ci_first_pm; pm; pm = pm->pm_next) {
                    if (!strcasecmp (pm->pm_name, "id")) {
-                       p->pm_partid = add (pm->pm_value, NULL);
+                       p->pm_partid = mh_xstrdup(FENDNULL(pm->pm_value));
                        continue;
                    }
                    if (!strcasecmp (pm->pm_name, "number")) {
@@ -1841,7 +1837,10 @@ openBase64 (CT ct, char **file)
     *cp = '\0';
 
     if (decodeBase64 (buffer, &decoded, &decoded_len, ct->c_type == CT_TEXT,
-                      ct->c_digested ? digest : NULL) == OK) {
+                      ct->c_digested ? digest : NULL) != OK)
+        goto clean_up;
+
+    {
         size_t i;
         unsigned char *decoded_p = decoded;
         for (i = 0; i < decoded_len; ++i) {
@@ -1864,8 +1863,6 @@ openBase64 (CT ct, char **file)
                 }
             }
         }
-    } else {
-        goto clean_up;
     }
 
     fseek (ct->c_fp, 0L, SEEK_SET);
@@ -2110,9 +2107,8 @@ openQuoted (CT ct, char **file)
                   sizeof digest))
            content_error (NULL, ct,
                           "content integrity suspect (digest mismatch) -- continuing");
-       else
-           if (debugsw)
-               fprintf (stderr, "content integrity confirmed\n");
+       else if (debugsw)
+            fprintf (stderr, "content integrity confirmed\n");
     }
 
     fseek (ce->ce_fp, 0L, SEEK_SET);
@@ -2214,7 +2210,7 @@ open7Bit (CT ct, char **file)
 
        len = 0;
        fprintf (ce->ce_fp, "%s: %s/%s", TYPE_FIELD, ci->ci_type, ci->ci_subtype);
-       len += strlen (TYPE_FIELD) + 2 + strlen (ci->ci_type)
+       len += LEN(TYPE_FIELD) + 2 + strlen (ci->ci_type)
            + 1 + strlen (ci->ci_subtype);
        buffer = output_params(len, ci->ci_first_pm, &len, 0);
 
@@ -2330,7 +2326,7 @@ openExternal (CT ct, CT cb, CE ce, char **file, int *fd)
        goto ready_already;
     }
 
-    if (find_cache (ct, rcachesw, (int *) 0, cb->c_id,
+    if (find_cache(ct, rcachesw, NULL, cb->c_id,
                cachefile, sizeof(cachefile)) != NOTOK) {
        if ((ce->ce_fp = fopen (cachefile, "r"))) {
            ce->ce_file = mh_xstrdup(cachefile);
@@ -2416,12 +2412,10 @@ openFile (CT ct, char **file)
            if (ferror (gp)) {
                admonish (ce->ce_file, "error reading");
                (void) m_unlink (cachefile);
-           }
-           else
-               if (ferror (fp)) {
-                   admonish (cachefile, "error writing");
-                   (void) m_unlink (cachefile);
-               }
+           } else if (ferror (fp)) {
+                admonish (cachefile, "error writing");
+                (void) m_unlink (cachefile);
+            }
            fclose (fp);
        }
        umask (mask);
@@ -2627,12 +2621,10 @@ openFTP (CT ct, char **file)
                if (ferror (gp)) {
                    admonish (ce->ce_file, "error reading");
                    (void) m_unlink (cachefile);
-               }
-               else
-                   if (ferror (fp)) {
-                       admonish (cachefile, "error writing");
-                       (void) m_unlink (cachefile);
-                   }
+               } else if (ferror (fp)) {
+                    admonish (cachefile, "error writing");
+                    (void) m_unlink (cachefile);
+                }
                fclose (fp);
            }
            umask (mask);
@@ -2897,7 +2889,7 @@ openURL (CT ct, char **file)
 
     fseeko(ce->ce_fp, 0, SEEK_SET);
     *file = ce->ce_file;
-    return fd;
+    return fileno(ce->ce_fp);
 }