]> diplodocus.org Git - nmh/blobdiff - uip/mhparse.c
getpass.c: Move interface to own file.
[nmh] / uip / mhparse.c
index c49d31f53f22a048608334eca2c49aa228b8efc1..9b72d91f033e48b25f88879143dc6727b65762c8 100644 (file)
@@ -5,16 +5,26 @@
  * complete copyright information.
  */
 
-#include <h/mh.h>
+#include "h/mh.h"
+#include "sbr/r1bindex.h"
+#include "sbr/ruserpass.h"
+#include "sbr/fmt_rfc2047.h"
+#include "sbr/uprf.h"
+#include "sbr/check_charset.h"
+#include "sbr/getcpy.h"
+#include "sbr/context_find.h"
+#include "sbr/pidstatus.h"
+#include "sbr/arglist.h"
+#include "sbr/error.h"
 #include <fcntl.h>
-#include <h/md5.h>
-#include <h/mts.h>
-#include <h/tws.h>
-#include <h/mime.h>
-#include <h/mhparse.h>
-#include <h/utils.h>
+#include "h/md5.h"
+#include "h/mts.h"
+#include "h/tws.h"
+#include "h/mime.h"
+#include "h/mhparse.h"
+#include "h/utils.h"
 #include "mhmisc.h"
-#include <h/mhcachesbr.h>
+#include "h/mhcachesbr.h"
 #include "sbr/m_mktemp.h"
 #include "mhfree.h"
 #ifdef HAVE_ICONV
@@ -361,10 +371,10 @@ get_content (FILE *in, char *file, int toplevel)
 
        case LENERR:
        case FMTERR:
-           adios (NULL, "message format error in component #%d", compnum);
+           die("message format error in component #%d", compnum);
 
        default:
-           adios (NULL, "getfld() returned %d", state);
+           die("getfld() returned %d", state);
        }
 
        /* break out of the loop */
@@ -1082,7 +1092,7 @@ InitText (CT ct)
 static int
 InitMultiPart (CT ct)
 {
-    int        inout;
+    bool inout;
     long last, pos;
     char *cp, *dp;
     PM pm;
@@ -1175,7 +1185,7 @@ InitMultiPart (CT ct)
     last = ct->c_end;
     next = &m->mp_parts;
     part = NULL;
-    inout = 1;
+    inout = true;
 
     while ((gotlen = getline(&bufp, &buflen, fp)) != -1) {
        if (pos > last)
@@ -1202,10 +1212,10 @@ next_part:
            part->mp_part = p;
            pos = p->c_begin;
            fseek (fp, pos, SEEK_SET);
-           inout = 0;
+           inout = false;
        } else {
            if (strcmp (bufp + 2, m->mp_start) == 0) {
-               inout = 1;
+               inout = true;
 end_part:
                p = part->mp_part;
                p->c_end = ftell(fp) - (gotlen + 1);
@@ -1377,7 +1387,8 @@ prefer_parts(CT ct)
    example, a text/plain part before a text/html part in a
    multipart/alternative part, for example, where it belongs. */
 void
-reverse_alternative_parts (CT ct) {
+reverse_alternative_parts (CT ct)
+{
     if (ct->c_type == CT_MULTIPART) {
         struct multipart *m = (struct multipart *) ct->c_ctparams;
         struct part *part;
@@ -1511,7 +1522,7 @@ invalid_param:
                                adios ("failed", "fread");
 
                            case OK:
-                               adios (NULL, "unexpected EOF from fread");
+                               die("unexpected EOF from fread");
 
                            default:
                                bp += cc, size -= cc;
@@ -1745,7 +1756,8 @@ static int
 openBase64 (CT ct, char **file)
 {
     ssize_t cc, len;
-    int fd, own_ct_fp = 0;
+    int fd;
+    bool own_ct_fp = false;
     char *cp, *buffer = NULL;
     /* sbeck -- handle suffixes */
     CI ci;
@@ -1780,7 +1792,7 @@ openBase64 (CT ct, char **file)
        if (ce->ce_unlink) {
            /* Create temporary file with filename extension. */
            if ((ce->ce_file = m_mktemps(invo_name, cp, NULL, NULL)) == NULL) {
-               adios(NULL, "unable to create temporary file in %s",
+               die("unable to create temporary file in %s",
                      get_temp_dir());
            }
        } else {
@@ -1789,7 +1801,7 @@ openBase64 (CT ct, char **file)
     } else if (*file == NULL) {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -1801,7 +1813,7 @@ openBase64 (CT ct, char **file)
     }
 
     if ((len = ct->c_end - ct->c_begin) < 0)
-       adios (NULL, "internal error(1)");
+       die("internal error(1)");
 
     buffer = mh_xmalloc (len + 1);
 
@@ -1810,7 +1822,7 @@ openBase64 (CT ct, char **file)
            content_error (ct->c_file, ct, "unable to open for reading");
            return NOTOK;
        }
-       own_ct_fp = 1;
+       own_ct_fp = true;
     }
 
     lseek (fd = fileno (ct->c_fp), (off_t) ct->c_begin, SEEK_SET);
@@ -1928,7 +1940,8 @@ InitQuoted (CT ct)
 static int
 openQuoted (CT ct, char **file)
 {
-    int        cc, digested, len, quoted, own_ct_fp = 0;
+    int        cc, digested, len, quoted;
+    bool own_ct_fp = false;
     char *cp, *ep;
     char *bufp = NULL;
     size_t buflen;
@@ -1965,7 +1978,7 @@ openQuoted (CT ct, char **file)
        if (ce->ce_unlink) {
            /* Create temporary file with filename extension. */
            if ((ce->ce_file = m_mktemps(invo_name, cp, NULL, NULL)) == NULL) {
-               adios(NULL, "unable to create temporary file in %s",
+               die("unable to create temporary file in %s",
                      get_temp_dir());
            }
        } else {
@@ -1974,7 +1987,7 @@ openQuoted (CT ct, char **file)
     } else if (*file == NULL) {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -1986,23 +1999,20 @@ openQuoted (CT ct, char **file)
     }
 
     if ((len = ct->c_end - ct->c_begin) < 0)
-       adios (NULL, "internal error(2)");
+       die("internal error(2)");
 
     if (! ct->c_fp) {
        if ((ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
            content_error (ct->c_file, ct, "unable to open for reading");
            return NOTOK;
        }
-       own_ct_fp = 1;
+       own_ct_fp = true;
     }
 
     if ((digested = ct->c_digested))
        MD5Init (&mdContext);
 
     quoted = 0;
-#ifdef lint
-    mask = 0;
-#endif
 
     fseek (ct->c_fp, ct->c_begin, SEEK_SET);
     while (len > 0) {
@@ -2103,7 +2113,7 @@ openQuoted (CT ct, char **file)
        unsigned char digest[16];
 
        MD5Final (digest, &mdContext);
-       if (memcmp((char *) digest, (char *) ct->c_digest,
+       if (memcmp(digest, ct->c_digest,
                   sizeof digest))
            content_error (NULL, ct,
                           "content integrity suspect (digest mismatch) -- continuing");
@@ -2151,7 +2161,8 @@ Init7Bit (CT ct)
 int
 open7Bit (CT ct, char **file)
 {
-    int        cc, fd, len, own_ct_fp = 0;
+    int        cc, fd, len;
+    bool own_ct_fp = false;
     char buffer[BUFSIZ];
     /* sbeck -- handle suffixes */
     char *cp;
@@ -2184,7 +2195,7 @@ open7Bit (CT ct, char **file)
        if (ce->ce_unlink) {
            /* Create temporary file with filename extension. */
            if ((ce->ce_file = m_mktemps(invo_name, cp, NULL, NULL)) == NULL) {
-               adios(NULL, "unable to create temporary file in %s",
+               die("unable to create temporary file in %s",
                      get_temp_dir());
            }
        } else {
@@ -2193,7 +2204,7 @@ open7Bit (CT ct, char **file)
     } else if (*file == NULL) {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -2242,14 +2253,14 @@ open7Bit (CT ct, char **file)
     }
 
     if ((len = ct->c_end - ct->c_begin) < 0)
-       adios (NULL, "internal error(3)");
+       die("internal error(3)");
 
     if (! ct->c_fp) {
        if ((ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
            content_error (ct->c_file, ct, "unable to open for reading");
            return NOTOK;
        }
-       own_ct_fp = 1;
+       own_ct_fp = true;
     }
 
     lseek (fd = fileno (ct->c_fp), (off_t) ct->c_begin, SEEK_SET);
@@ -2440,7 +2451,9 @@ InitFTP (CT ct)
 static int
 openFTP (CT ct, char **file)
 {
-    int        cachetype, caching, fd;
+    int        cachetype;
+    bool caching;
+    int fd;
     int len, buflen;
     char *bp, *ftp, *user, *pass;
     char buffer[BUFSIZ], cachefile[BUFSIZ];
@@ -2525,14 +2538,14 @@ openFTP (CT ct, char **file)
     }
 
     ce->ce_unlink = (*file == NULL);
-    caching = 0;
+    caching = false;
     cachefile[0] = '\0';
     if ((!e->eb_permission || strcasecmp (e->eb_permission, "read-write"))
            && find_cache (NULL, wcachesw, &cachetype, e->eb_content->c_id,
                cachefile, sizeof(cachefile)) != NOTOK) {
        if (*file == NULL) {
            ce->ce_unlink = 0;
-           caching = 1;
+           caching = true;
        }
     }
 
@@ -2543,7 +2556,7 @@ openFTP (CT ct, char **file)
     else {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -2728,7 +2741,7 @@ openMail (CT ct, char **file)
     if (*file == NULL) {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -2772,7 +2785,9 @@ openURL (CT ct, char **file)
     CE ce = &ct->c_cefile;
     char *urlprog, *program;
     char buffer[BUFSIZ], cachefile[BUFSIZ];
-    int fd, caching, cachetype;
+    int fd;
+    bool caching;
+    int cachetype;
     struct msgs_array args = { 0, 0, NULL};
     pid_t child_id;
 
@@ -2801,14 +2816,14 @@ openURL (CT ct, char **file)
     }
 
     ce->ce_unlink = (*file == NULL);
-    caching = 0;
+    caching = false;
     cachefile[0] = '\0';
 
     if (find_cache(NULL, wcachesw, &cachetype, e->eb_content->c_id,
                   cachefile, sizeof(cachefile)) != NOTOK) {
        if (*file == NULL) {
            ce->ce_unlink = 0;
-           caching = 1;
+           caching = true;
        }
     }
 
@@ -2819,7 +2834,7 @@ openURL (CT ct, char **file)
     else {
        char *tempfile;
        if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
+           die("unable to create temporary file in %s",
                  get_temp_dir());
        }
        ce->ce_file = mh_xstrdup(tempfile);
@@ -2939,7 +2954,7 @@ get_leftover_mp_content (CT ct, int before /* or after */)
 {
     struct multipart *m = (struct multipart *) ct->c_ctparams;
     char *boundary;
-    int found_boundary = 0;
+    bool found_boundary = false;
     int max = BUFSIZ;
     char *bufp = NULL;
     size_t buflen;
@@ -2984,11 +2999,11 @@ get_leftover_mp_content (CT ct, int before /* or after */)
 
         if (before) {
             if (! strcmp (bufp, boundary)) {
-                found_boundary = 1;
+                found_boundary = true;
             }
         } else {
             if (! found_boundary  &&  ! strcmp (bufp, boundary)) {
-                found_boundary = 1;
+                found_boundary = true;
                 continue;
             }
         }
@@ -3042,7 +3057,8 @@ get_leftover_mp_content (CT ct, int before /* or after */)
 
 
 char *
-ct_type_str (int type) {
+ct_type_str (int type)
+{
     switch (type) {
     case CT_APPLICATION:
         return "application";
@@ -3067,7 +3083,8 @@ ct_type_str (int type) {
 
 
 char *
-ct_subtype_str (int type, int subtype) {
+ct_subtype_str (int type, int subtype)
+{
     switch (type) {
     case CT_APPLICATION:
         switch (subtype) {
@@ -3122,7 +3139,8 @@ ct_subtype_str (int type, int subtype) {
 
 
 int
-ct_str_type (const char *type) {
+ct_str_type (const char *type)
+{
     struct str2init *s2i;
 
     for (s2i = str2cts; s2i->si_key; ++s2i) {
@@ -3139,7 +3157,8 @@ ct_str_type (const char *type) {
 
 
 int
-ct_str_subtype (int type, const char *subtype) {
+ct_str_subtype (int type, const char *subtype)
+{
     struct k2v *kv;
 
     switch (type) {
@@ -3179,7 +3198,8 @@ ct_str_subtype (int type, const char *subtype) {
 
 /* Find the content type and InitFunc for the CT. */
 const struct str2init *
-get_ct_init (int type) {
+get_ct_init (int type)
+{
     const struct str2init *sp;
 
     for (sp = str2cts; sp->si_key; ++sp) {
@@ -3192,7 +3212,8 @@ get_ct_init (int type) {
 }
 
 const char *
-ce_str (int encoding) {
+ce_str (int encoding)
+{
     switch (encoding) {
     case CE_BASE64:
         return "base64";
@@ -3215,7 +3236,8 @@ ce_str (int encoding) {
 
 /* Find the content type and InitFunc for the content encoding method. */
 const struct str2init *
-get_ce_method (const char *method) {
+get_ce_method (const char *method)
+{
     struct str2init *sp;
 
     for (sp = str2ces; sp->si_key; ++sp) {
@@ -3269,7 +3291,9 @@ parse_header_attrs (const char *filename, const char *fieldname,
 
     while (*cp == ';') {
        char *dp, *vp, *up, *nameptr, *valptr, *charset = NULL, *lang = NULL;
-       int encoded = 0, partial = 0, len = 0, index = 0;
+       bool encoded = false;
+        bool partial = false;
+        int len = 0, index = 0;
 
        cp++;
        while (isspace ((unsigned char) *cp))
@@ -3319,11 +3343,11 @@ parse_header_attrs (const char *filename, const char *fieldname,
 
        for (vp = cp; vp < up; vp++) {
            if (*vp == '*' && vp < up - 1) {
-               partial = 1;
+               partial = true;
                continue;
            }
             if (*vp == '*' && vp == up - 1) {
-               encoded = 1;
+               encoded = true;
            } else if (partial) {
                if (isdigit((unsigned char) *vp))
                    index = *vp - '0' + index * 10;
@@ -3635,7 +3659,8 @@ bad_quote:
  */
 
 char *
-content_charset (CT ct) {
+content_charset (CT ct)
+{
     char *ret_charset = NULL;
 
     ret_charset = get_param(ct->c_ctinfo.ci_first_pm, "charset", '?', 0);
@@ -3870,7 +3895,7 @@ param_len(PM pm, int index, size_t valueoff, int *encode, int *cont,
        if (! pm->pm_charset) {
            pm->pm_charset = mh_xstrdup(write_charset_8bit());
            if (strcasecmp(pm->pm_charset, "US-ASCII") == 0)
-               adios(NULL, "8-bit characters in parameter \"%s\", but "
+               die("8-bit characters in parameter \"%s\", but "
                      "local character set is US-ASCII", pm->pm_name);
        }
        if (! pm->pm_lang)
@@ -4124,7 +4149,8 @@ get_param(PM first, const char *name, char replace, int fetchonly)
  * necessary
  */
 
-char *get_param_value(PM pm, char replace)
+char *
+get_param_value(PM pm, char replace)
 {
     static char buffer[4096];          /* I hope no parameters are larger */
     size_t bufsize = sizeof(buffer);