]> diplodocus.org Git - nmh/commitdiff
m_getfld() et al: Replace with m_getfld2(), etc., in many places.
authorRalph Corderoy <ralph@inputplus.co.uk>
Sun, 13 Aug 2017 14:20:14 +0000 (15:20 +0100)
committerRalph Corderoy <ralph@inputplus.co.uk>
Sun, 13 Aug 2017 14:20:14 +0000 (15:20 +0100)
The difference is the FILE pointer isn't passed in on each call.
Instead, it's stored in the m_getfld_state_t once, on
m_getfld_state_init().  No functional change intended.

24 files changed:
h/oauth.h
sbr/m_getfld.c
sbr/oauth.c
sbr/readconfig.c
sbr/seq_read.c
uip/distsbr.c
uip/fmttest.c
uip/forwsbr.c
uip/mhbuildsbr.c
uip/mhcachesbr.c
uip/mhfixmsg.c
uip/mhlsbr.c
uip/mhparse.c
uip/new.c
uip/picksbr.c
uip/post.c
uip/prompter.c
uip/rcvdist.c
uip/replsbr.c
uip/sendsbr.c
uip/show.c
uip/slocal.c
uip/sortm.c
uip/whatnowsbr.c

index 42c9ce7..66da2f3 100644 (file)
--- a/h/oauth.h
+++ b/h/oauth.h
@@ -234,7 +234,7 @@ mh_oauth_cred_save(FILE *fp, mh_oauth_cred *cred, const char *user);
 /*
  * Load OAuth tokens from file.
  *
 /*
  * Load OAuth tokens from file.
  *
- * Calls m_getfld(), which writes to stderr with advise().
+ * Calls m_getfld2(), which writes to stderr with advise().
  *
  * On error, return NULL.
  */
  *
  * On error, return NULL.
  */
index f674792..eb37741 100644 (file)
 
    Usage
    =====
 
    Usage
    =====
-   m_getfld_state_t gstate = 0;
-      ...
-   int state = m_getfld (&gstate, ...);
-      ...
+   m_getfld_state_t gstate;
+
+   gstate = m_getfld_state_init(mailfp);
+   Perhaps m_getfld_track_filepos2(&gstate);
+   ...
+      state = m_getfld2(&gstate, ...);
+      ...Repeat until finished with mailfp.
    m_getfld_state_destroy (&gstate);
 
    The state is retained internally by gstate.  To reset its state to FLD:
    m_getfld_state_destroy (&gstate);
 
    The state is retained internally by gstate.  To reset its state to FLD:
index 89288c1..8e3d6b0 100755 (executable)
@@ -616,7 +616,7 @@ load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
     boolean success = FALSE;
     char name[NAMESZ], value_buf[BUFSIZ];
     int state;
     boolean success = FALSE;
     char name[NAMESZ], value_buf[BUFSIZ];
     int state;
-    m_getfld_state_t getfld_ctx = 0;
+    m_getfld_state_t getfld_ctx;
 
     struct user_creds *user_creds;
     NEW(user_creds);
 
     struct user_creds *user_creds;
     NEW(user_creds);
@@ -624,9 +624,10 @@ load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
     user_creds->len = 0;
     user_creds->creds = mh_xmalloc(user_creds->alloc * sizeof *user_creds->creds);
 
     user_creds->len = 0;
     user_creds->creds = mh_xmalloc(user_creds->alloc * sizeof *user_creds->creds);
 
+    getfld_ctx = m_getfld_state_init(fp);
     for (;;) {
        int size = sizeof value_buf;
     for (;;) {
        int size = sizeof value_buf;
-       switch (state = m_getfld(&getfld_ctx, name, value_buf, &size, fp)) {
+       switch (state = m_getfld2(&getfld_ctx, name, value_buf, &size)) {
         case FLD:
         case FLDPLUS: {
             char **save, *expire;
         case FLD:
         case FLDPLUS: {
             char **save, *expire;
@@ -658,7 +659,7 @@ load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
                 char *tmp = getcpy(value_buf);
                 while (state == FLDPLUS) {
                     size = sizeof value_buf;
                 char *tmp = getcpy(value_buf);
                 while (state == FLDPLUS) {
                     size = sizeof value_buf;
-                    state = m_getfld(&getfld_ctx, name, value_buf, &size, fp);
+                    state = m_getfld2(&getfld_ctx, name, value_buf, &size);
                     tmp = add(value_buf, tmp);
                 }
                 *save = trimcpy(tmp);
                     tmp = add(value_buf, tmp);
                 }
                 *save = trimcpy(tmp);
@@ -684,7 +685,7 @@ load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
             break;
 
         default:
             break;
 
         default:
-            /* Not adding details for LENERR/FMTERR because m_getfld already
+            /* Not adding details for LENERR/FMTERR because m_getfld2 already
              * wrote advise message to stderr. */
             set_err(ctx, MH_OAUTH_CRED_FILE);
             break;
              * wrote advise message to stderr. */
             set_err(ctx, MH_OAUTH_CRED_FILE);
             break;
index 53f5c35..d737a2a 100644 (file)
@@ -47,16 +47,17 @@ readconfig (struct node **npp, FILE *ib, const char *file, int ctx)
     char name[NAMESZ], field[NMH_BUFSIZ];
     struct node *np;
     struct procstr *ps;
     char name[NAMESZ], field[NMH_BUFSIZ];
     struct node *np;
     struct procstr *ps;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (npp == NULL && (npp = opp) == NULL) {
        inform("bug: readconfig called but pump not primed, continuing...");
        return;
     }
 
 
     if (npp == NULL && (npp = opp) == NULL) {
        inform("bug: readconfig called but pump not primed, continuing...");
        return;
     }
 
+    gstate = m_getfld_state_init(ib);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (&gstate, name, field, &fieldsz, ib)) {
+       switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
            case FLD:
            case FLDPLUS:
                NEW(np);
            case FLD:
            case FLDPLUS:
                NEW(np);
@@ -67,7 +68,7 @@ readconfig (struct node **npp, FILE *ib, const char *file, int ctx)
                    cp = mh_xstrdup(field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
                    cp = mh_xstrdup(field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
-                       state = m_getfld (&gstate, name, field, &fieldsz, ib);
+                       state = m_getfld2(&gstate, name, field, &fieldsz);
                        cp = add (field, cp);
                    }
                    np->n_field = trimcpy (cp);
                        cp = add (field, cp);
                    }
                    np->n_field = trimcpy (cp);
index c9cc924..3919260 100644 (file)
@@ -63,7 +63,7 @@ seq_public (struct msgs *mp, int lockflag, int *failed_to_lock)
     char *cp, seqfile[PATH_MAX];
     char name[NAMESZ], field[NMH_BUFSIZ];
     FILE *fp;
     char *cp, seqfile[PATH_MAX];
     char name[NAMESZ], field[NMH_BUFSIZ];
     FILE *fp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     /*
      * If mh_seq == NULL or if *mh_seq == '\0' (the user has defined
 
     /*
      * If mh_seq == NULL or if *mh_seq == '\0' (the user has defined
@@ -80,17 +80,18 @@ seq_public (struct msgs *mp, int lockflag, int *failed_to_lock)
        == NULL)
        return NOTOK;
 
        == NULL)
        return NOTOK;
 
-    /* Use m_getfld to scan sequence file */
+    /* Use m_getfld2 to scan sequence file */
+    gstate = m_getfld_state_init(fp);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
            case FLD: 
            case FLDPLUS:
                if (state == FLDPLUS) {
                    cp = mh_xstrdup(field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
            case FLD: 
            case FLDPLUS:
                if (state == FLDPLUS) {
                    cp = mh_xstrdup(field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
-                       state = m_getfld (&gstate, name, field, &fieldsz, fp);
+                       state = m_getfld2(&gstate, name, field, &fieldsz);
                        cp = add (field, cp);
                    }
                    seq_init (mp, mh_xstrdup(name), trimcpy (cp));
                        cp = add (field, cp);
                    }
                    seq_init (mp, mh_xstrdup(name), trimcpy (cp));
index c9f6656..f29426e 100644 (file)
@@ -30,7 +30,7 @@ distout (char *drft, char *msgnam, char *backup)
     char *dp, *resent;
     char name[NAMESZ], buffer[NMH_BUFSIZ];
     FILE *ifp, *ofp;
     char *dp, *resent;
     char name[NAMESZ], buffer[NMH_BUFSIZ];
     FILE *ifp, *ofp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (rename (drft, strcpy (backup, m_backup (drft))) == NOTOK)
        adios (backup, "unable to rename %s to",drft);
 
     if (rename (drft, strcpy (backup, m_backup (drft))) == NOTOK)
        adios (backup, "unable to rename %s to",drft);
@@ -45,9 +45,10 @@ distout (char *drft, char *msgnam, char *backup)
     lseek(hdrfd, 0, SEEK_SET); /* msgnam not accurate */
     cpydata (hdrfd, fileno (ofp), msgnam, drft);
 
     lseek(hdrfd, 0, SEEK_SET); /* msgnam not accurate */
     cpydata (hdrfd, fileno (ofp), msgnam, drft);
 
+    gstate = m_getfld_state_init(ifp);
     for (resent = NULL;;) {
        int buffersz = sizeof buffer;
     for (resent = NULL;;) {
        int buffersz = sizeof buffer;
-       switch (state = m_getfld (&gstate, name, buffer, &buffersz, ifp)) {
+       switch (state = m_getfld2(&gstate, name, buffer, &buffersz)) {
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "distribute-"))
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "distribute-"))
@@ -64,7 +65,7 @@ distout (char *drft, char *msgnam, char *backup)
                fprintf (ofp, "%s: %s", name, buffer);
                while (state == FLDPLUS) {
                    buffersz = sizeof buffer;
                fprintf (ofp, "%s: %s", name, buffer);
                while (state == FLDPLUS) {
                    buffersz = sizeof buffer;
-                   state = m_getfld (&gstate, name, buffer, &buffersz, ifp);
+                   state = m_getfld2(&gstate, name, buffer, &buffersz);
                    resent = add (buffer, resent);
                    fputs (buffer, ofp);
                }
                    resent = add (buffer, resent);
                    fputs (buffer, ofp);
                }
@@ -128,7 +129,7 @@ ready_msg (char *msgnam)
     char name[NAMESZ], buffer[NMH_BUFSIZ], tmpfil[BUFSIZ];
     FILE *ifp, *ofp;
     char *cp = NULL;
     char name[NAMESZ], buffer[NMH_BUFSIZ], tmpfil[BUFSIZ];
     FILE *ifp, *ofp;
     char *cp = NULL;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (hdrfd != NOTOK) {
         close (hdrfd);
 
     if (hdrfd != NOTOK) {
         close (hdrfd);
@@ -152,9 +153,10 @@ ready_msg (char *msgnam)
        adios (NULL, "no file descriptors -- you lose big");
     (void) m_unlink (tmpfil);
 
        adios (NULL, "no file descriptors -- you lose big");
     (void) m_unlink (tmpfil);
 
+    gstate = m_getfld_state_init(ifp);
     for (;;) {
        int buffersz = sizeof buffer;
     for (;;) {
        int buffersz = sizeof buffer;
-       switch (state = m_getfld (&gstate, name, buffer, &buffersz, ifp)) {
+       switch (state = m_getfld2(&gstate, name, buffer, &buffersz)) {
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "resent"))
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "resent"))
@@ -162,7 +164,7 @@ ready_msg (char *msgnam)
                fprintf (ofp, "%s: %s", name, buffer);
                while (state == FLDPLUS) {
                    buffersz = sizeof buffer;
                fprintf (ofp, "%s: %s", name, buffer);
                while (state == FLDPLUS) {
                    buffersz = sizeof buffer;
-                   state = m_getfld (&gstate, name, buffer, &buffersz, ifp);
+                   state = m_getfld2(&gstate, name, buffer, &buffersz);
                    fputs (buffer, ofp);
                }
                break;
                    fputs (buffer, ofp);
                }
                break;
@@ -184,7 +186,7 @@ ready_msg (char *msgnam)
                fprintf (ofp, "\n%s", buffer);
                while (state == BODY) {
                    buffersz = sizeof buffer;
                fprintf (ofp, "\n%s", buffer);
                while (state == BODY) {
                    buffersz = sizeof buffer;
-                   state = m_getfld (&gstate, name, buffer, &buffersz, ifp);
+                   state = m_getfld2(&gstate, name, buffer, &buffersz);
                    fputs (buffer, ofp);
                }
            case FILEEOF: 
                    fputs (buffer, ofp);
                }
            case FILEEOF: 
index 3dfdf9b..d848bea 100644 (file)
@@ -584,7 +584,7 @@ process_single_file(FILE *in, struct msgs_array *comps, int *dat, int msgsize,
 {
     int i, state;
     char name[NAMESZ], rbuf[NMH_BUFSIZ];
 {
     int i, state;
     char name[NAMESZ], rbuf[NMH_BUFSIZ];
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     struct comp *c;
     int bufsz;
 
     struct comp *c;
     int bufsz;
 
@@ -616,9 +616,10 @@ process_single_file(FILE *in, struct msgs_array *comps, int *dat, int msgsize,
      * Read in the message and process the components
      */
 
      * Read in the message and process the components
      */
 
+    gstate = m_getfld_state_init(in);
     for (;;) {
        bufsz = sizeof(rbuf);
     for (;;) {
        bufsz = sizeof(rbuf);
-       state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+       state = m_getfld2(&gstate, name, rbuf, &bufsz);
        switch (state) {
        case FLD:
        case FLDPLUS:
        switch (state) {
        case FLD:
        case FLDPLUS:
@@ -626,14 +627,14 @@ process_single_file(FILE *in, struct msgs_array *comps, int *dat, int msgsize,
            if (i != -1) {
                while (state == FLDPLUS) {
                    bufsz = sizeof(rbuf);
            if (i != -1) {
                while (state == FLDPLUS) {
                    bufsz = sizeof(rbuf);
-                   state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+                   state = m_getfld2(&gstate, name, rbuf, &bufsz);
                    fmt_appendcomp(i, name, rbuf);
                }
            }
 
            while (state == FLDPLUS) {
                bufsz = sizeof(rbuf);
                    fmt_appendcomp(i, name, rbuf);
                }
            }
 
            while (state == FLDPLUS) {
                bufsz = sizeof(rbuf);
-               state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+               state = m_getfld2(&gstate, name, rbuf, &bufsz);
            }
            break;
 
            }
            break;
 
@@ -641,7 +642,7 @@ process_single_file(FILE *in, struct msgs_array *comps, int *dat, int msgsize,
            if (fmt_findcomp("body")) {
                if ((i = strlen(rbuf)) < outwidth) {
                    bufsz = min (outwidth, (int) sizeof rbuf - i);
            if (fmt_findcomp("body")) {
                if ((i = strlen(rbuf)) < outwidth) {
                    bufsz = min (outwidth, (int) sizeof rbuf - i);
-                   m_getfld(&gstate, name, rbuf + i, &bufsz, in);
+                   m_getfld2(&gstate, name, rbuf + i, &bufsz);
                }
 
                fmt_addcomptext("body", rbuf);
                }
 
                fmt_addcomptext("body", rbuf);
index 4f76c38..bce58ae 100644 (file)
@@ -54,7 +54,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
     struct comp *cptr;
     struct format *fmt;
     char *cp = NULL;
     struct comp *cptr;
     struct format *fmt;
     char *cp = NULL;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     /*
      * Open the message we'll be scanning for components
 
     /*
      * Open the message we'll be scanning for components
@@ -87,9 +87,10 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
      * these routines?
      */
 
      * these routines?
      */
 
+    gstate = m_getfld_state_init(tmp);
     for (;;) {
        int msg_count = sizeof msgbuf;
     for (;;) {
        int msg_count = sizeof msgbuf;
-       state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+       state = m_getfld2(&gstate, name, msgbuf, &msg_count);
        switch (state) {
            case FLD:
            case FLDPLUS:
        switch (state) {
            case FLD:
            case FLDPLUS:
@@ -103,13 +104,13 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
                if (i != -1) {
                    while (state == FLDPLUS) {
                        msg_count = sizeof msgbuf;
                if (i != -1) {
                    while (state == FLDPLUS) {
                        msg_count = sizeof msgbuf;
-                       state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+                       state = m_getfld2(&gstate, name, msgbuf, &msg_count);
                        fmt_appendcomp(i, name, msgbuf);
                    }
                }
                while (state == FLDPLUS) {
                    msg_count = sizeof msgbuf;
                        fmt_appendcomp(i, name, msgbuf);
                    }
                }
                while (state == FLDPLUS) {
                    msg_count = sizeof msgbuf;
-                   state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+                   state = m_getfld2(&gstate, name, msgbuf, &msg_count);
                }
                break;
 
                }
                break;
 
@@ -120,7 +121,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
                goto finished;
 
            default:
                goto finished;
 
            default:
-               adios(NULL, "m_getfld() returned %d", state);
+               adios(NULL, "m_getfld2() returned %d", state);
        }
     }
 
        }
     }
 
index e34dd97..7fc0111 100644 (file)
@@ -134,7 +134,7 @@ build_mime (char *infile, int autobuild, int dist, int directives,
     CT ct;
     FILE *in;
     HF hp;
     CT ct;
     FILE *in;
     HF hp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     struct attach_list *attach_head = NULL, *attach_tail = NULL, *at_entry;
     convert_list *convert_head = NULL, *convert_tail = NULL, *convert;
 
     struct attach_list *attach_head = NULL, *attach_tail = NULL, *at_entry;
     convert_list *convert_head = NULL, *convert_tail = NULL, *convert;
 
@@ -163,10 +163,11 @@ build_mime (char *infile, int autobuild, int dist, int directives,
      * draft into the linked list of header fields for
      * the new MIME message.
      */
      * draft into the linked list of header fields for
      * the new MIME message.
      */
-    m_getfld_track_filepos (&gstate, in);
+    gstate = m_getfld_state_init(in);
+    m_getfld_track_filepos2(&gstate);
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, in)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -186,7 +187,7 @@ build_mime (char *infile, int autobuild, int dist, int directives,
            if (!strcasecmp (name, TYPE_FIELD)) {
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
            if (!strcasecmp (name, TYPE_FIELD)) {
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                }
                goto finish_field;
            }
                }
                goto finish_field;
            }
@@ -198,7 +199,7 @@ build_mime (char *infile, int autobuild, int dist, int directives,
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (&gstate, name, buf, &bufsz, in);
+               state = m_getfld2(&gstate, name, buf, &bufsz);
                vp = add (buf, vp);     /* add to previous value */
            }
 
                vp = add (buf, vp);     /* add to previous value */
            }
 
@@ -249,7 +250,7 @@ build_mime (char *infile, int autobuild, int dist, int directives,
                 char *type = np + strlen (MHBUILD_FILE_PSEUDOHEADER);
                 char *filename = vp;
 
                 char *type = np + strlen (MHBUILD_FILE_PSEUDOHEADER);
                 char *filename = vp;
 
-                /* vp should begin with a space because m_getfld()
+                /* vp should begin with a space because m_getfld2()
                    includes the space after the colon in buf. */
                 while (isspace((unsigned char) *filename)) { ++filename; }
                 /* Trim trailing newline and any other whitespace. */
                    includes the space after the colon in buf. */
                 while (isspace((unsigned char) *filename)) { ++filename; }
                 /* Trim trailing newline and any other whitespace. */
@@ -289,7 +290,7 @@ build_mime (char *infile, int autobuild, int dist, int directives,
                 char *type = np + strlen (MHBUILD_ARGS_PSEUDOHEADER);
                 char *argstring = vp;
 
                 char *type = np + strlen (MHBUILD_ARGS_PSEUDOHEADER);
                 char *argstring = vp;
 
-                /* vp should begin with a space because m_getfld()
+                /* vp should begin with a space because m_getfld2()
                    includes the space after the colon in buf. */
                 while (isspace((unsigned char) *argstring)) { ++argstring; }
                 /* Trim trailing newline and any other whitespace. */
                    includes the space after the colon in buf. */
                 while (isspace((unsigned char) *argstring)) { ++argstring; }
                 /* Trim trailing newline and any other whitespace. */
index f343bf3..0c61fc0 100644 (file)
@@ -369,18 +369,19 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen)
     int        state;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     FILE *fp;
     int        state;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     FILE *fp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     int failed_to_lock = 0;
 
     if (!(fp = lkfopendata (mapfile, "r", &failed_to_lock)))
        return NOTOK;
 
     int failed_to_lock = 0;
 
     if (!(fp = lkfopendata (mapfile, "r", &failed_to_lock)))
        return NOTOK;
 
+    gstate = m_getfld_state_init(fp);
     for (;;) {
        int result;
        char *cp, *dp;
        int bufsz = sizeof buf;
 
     for (;;) {
        int result;
        char *cp, *dp;
        int bufsz = sizeof buf;
 
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
            case FLD:
            case FLDPLUS:
                strncpy (mapname, name, namelen);
            case FLD:
            case FLDPLUS:
                strncpy (mapname, name, namelen);
@@ -390,7 +391,7 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen)
                    cp = mh_xstrdup(buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
                    cp = mh_xstrdup(buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                       state = m_getfld2(&gstate, name, buf, &bufsz);
                        cp = add (buf, cp);
                    }
                }
                        cp = add (buf, cp);
                    }
                }
index aed480e..2737dac 100644 (file)
@@ -818,7 +818,7 @@ replace_boundary (CT ct, char *file, char *boundary) {
     int compnum, state;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     char *np, *vp;
     int compnum, state;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     char *np, *vp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     int status = OK;
 
     if (ct->c_file == NULL) {
     int status = OK;
 
     if (ct->c_file == NULL) {
@@ -837,10 +837,11 @@ replace_boundary (CT ct, char *file, char *boundary) {
         return NOTOK;
     }
 
         return NOTOK;
     }
 
+    gstate = m_getfld_state_init(fpin);
     for (compnum = 1;;) {
         int bufsz = (int) sizeof buf;
 
     for (compnum = 1;;) {
         int bufsz = (int) sizeof buf;
 
-        switch (state = m_getfld (&gstate, name, buf, &bufsz, fpin)) {
+        switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
         case FLD:
         case FLDPLUS:
             compnum++;
         case FLD:
         case FLDPLUS:
             compnum++;
@@ -852,7 +853,7 @@ replace_boundary (CT ct, char *file, char *boundary) {
             /* if necessary, get rest of field */
             while (state == FLDPLUS) {
                 bufsz = sizeof buf;
             /* if necessary, get rest of field */
             while (state == FLDPLUS) {
                 bufsz = sizeof buf;
-                state = m_getfld (&gstate, name, buf, &bufsz, fpin);
+                state = m_getfld2(&gstate, name, buf, &bufsz);
                 vp = add (buf, vp);     /* add to previous value */
             }
 
                 vp = add (buf, vp);     /* add to previous value */
             }
 
index a4402c5..e16f31d 100644 (file)
@@ -329,7 +329,7 @@ static void pipeser (int);
 static void quitser (int);
 static void mhladios (char *, char *, ...);
 static void mhldone (int);
 static void quitser (int);
 static void mhladios (char *, char *, ...);
 static void mhldone (int);
-static void filterbody (struct mcomp *, char *, int, int, FILE *,
+static void filterbody (struct mcomp *, char *, int, int,
                         m_getfld_state_t);
 static void compile_formatfield(struct mcomp *);
 static void compile_filterargs (void);
                         m_getfld_state_t);
 static void compile_formatfield(struct mcomp *);
 static void compile_filterargs (void);
@@ -937,7 +937,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
     int state, bucket;
     struct mcomp *c1, *c2, *c3;
     char **ip, name[NAMESZ], buf[NMH_BUFSIZ];
     int state, bucket;
     struct mcomp *c1, *c2, *c3;
     char **ip, name[NAMESZ], buf[NMH_BUFSIZ];
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     compile_filterargs();
 
 
     compile_filterargs();
 
@@ -1001,9 +1001,10 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
        }
     }
 
        }
     }
 
+    gstate = m_getfld_state_init(fp);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
            case FLD: 
            case FLDPLUS: 
                bucket = fmt_addcomptext(name, buf);
            case FLD: 
            case FLDPLUS: 
                bucket = fmt_addcomptext(name, buf);
@@ -1011,7 +1012,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                    if (!strcasecmp (name, *ip)) {
                        while (state == FLDPLUS) {
                            bufsz = sizeof buf;
                    if (!strcasecmp (name, *ip)) {
                        while (state == FLDPLUS) {
                            bufsz = sizeof buf;
-                           state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                           state = m_getfld2(&gstate, name, buf, &bufsz);
                            fmt_appendcomp(bucket, name, buf);
                        }
                        break;
                            fmt_appendcomp(bucket, name, buf);
                        }
                        break;
@@ -1035,7 +1036,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                    c1 = add_queue (&msghd, &msgtl, name, buf, 0);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                    c1 = add_queue (&msghd, &msgtl, name, buf, 0);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    c1->c_text = add (buf, c1->c_text);
                    fmt_appendcomp(bucket, name, buf);
                }
                    c1->c_text = add (buf, c1->c_text);
                    fmt_appendcomp(bucket, name, buf);
                }
@@ -1070,15 +1071,15 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                                   !strcasecmp (c1->c_name, "body"))) {
                        if (c1->c_flags & FMTFILTER && state == BODY &&
                                                        formatproc != NULL) {
                                   !strcasecmp (c1->c_name, "body"))) {
                        if (c1->c_flags & FMTFILTER && state == BODY &&
                                                        formatproc != NULL) {
-                           filterbody(c1, buf, sizeof(buf), state, fp, gstate);
+                           filterbody(c1, buf, sizeof(buf), state, gstate);
                        } else {
                            holder.c_text = mh_xmalloc (sizeof(buf));
                            strncpy (holder.c_text, buf, sizeof(buf));
                            while (state == BODY) {
                                putcomp (c1, &holder, BODYCOMP);
                                bufsz = sizeof buf;
                        } else {
                            holder.c_text = mh_xmalloc (sizeof(buf));
                            strncpy (holder.c_text, buf, sizeof(buf));
                            while (state == BODY) {
                                putcomp (c1, &holder, BODYCOMP);
                                bufsz = sizeof buf;
-                               state = m_getfld (&gstate, name, holder.c_text,
-                                           &bufsz, fp);
+                               state = m_getfld2(&gstate, name, holder.c_text,
+                                           &bufsz);
                            }
                            free (holder.c_text);
                            holder.c_text = NULL;
                            }
                            free (holder.c_text);
                            holder.c_text = NULL;
@@ -1726,8 +1727,8 @@ compile_filterargs (void)
  */
 
 static void
  */
 
 static void
-filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp,
-            m_getfld_state_t gstate)
+filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
+    m_getfld_state_t gstate)
 {
     struct mcomp holder;
     char name[NAMESZ];
 {
     struct mcomp holder;
     char name[NAMESZ];
@@ -1777,7 +1778,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp,
        close(fdoutput[1]);
 
        /*
        close(fdoutput[1]);
 
        /*
-        * Call m_getfld() until we're no longer in the BODY state
+        * Call m_getfld2() until we're no longer in the BODY state
         */
 
        while (state == BODY) {
         */
 
        while (state == BODY) {
@@ -1785,7 +1786,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp,
            if (write(fdinput[1], buf, strlen(buf)) < 0) {
                advise ("pipe output", "write");
            }
            if (write(fdinput[1], buf, strlen(buf)) < 0) {
                advise ("pipe output", "write");
            }
-           state = m_getfld (&gstate, name, buf, &bufsz2, fp);
+           state = m_getfld2(&gstate, name, buf, &bufsz2);
        }
 
        /*
        }
 
        /*
index 76dd7f7..74e03a7 100644 (file)
@@ -295,7 +295,7 @@ get_content (FILE *in, char *file, int toplevel)
     char *np, *vp;
     CT ct;
     HF hp;
     char *np, *vp;
     CT ct;
     HF hp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     /* allocate the content structure */
     NEW0(ct);
 
     /* allocate the content structure */
     NEW0(ct);
@@ -307,10 +307,11 @@ get_content (FILE *in, char *file, int toplevel)
      * Parse the header fields for this
      * content into a linked list.
      */
      * Parse the header fields for this
      * content into a linked list.
      */
-    m_getfld_track_filepos (&gstate, in);
+    gstate = m_getfld_state_init(in);
+    m_getfld_track_filepos2(&gstate);
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, in)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -322,7 +323,7 @@ get_content (FILE *in, char *file, int toplevel)
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
            /* if necessary, get rest of field */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (&gstate, name, buf, &bufsz, in);
+               state = m_getfld2(&gstate, name, buf, &bufsz);
                vp = add (buf, vp);     /* add to previous value */
            }
 
                vp = add (buf, vp);     /* add to previous value */
            }
 
index c82979e..f954933 100644 (file)
--- a/uip/new.c
+++ b/uip/new.c
@@ -102,7 +102,7 @@ get_msgnums(char *folder, char *sequences[])
     char *cp;
     char *msgnums = NULL, *this_msgnums, *old_msgnums;
     int failed_to_lock = 0;
     char *cp;
     char *msgnums = NULL, *this_msgnums, *old_msgnums;
     int failed_to_lock = 0;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     /* copied from seq_read.c:seq_public */
     /*
 
     /* copied from seq_read.c:seq_public */
     /*
@@ -129,17 +129,18 @@ get_msgnums(char *folder, char *sequences[])
        }
     }
 
        }
     }
 
-    /* Use m_getfld to scan sequence file */
+    /* Use m_getfld2 to scan sequence file */
+    gstate = m_getfld_state_init(fp);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
             case FLD:
             case FLDPLUS:
                 if (state == FLDPLUS) {
                     cp = getcpy (field);
                     while (state == FLDPLUS) {
                        fieldsz = sizeof field;
             case FLD:
             case FLDPLUS:
                 if (state == FLDPLUS) {
                     cp = getcpy (field);
                     while (state == FLDPLUS) {
                        fieldsz = sizeof field;
-                       state = m_getfld (&gstate, name, field, &fieldsz, fp);
+                       state = m_getfld2(&gstate, name, field, &fieldsz);
                         cp = add (field, cp);
                     }
 
                         cp = add (field, cp);
                     }
 
index ca330b9..3f8a17c 100644 (file)
@@ -925,20 +925,21 @@ TWSaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop)
     char *bp;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     struct tws *tw;
     char *bp;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     struct tws *tw;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     NMH_UNUSED (stop);
 
     fseek (fp, start, SEEK_SET);
     NMH_UNUSED (stop);
 
     fseek (fp, start, SEEK_SET);
+    gstate = m_getfld_state_init(fp);
     for (bp = NULL;;) {
        int bufsz = sizeof buf;
     for (bp = NULL;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
            case FLD: 
            case FLDPLUS: 
                 mh_xfree(bp);
                bp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
            case FLD: 
            case FLDPLUS: 
                 mh_xfree(bp);
                bp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    bp = add (buf, bp);
                }
                if (!strcasecmp (name, n->n_datef))
                    bp = add (buf, bp);
                }
                if (!strcasecmp (name, n->n_datef))
index 9282a71..5f70e62 100644 (file)
@@ -323,7 +323,7 @@ main (int argc, char **argv)
     char *cp, *msg = NULL, **argp, **arguments, *envelope;
     char buf[NMH_BUFSIZ], name[NAMESZ], *auth_svc = NULL;
     FILE *in, *out;
     char *cp, *msg = NULL, **argp, **arguments, *envelope;
     char buf[NMH_BUFSIZ], name[NAMESZ], *auth_svc = NULL;
     FILE *in, *out;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (nmh_init(argv[0], 0 /* use context_foil() */)) { return 1; }
 
 
     if (nmh_init(argv[0], 0 /* use context_foil() */)) { return 1; }
 
@@ -619,16 +619,17 @@ main (int argc, char **argv)
 
     hdrtab = msgstate == NORMAL ? NHeaders : RHeaders;
 
 
     hdrtab = msgstate == NORMAL ? NHeaders : RHeaders;
 
+    gstate = m_getfld_state_init(in);
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, in)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
            case FLD: 
            case FLDPLUS: 
                 compnum++;
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
            case FLD: 
            case FLDPLUS: 
                 compnum++;
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    cp = add (buf, cp);
                }
                putfmt (name, cp, &eai, out);
                    cp = add (buf, cp);
                }
                putfmt (name, cp, &eai, out);
@@ -642,7 +643,7 @@ main (int argc, char **argv)
                fprintf (out, "\n%s", buf);
                while (state == BODY) {
                    bufsz = sizeof buf;
                fprintf (out, "\n%s", buf);
                while (state == BODY) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    fputs (buf, out);
                }
                break;
                    fputs (buf, out);
                }
                break;
index 303d2ad..5c4926a 100644 (file)
@@ -64,7 +64,7 @@ main (int argc, char **argv)
     char **arguments, **argp;
     FILE *in, *out;
     char *tmpfil;
     char **arguments, **argp;
     FILE *in, *out;
     char *tmpfil;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (nmh_init(argv[0], 2)) { return 1; }
 
 
     if (nmh_init(argv[0], 2)) { return 1; }
 
@@ -182,9 +182,10 @@ main (int argc, char **argv)
     /*
      * Loop through the lines of the draft skeleton.
      */
     /*
      * Loop through the lines of the draft skeleton.
      */
+    gstate = m_getfld_state_init(in);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (&gstate, name, field, &fieldsz, in)) {
+       switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
            case FLD: 
            case FLDPLUS: 
                /*
            case FLD: 
            case FLDPLUS: 
                /*
@@ -201,7 +202,7 @@ main (int argc, char **argv)
                    fprintf (out, "%s:%s", name, field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
                    fprintf (out, "%s:%s", name, field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
-                       state = m_getfld (&gstate, name, field, &fieldsz, in);
+                       state = m_getfld2(&gstate, name, field, &fieldsz);
                        fputs(field, stdout);
                        fputs(field, out);
                    }
                        fputs(field, stdout);
                        fputs(field, out);
                    }
@@ -260,7 +261,7 @@ abort:
                            fputs(field, stdout);
                    } while (state == BODY &&
                            (fieldsz = sizeof field,
                            fputs(field, stdout);
                    } while (state == BODY &&
                            (fieldsz = sizeof field,
-                            state = m_getfld (&gstate, name, field, &fieldsz, in)));
+                            state = m_getfld2(&gstate, name, field, &fieldsz)));
                    if (prepend || !body)
                        break;
                    else
                    if (prepend || !body)
                        break;
                    else
index 1ad585d..a123f8e 100644 (file)
@@ -177,7 +177,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     charstring_t scanl;
     struct comp *cptr;
     FILE *out;
     charstring_t scanl;
     struct comp *cptr;
     FILE *out;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (!(out = fopen (drft, "w")))
        adios (drft, "unable to create");
 
     if (!(out = fopen (drft, "w")))
        adios (drft, "unable to create");
@@ -197,9 +197,10 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     if (cptr)
        cptr->c_text = addrs;
 
     if (cptr)
        cptr->c_text = addrs;
 
+    gstate = m_getfld_state_init(inb);
     for (;;) {
        int msg_count = sizeof tmpbuf;
     for (;;) {
        int msg_count = sizeof tmpbuf;
-       switch (state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb)) {
+       switch (state = m_getfld2(&gstate, name, tmpbuf, &msg_count)) {
            case FLD: 
            case FLDPLUS: 
                i = fmt_addcomptext(name, tmpbuf);
            case FLD: 
            case FLDPLUS: 
                i = fmt_addcomptext(name, tmpbuf);
@@ -207,7 +208,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count = sizeof tmpbuf;
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count = sizeof tmpbuf;
-                       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                       state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
@@ -215,7 +216,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
 
                while (state == FLDPLUS) {
                    msg_count = sizeof tmpbuf;
 
                while (state == FLDPLUS) {
                    msg_count = sizeof tmpbuf;
-                   state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                   state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                }
                break;
 
                }
                break;
 
@@ -226,7 +227,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
                goto finished;
 
            default: 
                goto finished;
 
            default: 
-               adios (NULL, "m_getfld() returned %d", state);
+               adios (NULL, "m_getfld2() returned %d", state);
        }
     }
 finished: ;
        }
     }
 finished: ;
index e63ce75..d3ba270 100644 (file)
@@ -63,7 +63,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
     char name[NAMESZ], *cp;
     charstring_t scanl;
     static int dat[5];                 /* aux. data for format routine */
     char name[NAMESZ], *cp;
     charstring_t scanl;
     static int dat[5];                 /* aux. data for format routine */
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     struct fmt_callbacks cb;
 
     FILE *out;
     struct fmt_callbacks cb;
 
     FILE *out;
@@ -110,9 +110,10 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
     /*
      * pick any interesting stuff out of msg "inb"
      */
     /*
      * pick any interesting stuff out of msg "inb"
      */
+    gstate = m_getfld_state_init(inb);
     for (;;) {
        int msg_count = sizeof tmpbuf;
     for (;;) {
        int msg_count = sizeof tmpbuf;
-       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+       state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
        switch (state) {
            case FLD:
            case FLDPLUS:
        switch (state) {
            case FLD:
            case FLDPLUS:
@@ -128,7 +129,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count= sizeof tmpbuf;
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count= sizeof tmpbuf;
-                       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                       state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
@@ -136,7 +137,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
 
                while (state == FLDPLUS) {
                    msg_count= sizeof tmpbuf;
 
                while (state == FLDPLUS) {
                    msg_count= sizeof tmpbuf;
-                   state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
+                   state = m_getfld2(&gstate, name, tmpbuf, &msg_count);
                }
                break;
 
                }
                break;
 
@@ -147,7 +148,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
                goto finished;
 
            default:
                goto finished;
 
            default:
-               adios (NULL, "m_getfld() returned %d", state);
+               adios (NULL, "m_getfld2() returned %d", state);
        }
     }
 
        }
     }
 
index 7d54f43..796b58e 100644 (file)
@@ -198,7 +198,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft,
     char subject[BUFSIZ];
     char name[NAMESZ], partnum[BUFSIZ];
     FILE *in;
     char subject[BUFSIZ];
     char name[NAMESZ], partnum[BUFSIZ];
     FILE *in;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if ((in = fopen (drft, "r")) == NULL)
        adios (drft, "unable to open for reading");
 
     if ((in = fopen (drft, "r")) == NULL)
        adios (drft, "unable to open for reading");
@@ -210,10 +210,11 @@ splitmsg (char **vec, int vecp, char *program, char *drft,
      * Scan through the message and examine the various header fields,
      * as well as locate the beginning of the message body.
      */
      * Scan through the message and examine the various header fields,
      * as well as locate the beginning of the message body.
      */
-    m_getfld_track_filepos (&gstate, in);
+    gstate = m_getfld_state_init(in);
+    m_getfld_track_filepos2(&gstate);
     for (compnum = 1;;) {
        int bufsz = sizeof buffer;
     for (compnum = 1;;) {
        int bufsz = sizeof buffer;
-       switch (state = m_getfld (&gstate, name, buffer, &bufsz, in)) {
+       switch (state = m_getfld2(&gstate, name, buffer, &bufsz)) {
            case FLD:
            case FLDPLUS:
                compnum++;
            case FLD:
            case FLDPLUS:
                compnum++;
@@ -224,7 +225,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft,
                if (!strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
                if (!strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
-                       state = m_getfld (&gstate, name, buffer, &bufsz, in);
+                       state = m_getfld2(&gstate, name, buffer, &bufsz);
                    }
                } else if (uprf (name, XXX_FIELD_PRF)
                        || !strcasecmp (name, VRSN_FIELD)
                    }
                } else if (uprf (name, XXX_FIELD_PRF)
                        || !strcasecmp (name, VRSN_FIELD)
@@ -250,7 +251,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft,
                    dp = add (concat (name, ":", buffer, NULL), dp);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
                    dp = add (concat (name, ":", buffer, NULL), dp);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
-                       state = m_getfld (&gstate, name, buffer, &bufsz, in);
+                       state = m_getfld2(&gstate, name, buffer, &bufsz);
                        dp = add (buffer, dp);
                    }
                } else {
                        dp = add (buffer, dp);
                    }
                } else {
@@ -261,7 +262,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft,
                    cp = add (concat (name, ":", buffer, NULL), cp);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
                    cp = add (concat (name, ":", buffer, NULL), cp);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
-                       state = m_getfld (&gstate, name, buffer, &bufsz, in);
+                       state = m_getfld2(&gstate, name, buffer, &bufsz);
                        cp = add (buffer, cp);
                    }
                }
                        cp = add (buffer, cp);
                    }
                }
@@ -912,7 +913,7 @@ get_message_header_info(FILE *in, char *format) {
     struct format *fmt;
     struct stat st;
     int parsing_header;
     struct format *fmt;
     struct stat st;
     int parsing_header;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     charstring_t buffer = charstring_create(0);
     char *retval;
 
     charstring_t buffer = charstring_create(0);
     char *retval;
 
@@ -928,10 +929,11 @@ get_message_header_info(FILE *in, char *format) {
      */
     rewind (in);
     parsing_header = 1;
      */
     rewind (in);
     parsing_header = 1;
+    gstate = m_getfld_state_init(in);
     do {
         char name[NAMESZ], rbuf[NMH_BUFSIZ];
         int bufsz = sizeof rbuf;
     do {
         char name[NAMESZ], rbuf[NMH_BUFSIZ];
         int bufsz = sizeof rbuf;
-        int state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+        int state = m_getfld2(&gstate, name, rbuf, &bufsz);
 
         switch (state) {
         case FLD:
 
         switch (state) {
         case FLD:
@@ -941,14 +943,14 @@ get_message_header_info(FILE *in, char *format) {
             if (bucket != -1) {
                 while (state == FLDPLUS) {
                     bufsz = sizeof rbuf;
             if (bucket != -1) {
                 while (state == FLDPLUS) {
                     bufsz = sizeof rbuf;
-                    state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+                    state = m_getfld2(&gstate, name, rbuf, &bufsz);
                     fmt_appendcomp(bucket, name, rbuf);
                 }
             }
 
             while (state == FLDPLUS) {
                 bufsz = sizeof rbuf;
                     fmt_appendcomp(bucket, name, rbuf);
                 }
             }
 
             while (state == FLDPLUS) {
                 bufsz = sizeof rbuf;
-                state = m_getfld(&gstate, name, rbuf, &bufsz, in);
+                state = m_getfld2(&gstate, name, rbuf, &bufsz);
             }
             break;
         }
             }
             break;
         }
index ac01292..dfe5052 100644 (file)
@@ -370,14 +370,14 @@ is_nontext (char *msgnam)
     char *bp, *dp, *cp;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     FILE *fp;
     char *bp, *dp, *cp;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     FILE *fp;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
-
+    gstate = m_getfld_state_init(fp);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
        case FLD:
        case FLDPLUS:
            /*
        case FLD:
        case FLDPLUS:
            /*
@@ -390,7 +390,7 @@ is_nontext (char *msgnam)
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    cp = add (buf, cp);
                }
                bp = cp;
                    cp = add (buf, cp);
                }
                bp = cp;
@@ -495,7 +495,7 @@ out:
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace ((unsigned char) *bp); bp++)
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace ((unsigned char) *bp); bp++)
@@ -522,7 +522,7 @@ out:
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (&gstate, name, buf, &bufsz, fp);
+               state = m_getfld2(&gstate, name, buf, &bufsz);
            }
            break;
 
            }
            break;
 
index 97897ad..bf58fd0 100644 (file)
@@ -713,7 +713,7 @@ parse (int fd)
     char name[NAMESZ], field[NMH_BUFSIZ];
     struct pair *p, *q;
     FILE  *in;
     char name[NAMESZ], field[NMH_BUFSIZ];
     struct pair *p, *q;
     FILE  *in;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if (parsed++)
        return 0;
 
     if (parsed++)
        return 0;
@@ -737,15 +737,16 @@ parse (int fd)
      * Scan the headers of the message and build
      * a lookup table.
      */
      * Scan the headers of the message and build
      * a lookup table.
      */
+    gstate = m_getfld_state_init(in);
     for (i = 0;;) {
        int fieldsz = sizeof field;
     for (i = 0;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (&gstate, name, field, &fieldsz, in)) {
+       switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
            case FLD: 
            case FLDPLUS: 
                lp = mh_xstrdup(field);
                while (state == FLDPLUS) {
                    fieldsz = sizeof field;
            case FLD: 
            case FLDPLUS: 
                lp = mh_xstrdup(field);
                while (state == FLDPLUS) {
                    fieldsz = sizeof field;
-                   state = m_getfld (&gstate, name, field, &fieldsz, in);
+                   state = m_getfld2(&gstate, name, field, &fieldsz);
                    lp = add (field, lp);
                }
                for (p = hdrs; p->p_name; p++) {
                    lp = add (field, lp);
                }
                for (p = hdrs; p->p_name; p++) {
@@ -786,7 +787,7 @@ parse (int fd)
                break;
 
            default: 
                break;
 
            default: 
-               inform("internal error in m_getfld");
+               inform("internal error in m_getfld2");
                fclose (in);
                return -1;
        }
                fclose (in);
                return -1;
        }
@@ -1405,7 +1406,7 @@ suppress_duplicates (int fd, char *file)
     datum key, value;
     DBM *db;
     FILE *in;
     datum key, value;
     DBM *db;
     FILE *in;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if ((fd1 = dup (fd)) == -1)
        return -1;
 
     if ((fd1 = dup (fd)) == -1)
        return -1;
@@ -1415,10 +1416,11 @@ suppress_duplicates (int fd, char *file)
     }
     rewind (in);
 
     }
     rewind (in);
 
+    gstate = m_getfld_state_init(in);
     for (;;) {
         int failed_to_lock = 0;
        int bufsz = sizeof buf;
     for (;;) {
         int failed_to_lock = 0;
        int bufsz = sizeof buf;
-       state = m_getfld (&gstate, name, buf, &bufsz, in);
+       state = m_getfld2(&gstate, name, buf, &bufsz);
        switch (state) {
            case FLD:
            case FLDPLUS:
        switch (state) {
            case FLD:
            case FLDPLUS:
@@ -1426,7 +1428,7 @@ suppress_duplicates (int fd, char *file)
                if (strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
                if (strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (&gstate, name, buf, &bufsz, in);
+                       state = m_getfld2(&gstate, name, buf, &bufsz);
                    }
                    continue;
                }
                    }
                    continue;
                }
@@ -1434,7 +1436,7 @@ suppress_duplicates (int fd, char *file)
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = mh_xstrdup(buf);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, name, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, name, buf, &bufsz);
                    cp = add (buf, cp);
                }
                key.dptr = trimcpy (cp);
                    cp = add (buf, cp);
                }
                key.dptr = trimcpy (cp);
index dc62f56..3ebb532 100644 (file)
@@ -340,15 +340,16 @@ get_fields (char *datesw, int msg, struct smsg *smsg)
     struct tws *tw;
     char *datecomp = NULL, *subjcomp = NULL;
     FILE *in;
     struct tws *tw;
     char *datecomp = NULL, *subjcomp = NULL;
     FILE *in;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
 
     if ((in = fopen (msgnam = m_name (msg), "r")) == NULL) {
        admonish (msgnam, "unable to read message");
        return (0);
     }
 
     if ((in = fopen (msgnam = m_name (msg), "r")) == NULL) {
        admonish (msgnam, "unable to read message");
        return (0);
     }
+    gstate = m_getfld_state_init(in);
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
     for (compnum = 1;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (&gstate, nam, buf, &bufsz, in)) {
+       switch (state = m_getfld2(&gstate, nam, buf, &bufsz)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -356,7 +357,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg)
                datecomp = add (buf, datecomp);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                datecomp = add (buf, datecomp);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, nam, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, nam, buf, &bufsz);
                    datecomp = add (buf, datecomp);
                }
                if (!subjsort || subjcomp)
                    datecomp = add (buf, datecomp);
                }
                if (!subjsort || subjcomp)
@@ -365,7 +366,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg)
                subjcomp = add (buf, subjcomp);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                subjcomp = add (buf, subjcomp);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, nam, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, nam, buf, &bufsz);
                    subjcomp = add (buf, subjcomp);
                }
                if (datecomp)
                    subjcomp = add (buf, subjcomp);
                }
                if (datecomp)
@@ -374,7 +375,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg)
                /* just flush this guy */
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                /* just flush this guy */
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (&gstate, nam, buf, &bufsz, in);
+                   state = m_getfld2(&gstate, nam, buf, &bufsz);
                }
            }
            continue;
                }
            }
            continue;
index 802535b..4fd8cbd 100644 (file)
@@ -1312,7 +1312,7 @@ static int
 checkmimeheader (char *drft)
 {
     FILE *f;
 checkmimeheader (char *drft)
 {
     FILE *f;
-    m_getfld_state_t gstate = 0;
+    m_getfld_state_t gstate;
     char buf[NMH_BUFSIZ], name[NAMESZ];
     int state, retval = 0;
 
     char buf[NMH_BUFSIZ], name[NAMESZ];
     int state, retval = 0;
 
@@ -1321,9 +1321,10 @@ checkmimeheader (char *drft)
        return (0);
     }
 
        return (0);
     }
 
+    gstate = m_getfld_state_init(f);
     for (;;) {
        int bufsz = sizeof(buf);
     for (;;) {
        int bufsz = sizeof(buf);
-       switch (state = m_getfld(&gstate, name, buf, &bufsz, f)) {
+       switch (state = m_getfld2(&gstate, name, buf, &bufsz)) {
        case FLD:
        case FLDPLUS:
            if (strcasecmp(name, VRSN_FIELD) == 0) {
        case FLD:
        case FLDPLUS:
            if (strcasecmp(name, VRSN_FIELD) == 0) {