From: Ralph Corderoy Date: Sun, 13 Aug 2017 14:20:14 +0000 (+0100) Subject: m_getfld() et al: Replace with m_getfld2(), etc., in many places. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/ec18722d02bd307bd09f30715dc8ba4e1b8a6716 m_getfld() et al: Replace with m_getfld2(), etc., in many places. 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. --- diff --git a/h/oauth.h b/h/oauth.h index 42c9ce7c..66da2f31 100644 --- 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. * - * Calls m_getfld(), which writes to stderr with advise(). + * Calls m_getfld2(), which writes to stderr with advise(). * * On error, return NULL. */ diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index f674792e..eb377411 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -60,10 +60,13 @@ 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: diff --git a/sbr/oauth.c b/sbr/oauth.c index 89288c1e..8e3d6b05 100755 --- a/sbr/oauth.c +++ b/sbr/oauth.c @@ -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; - m_getfld_state_t getfld_ctx = 0; + m_getfld_state_t getfld_ctx; 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); + getfld_ctx = m_getfld_state_init(fp); 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; @@ -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; - 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); @@ -684,7 +685,7 @@ load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx) 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; diff --git a/sbr/readconfig.c b/sbr/readconfig.c index 53f5c353..d737a2a0 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -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; - 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; } + gstate = m_getfld_state_init(ib); 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); @@ -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; - state = m_getfld (&gstate, name, field, &fieldsz, ib); + state = m_getfld2(&gstate, name, field, &fieldsz); cp = add (field, cp); } np->n_field = trimcpy (cp); diff --git a/sbr/seq_read.c b/sbr/seq_read.c index c9cc9240..39192605 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; /* * 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; - /* 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; - 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; - 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)); diff --git a/uip/distsbr.c b/uip/distsbr.c index c9f6656b..f29426e2 100644 --- a/uip/distsbr.c +++ b/uip/distsbr.c @@ -30,7 +30,7 @@ distout (char *drft, char *msgnam, char *backup) 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); @@ -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); + gstate = m_getfld_state_init(ifp); 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-")) @@ -64,7 +65,7 @@ distout (char *drft, char *msgnam, char *backup) 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); } @@ -128,7 +129,7 @@ ready_msg (char *msgnam) 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); @@ -152,9 +153,10 @@ ready_msg (char *msgnam) adios (NULL, "no file descriptors -- you lose big"); (void) m_unlink (tmpfil); + gstate = m_getfld_state_init(ifp); 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")) @@ -162,7 +164,7 @@ ready_msg (char *msgnam) 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; @@ -184,7 +186,7 @@ ready_msg (char *msgnam) 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: diff --git a/uip/fmttest.c b/uip/fmttest.c index 3dfdf9b6..d848bea0 100644 --- a/uip/fmttest.c +++ b/uip/fmttest.c @@ -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]; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; 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 */ + gstate = m_getfld_state_init(in); 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: @@ -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); - 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); - state = m_getfld(&gstate, name, rbuf, &bufsz, in); + state = m_getfld2(&gstate, name, rbuf, &bufsz); } 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); - m_getfld(&gstate, name, rbuf + i, &bufsz, in); + m_getfld2(&gstate, name, rbuf + i, &bufsz); } fmt_addcomptext("body", rbuf); diff --git a/uip/forwsbr.c b/uip/forwsbr.c index 4f76c386..bce58aee 100644 --- a/uip/forwsbr.c +++ b/uip/forwsbr.c @@ -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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; /* * 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? */ + gstate = m_getfld_state_init(tmp); 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: @@ -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; - 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; - state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp); + state = m_getfld2(&gstate, name, msgbuf, &msg_count); } break; @@ -120,7 +121,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, goto finished; default: - adios(NULL, "m_getfld() returned %d", state); + adios(NULL, "m_getfld2() returned %d", state); } } diff --git a/uip/mhbuildsbr.c b/uip/mhbuildsbr.c index e34dd978..7fc0111f 100644 --- a/uip/mhbuildsbr.c +++ b/uip/mhbuildsbr.c @@ -134,7 +134,7 @@ build_mime (char *infile, int autobuild, int dist, int directives, 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; @@ -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. */ - m_getfld_track_filepos (&gstate, in); + gstate = m_getfld_state_init(in); + m_getfld_track_filepos2(&gstate); 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++; @@ -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; - state = m_getfld (&gstate, name, buf, &bufsz, in); + state = m_getfld2(&gstate, name, buf, &bufsz); } 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; - state = m_getfld (&gstate, name, buf, &bufsz, in); + state = m_getfld2(&gstate, name, buf, &bufsz); 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; - /* 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. */ @@ -289,7 +290,7 @@ build_mime (char *infile, int autobuild, int dist, int directives, 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. */ diff --git a/uip/mhcachesbr.c b/uip/mhcachesbr.c index f343bf39..0c61fc0f 100644 --- a/uip/mhcachesbr.c +++ b/uip/mhcachesbr.c @@ -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; - 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; + gstate = m_getfld_state_init(fp); 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); @@ -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; - state = m_getfld (&gstate, name, buf, &bufsz, fp); + state = m_getfld2(&gstate, name, buf, &bufsz); cp = add (buf, cp); } } diff --git a/uip/mhfixmsg.c b/uip/mhfixmsg.c index aed480ea..2737dac8 100644 --- a/uip/mhfixmsg.c +++ b/uip/mhfixmsg.c @@ -818,7 +818,7 @@ replace_boundary (CT ct, char *file, char *boundary) { 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) { @@ -837,10 +837,11 @@ replace_boundary (CT ct, char *file, char *boundary) { return NOTOK; } + gstate = m_getfld_state_init(fpin); 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++; @@ -852,7 +853,7 @@ replace_boundary (CT ct, char *file, char *boundary) { /* 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 */ } diff --git a/uip/mhlsbr.c b/uip/mhlsbr.c index a4402c56..e16f31d9 100644 --- a/uip/mhlsbr.c +++ b/uip/mhlsbr.c @@ -329,7 +329,7 @@ static void pipeser (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); @@ -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]; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; 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; - 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); @@ -1011,7 +1012,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec) 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; @@ -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; - 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); } @@ -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) { - 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; - 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; @@ -1726,8 +1727,8 @@ compile_filterargs (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]; @@ -1777,7 +1778,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp, 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) { @@ -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"); } - state = m_getfld (&gstate, name, buf, &bufsz2, fp); + state = m_getfld2(&gstate, name, buf, &bufsz2); } /* diff --git a/uip/mhparse.c b/uip/mhparse.c index 76dd7f71..74e03a7e 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -295,7 +295,7 @@ get_content (FILE *in, char *file, int toplevel) char *np, *vp; CT ct; HF hp; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; /* 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. */ - m_getfld_track_filepos (&gstate, in); + gstate = m_getfld_state_init(in); + m_getfld_track_filepos2(&gstate); 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++; @@ -322,7 +323,7 @@ get_content (FILE *in, char *file, int toplevel) /* 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 */ } diff --git a/uip/new.c b/uip/new.c index c82979ec..f9549331 100644 --- 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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; /* 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; - 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; - state = m_getfld (&gstate, name, field, &fieldsz, fp); + state = m_getfld2(&gstate, name, field, &fieldsz); cp = add (field, cp); } diff --git a/uip/picksbr.c b/uip/picksbr.c index ca330b96..3f8a17c2 100644 --- a/uip/picksbr.c +++ b/uip/picksbr.c @@ -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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; NMH_UNUSED (stop); fseek (fp, start, SEEK_SET); + gstate = m_getfld_state_init(fp); 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; - 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)) diff --git a/uip/post.c b/uip/post.c index 9282a71c..5f70e62f 100644 --- a/uip/post.c +++ b/uip/post.c @@ -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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; 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; + gstate = m_getfld_state_init(in); 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; - state = m_getfld (&gstate, name, buf, &bufsz, in); + state = m_getfld2(&gstate, name, buf, &bufsz); 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; - state = m_getfld (&gstate, name, buf, &bufsz, in); + state = m_getfld2(&gstate, name, buf, &bufsz); fputs (buf, out); } break; diff --git a/uip/prompter.c b/uip/prompter.c index 303d2ad4..5c4926a0 100644 --- a/uip/prompter.c +++ b/uip/prompter.c @@ -64,7 +64,7 @@ main (int argc, char **argv) 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; } @@ -182,9 +182,10 @@ main (int argc, char **argv) /* * Loop through the lines of the draft skeleton. */ + gstate = m_getfld_state_init(in); 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: /* @@ -201,7 +202,7 @@ main (int argc, char **argv) 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); } @@ -260,7 +261,7 @@ abort: 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 diff --git a/uip/rcvdist.c b/uip/rcvdist.c index 1ad585d2..a123f8e9 100644 --- a/uip/rcvdist.c +++ b/uip/rcvdist.c @@ -177,7 +177,7 @@ rcvdistout (FILE *inb, char *form, char *addrs) 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"); @@ -197,9 +197,10 @@ rcvdistout (FILE *inb, char *form, char *addrs) if (cptr) cptr->c_text = addrs; + gstate = m_getfld_state_init(inb); 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); @@ -207,7 +208,7 @@ rcvdistout (FILE *inb, char *form, char *addrs) 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; } @@ -215,7 +216,7 @@ rcvdistout (FILE *inb, char *form, char *addrs) 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; @@ -226,7 +227,7 @@ rcvdistout (FILE *inb, char *form, char *addrs) goto finished; default: - adios (NULL, "m_getfld() returned %d", state); + adios (NULL, "m_getfld2() returned %d", state); } } finished: ; diff --git a/uip/replsbr.c b/uip/replsbr.c index e63ce755..d3ba2709 100644 --- a/uip/replsbr.c +++ b/uip/replsbr.c @@ -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 */ - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; 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" */ + gstate = m_getfld_state_init(inb); 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: @@ -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; - 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; } @@ -136,7 +137,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen, 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; @@ -147,7 +148,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen, goto finished; default: - adios (NULL, "m_getfld() returned %d", state); + adios (NULL, "m_getfld2() returned %d", state); } } diff --git a/uip/sendsbr.c b/uip/sendsbr.c index 7d54f43b..796b58ea 100644 --- a/uip/sendsbr.c +++ b/uip/sendsbr.c @@ -198,7 +198,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft, 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"); @@ -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. */ - m_getfld_track_filepos (&gstate, in); + gstate = m_getfld_state_init(in); + m_getfld_track_filepos2(&gstate); 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++; @@ -224,7 +225,7 @@ splitmsg (char **vec, int vecp, char *program, char *drft, 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) @@ -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; - state = m_getfld (&gstate, name, buffer, &bufsz, in); + state = m_getfld2(&gstate, name, buffer, &bufsz); 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; - state = m_getfld (&gstate, name, buffer, &bufsz, in); + state = m_getfld2(&gstate, name, buffer, &bufsz); 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; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; 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; + gstate = m_getfld_state_init(in); 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: @@ -941,14 +943,14 @@ get_message_header_info(FILE *in, char *format) { 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; - state = m_getfld(&gstate, name, rbuf, &bufsz, in); + state = m_getfld2(&gstate, name, rbuf, &bufsz); } break; } diff --git a/uip/show.c b/uip/show.c index ac012927..dfe5052c 100644 --- a/uip/show.c +++ b/uip/show.c @@ -370,14 +370,14 @@ is_nontext (char *msgnam) 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; - + gstate = m_getfld_state_init(fp); 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: /* @@ -390,7 +390,7 @@ is_nontext (char *msgnam) 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; @@ -495,7 +495,7 @@ out: 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++) @@ -522,7 +522,7 @@ out: */ while (state == FLDPLUS) { bufsz = sizeof buf; - state = m_getfld (&gstate, name, buf, &bufsz, fp); + state = m_getfld2(&gstate, name, buf, &bufsz); } break; diff --git a/uip/slocal.c b/uip/slocal.c index 97897ad1..bf58fd0b 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -713,7 +713,7 @@ parse (int fd) 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; @@ -737,15 +737,16 @@ parse (int fd) * Scan the headers of the message and build * a lookup table. */ + gstate = m_getfld_state_init(in); 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; - 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++) { @@ -786,7 +787,7 @@ parse (int fd) break; default: - inform("internal error in m_getfld"); + inform("internal error in m_getfld2"); fclose (in); return -1; } @@ -1405,7 +1406,7 @@ suppress_duplicates (int fd, char *file) 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; @@ -1415,10 +1416,11 @@ suppress_duplicates (int fd, char *file) } rewind (in); + gstate = m_getfld_state_init(in); 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: @@ -1426,7 +1428,7 @@ suppress_duplicates (int fd, char *file) 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; } @@ -1434,7 +1436,7 @@ suppress_duplicates (int fd, char *file) 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); diff --git a/uip/sortm.c b/uip/sortm.c index dc62f563..3ebb5325 100644 --- a/uip/sortm.c +++ b/uip/sortm.c @@ -340,15 +340,16 @@ get_fields (char *datesw, int msg, struct smsg *smsg) 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); } + gstate = m_getfld_state_init(in); 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++; @@ -356,7 +357,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg) 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) @@ -365,7 +366,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg) 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) @@ -374,7 +375,7 @@ get_fields (char *datesw, int msg, struct smsg *smsg) /* 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; diff --git a/uip/whatnowsbr.c b/uip/whatnowsbr.c index 802535b3..4fd8cbdb 100644 --- a/uip/whatnowsbr.c +++ b/uip/whatnowsbr.c @@ -1312,7 +1312,7 @@ static int 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; @@ -1321,9 +1321,10 @@ checkmimeheader (char *drft) return (0); } + gstate = m_getfld_state_init(f); 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) {