]> diplodocus.org Git - nmh/blobdiff - uip/mhlsbr.c
Fixed MIME parser so it can read binary content.
[nmh] / uip / mhlsbr.c
index 9a35a816ff15ddf3056d0a39d7a5a794bc529b6f..81704d0ed58f9567dc9470ee814ca70b80957996 100644 (file)
@@ -545,7 +545,7 @@ static void
 mhl_format (char *file, int length, int width)
 {
     int i;
-    char *bp, *cp, **ip;
+    char *bp, **ip;
     char *ap, name[NAMESZ];
     struct mcomp *c1;
     struct stat st;
@@ -560,8 +560,7 @@ mhl_format (char *file, int length, int width)
                && dev == st.st_dev
                && ino == st.st_ino)
            goto out;
-       else
-           free_queue (&fmthd, &fmttl);
+        free_queue (&fmthd, &fmttl);
     }
 
     if ((fp = fopen (etcpath (file), "r")) == NULL)
@@ -591,8 +590,7 @@ mhl_format (char *file, int length, int width)
        if (*bp == ';')
            continue;
 
-       if ((cp = strchr(bp, '\n')))
-           *cp = 0;
+        TrimSuffixC(bp, '\n');
 
        if (*bp == ':') {
            (void) add_queue (&fmthd, &fmttl, NULL, bp + 1, CLEARTEXT);
@@ -614,7 +612,7 @@ mhl_format (char *file, int length, int width)
                    int n = 0;
 
                    /* split the fields */
-                   tmparray = brkstring (getcpy (++parptr), ",", NULL);
+                   tmparray = brkstring (mh_xstrdup(++parptr), ",", NULL);
 
                    /* count number of fields split */
                    p = tmparray;
@@ -645,14 +643,14 @@ mhl_format (char *file, int length, int width)
                if (!c1->c_nfs && global.c_nfs) {
                    if (c1->c_flags & DATEFMT) {
                        if (global.c_flags & DATEFMT) {
-                           c1->c_nfs = getcpy (global.c_nfs);
+                           c1->c_nfs = mh_xstrdup(global.c_nfs);
                            compile_formatfield(c1);
                        }
                    }
                    else
                        if (c1->c_flags & ADDRFMT) {
                            if (global.c_flags & ADDRFMT) {
-                               c1->c_nfs = getcpy (global.c_nfs);
+                               c1->c_nfs = mh_xstrdup(global.c_nfs);
                                compile_formatfield(c1);
                            }
                        }
@@ -778,7 +776,7 @@ evalvar (struct mcomp *c1)
            return 1;
        }
 
-       args = (struct arglist *) mh_xcalloc ((size_t) 1, sizeof(struct arglist));
+       NEW0(args);
 
        if (arglist_tail)
            arglist_tail->a_next = args;
@@ -836,7 +834,7 @@ ptos (char *name, char **s)
     }
     c = *parptr;
     *parptr = 0;
-    *s = getcpy (cp);
+    *s = mh_xstrdup(cp);
     if ((*parptr = c) == '"')
        parptr++;
     return 0;
@@ -904,7 +902,7 @@ process (char *folder, char *fname, int ofilen, int ofilec)
            } else {
                filesize = 0;
            }
-           cp = folder ? concat (folder, ":", fname2, NULL) : getcpy (fname2);
+           cp = folder ? concat (folder, ":", fname2, NULL) : mh_xstrdup(fname2);
            if (ontty != PITTY)
                SIGNAL (SIGINT, intrser);
            mhlfile (fp, cp, ofilen, ofilec);  /* FALL THROUGH! */
@@ -990,7 +988,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                        nmh_clear_screen ();
                }
                else
-                   printf ("\n");
+                   putchar('\n');
                break;
 
            default: 
@@ -1188,18 +1186,15 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
 
     (q = &pq)->pq_next = NULL;
     while ((cp = getname (ap))) {
-       if ((p = (struct pqpair *) mh_xcalloc ((size_t) 1, sizeof(*p))) == NULL)
-           adios (NULL, "unable to allocate pqpair memory");
-       else {
-           if ((mp = getm (cp, NULL, 0, error, sizeof(error))) == NULL) {
-               p->pq_text = getcpy (cp);
-               p->pq_error = getcpy (error);
-           } else {
-               p->pq_text = getcpy (mp->m_text);
-               mnfree (mp);
-           }
-           q = (q->pq_next = p);
-       }
+       NEW0(p);
+        if ((mp = getm (cp, NULL, 0, error, sizeof(error))) == NULL) {
+            p->pq_text = mh_xstrdup(cp);
+            p->pq_error = mh_xstrdup(error);
+        } else {
+            p->pq_text = getcpy (mp->m_text);
+            mnfree (mp);
+        }
+        q = (q->pq_next = p);
     }
 
     for (p = pq.pq_next; p; p = q) {
@@ -1217,7 +1212,7 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
 
        fmt_scan (c1->c_fmt, scanl, BUFSIZ - 1, dat, NULL);
        buffer = charstring_buffer_copy (scanl);
-       if (strlen (buffer) > 0) {
+       if (*buffer) {
            if (c2->c_text)
                c2->c_text = add (",\n", c2->c_text);
            if (*(cp = buffer + strlen (buffer) - 1) == '\n')
@@ -1244,22 +1239,19 @@ add_queue (struct mcomp **head, struct mcomp **tail, char *name, char *text, int
 {
     struct mcomp *c1;
 
-    if ((c1 = (struct mcomp *) mh_xcalloc ((size_t) 1, sizeof(*c1))) == NULL)
-       adios (NULL, "unable to allocate comp memory");
-    else {
-       c1->c_flags = flags & ~INIT;
-       if ((c1->c_name = name ? getcpy (name) : NULL))
-           c1->c_flags |= mcomp_flags (c1->c_name);
-       c1->c_text = text ? getcpy (text) : NULL;
-       if (flags & INIT) {
-           if (global.c_ovtxt)
-               c1->c_ovtxt = getcpy (global.c_ovtxt);
-           c1->c_offset = global.c_offset;
-           c1->c_ovoff = global. c_ovoff;
-           c1->c_width = c1->c_length = 0;
-           c1->c_cwidth = global.c_cwidth;
-           c1->c_flags |= global.c_flags & GFLAGS;
-       }
+    NEW0(c1);
+    c1->c_flags = flags & ~INIT;
+    if ((c1->c_name = name ? mh_xstrdup(name) : NULL))
+        c1->c_flags |= mcomp_flags (c1->c_name);
+    c1->c_text = text ? mh_xstrdup(text) : NULL;
+    if (flags & INIT) {
+        if (global.c_ovtxt)
+            c1->c_ovtxt = mh_xstrdup(global.c_ovtxt);
+        c1->c_offset = global.c_offset;
+        c1->c_ovoff = global. c_ovoff;
+        c1->c_width = c1->c_length = 0;
+        c1->c_cwidth = global.c_cwidth;
+        c1->c_flags |= global.c_flags & GFLAGS;
     }
     if (*head == NULL)
        *head = c1;