Remove dead code: FLDEOF and BODYEOF are never set
[mmh] / uip / pick.c
index b3bac28..984d80b 100644 (file)
@@ -381,6 +381,7 @@ static struct swit parswit[] = {
 
 
 static char linebuf[LBSIZE + 1];
+static char decoded_linebuf[LBSIZE + 1];
 
 /* the magic array for case-independence */
 static char cc[] = {
@@ -768,7 +769,7 @@ newnexus(int (*action)())
 {
        struct nexus *p;
 
-       if ((p = (struct nexus *) calloc((size_t) 1, sizeof *p)) == NULL)
+       if ((p = (struct nexus *) mh_xcalloc((size_t) 1, sizeof *p)) == NULL)
                adios(EX_OSERR, NULL, "unable to allocate component storage");
 
        p->n_action = action;
@@ -1016,8 +1017,17 @@ plist
                p1 = linebuf;
                p2 = n->n_expbuf;
 
+               /*
+               ** Attempt to decode as a MIME header.  If it's the
+               ** last header, body will be 1 and lf will be at least 1.
+               */
+               if ((body == 0 || lf > 0) && decode_rfc2047(linebuf,
+                               decoded_linebuf, sizeof decoded_linebuf)) {
+                       p1 = decoded_linebuf;
+               }
+
                if (n->n_circf) {
-                       if (advance(p1, p2))
+                       if (advance(p1, p2)) 
                                return 1;
                        continue;
                }
@@ -1242,7 +1252,6 @@ plist
        for (state = FLD, bp = NULL;;) {
                switch (state = m_getfld(state, name, buf, sizeof buf, fp)) {
                case FLD:
-               case FLDEOF:
                case FLDPLUS:
                        if (bp != NULL) {
                                free(bp);
@@ -1256,11 +1265,9 @@ plist
                        }
                        if (!mh_strcasecmp(name, n->n_datef))
                                break;
-                       if (state != FLDEOF)
-                               continue;
+                       continue;
 
                case BODY:
-               case BODYEOF:
                case FILEEOF:
                case LENERR:
                case FMTERR: