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:
/*
* 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.
*/
- 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:
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);
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;
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);
- /* 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;
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);
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);
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
- /* 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));
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);
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-"))
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);
}
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);
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"))
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;
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:
{
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;
* 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:
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);
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);
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
+ 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:
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);
- adios(NULL, "m_getfld() returned %d", state);
+ adios(NULL, "m_getfld2() returned %d", state);
- 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;
* 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++;
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);
/* 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 */
}
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. */
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. */
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);
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);
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) {
+ 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++;
/* 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 */
}
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);
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;
+ 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);
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;
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);
}
!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;
-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];
- * 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) {
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);
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);
* 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++;
/* 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 */
}
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 */
/*
- /* 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);
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))
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; }
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);
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;
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; }
/*
* 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:
/*
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);
}
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
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");
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);
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;
}
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);
- adios (NULL, "m_getfld() returned %d", state);
+ adios (NULL, "m_getfld2() returned %d", state);
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;
/*
* 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:
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;
}
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);
- adios (NULL, "m_getfld() returned %d", state);
+ adios (NULL, "m_getfld2() returned %d", state);
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");
* 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++;
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)
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 {
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);
}
}
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;
*/
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:
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);
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:
/*
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;
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++)
*/
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);
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;
* 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++) {
- inform("internal error in m_getfld");
+ inform("internal error in m_getfld2");
fclose (in);
return -1;
}
fclose (in);
return -1;
}
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;
+ 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:
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);
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);
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++;
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)
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)
/* 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);
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;
+ 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) {