]> diplodocus.org Git - nmh/commitdiff
Changed m_getfld() to automatically allocate a new state
authorDavid Levine <levinedl@acm.org>
Wed, 23 Jan 2013 03:02:49 +0000 (21:02 -0600)
committerDavid Levine <levinedl@acm.org>
Wed, 23 Jan 2013 03:02:49 +0000 (21:02 -0600)
instance as needed.  Callers no longer use
m_getfld_state_init().

27 files changed:
h/prototypes.h
sbr/m_getfld.c
sbr/readconfig.c
sbr/seq_read.c
uip/distsbr.c
uip/forwsbr.c
uip/inc.c
uip/mhbuildsbr.c
uip/mhcachesbr.c
uip/mhlsbr.c
uip/mhparse.c
uip/msh.c
uip/mshcmds.c
uip/new.c
uip/picksbr.c
uip/post.c
uip/prompter.c
uip/rcvdist.c
uip/rcvtty.c
uip/replsbr.c
uip/scan.c
uip/scansbr.c
uip/sendsbr.c
uip/show.c
uip/slocal.c
uip/sortm.c
uip/whatnowsbr.c

index a1f1edc99906fcd7adbe9419976f58c0c2e8255f..bd44f5370e2bcd648f951ff2a61e7fdccd57edb4 100644 (file)
@@ -76,10 +76,9 @@ char *m_backup (char *);
 int m_convert (struct msgs *, char *);
 char *m_draft (char *, char *, int, int *);
 void m_eomsbr (m_getfld_state_t, int (*)(int));
 int m_convert (struct msgs *, char *);
 char *m_draft (char *, char *, int, int *);
 void m_eomsbr (m_getfld_state_t, int (*)(int));
-void m_getfld_state_init (m_getfld_state_t *);
 void m_getfld_state_reset (m_getfld_state_t *);
 void m_getfld_state_destroy (m_getfld_state_t *);
 void m_getfld_state_reset (m_getfld_state_t *);
 void m_getfld_state_destroy (m_getfld_state_t *);
-int m_getfld (m_getfld_state_t, unsigned char[NAMESZ], unsigned char *, int *, FILE *);
+int m_getfld (m_getfld_state_t *, unsigned char[NAMESZ], unsigned char *, int *, FILE *);
 int m_gmprot (void);
 char *m_maildir (char *);
 char *m_mailpath (char *);
 int m_gmprot (void);
 char *m_maildir (char *);
 char *m_mailpath (char *);
@@ -88,7 +87,7 @@ int m_putenv (char *, char *);
 int m_rand (unsigned char *, size_t);
 char *m_mktemp(const char *, int *, FILE **);
 char *m_mktemp2(const char *, const char *, int *, FILE **);
 int m_rand (unsigned char *, size_t);
 char *m_mktemp(const char *, int *, FILE **);
 char *m_mktemp2(const char *, const char *, int *, FILE **);
-void m_unknown(m_getfld_state_t, FILE *);
+void m_unknown(m_getfld_state_t *, FILE *);
 int makedir (char *);
 char *message_id (time_t, int);
 char *nmh_getpass(const char *);
 int makedir (char *);
 char *message_id (time_t, int);
 char *nmh_getpass(const char *);
index 7268aff3307d26f10acfa1b3e6caf458996b6c09..8303b54a4a08579334cf4a8e52356a3101fb9476 100644 (file)
@@ -180,9 +180,9 @@ maildrops:
 
 Usage
 =====
 
 Usage
 =====
-    m_getfld_state_t gstate;
-    m_getfld_state_init (&gstate);
-    int state = m_getfld (gstate, ...);
+    m_getfld_state_t gstate = 0;
+       ...
+    int state = m_getfld (&gstate, ...);
        ...
     m_getfld_state_destroy (&gstate);
 
        ...
     m_getfld_state_destroy (&gstate);
 
@@ -255,33 +255,42 @@ struct m_getfld_state {
     int state;
 };
 
     int state;
 };
 
+static
 void
 void
-m_getfld_state_init (m_getfld_state_t *s) {
-    *s = (m_getfld_state_t) mh_xmalloc(sizeof (struct m_getfld_state));
-    (*s)->readpos = (*s)->end = (*s)->msg_buf;
-    (*s)->bytes_read = (*s)->total_bytes_read = 0;
-    (*s)->last_caller_pos = (*s)->last_internal_pos = 0;
-    /* (*s)->iob gets loaded on every call to m_getfld()/m_unknown(). */
-    (*s)->pat_map = NULL;
-    (*s)->msg_style = MS_DEFAULT;
-    (*s)->msg_delim = "";
-    (*s)->fdelim = (*s)->delimend = (*s)->edelim = NULL;
-    (*s)->fdelimlen = (*s)->edelimlen = 0;
-    (*s)->eom_action = NULL;
-    (*s)->state = FLD;
+m_getfld_state_init (m_getfld_state_t *gstate) {
+    m_getfld_state_t s;
+
+    s = *gstate = (m_getfld_state_t) mh_xmalloc(sizeof (struct m_getfld_state));
+    s->readpos = s->end = s->msg_buf;
+    s->bytes_read = s->total_bytes_read = 0;
+    s->last_caller_pos = s->last_internal_pos = 0;
+    /* s->iob gets loaded on every call to m_getfld()/m_unknown(). */
+    s->pat_map = NULL;
+    s->msg_style = MS_DEFAULT;
+    s->msg_delim = "";
+    s->fdelim = s->delimend = s->edelim = NULL;
+    s->fdelimlen = s->edelimlen = 0;
+    s->eom_action = NULL;
+    s->state = FLD;
 }
 
 /* scan() needs to force a state an initial state of FLD for each message. */
 void
 }
 
 /* scan() needs to force a state an initial state of FLD for each message. */
 void
-m_getfld_state_reset (m_getfld_state_t *s) {
-    (*s)->state = FLD;
+m_getfld_state_reset (m_getfld_state_t *gstate) {
+    if (! *gstate) {
+       m_getfld_state_init (gstate);
+    }
+
+    (*gstate)->state = FLD;
 }
 
 }
 
-void m_getfld_state_destroy (m_getfld_state_t *s) {
-    if (*s) {
-       if ((*s)->fdelim) free ((*s)->fdelim-1);
-       free (*s);
-       *s = 0;
+void m_getfld_state_destroy (m_getfld_state_t *gstate) {
+    m_getfld_state_t s = *gstate;
+
+    if (s) {
+       if (s->fdelim) free (s->fdelim-1);
+       free (s);
+       *gstate = 0;
     }
 }
 
     }
 }
 
@@ -315,14 +324,22 @@ void m_getfld_state_destroy (m_getfld_state_t *s) {
 
 
 static void
 
 
 static void
-enter_getfld (m_getfld_state_t s, FILE *iob) {
+enter_getfld (m_getfld_state_t *gstate, FILE *iob) {
+    m_getfld_state_t s;
     off_t pos = ftello (iob);
 
     off_t pos = ftello (iob);
 
-    /* Ugly.  The parser opens the input file multiple times, so we
-       have to always use the FILE * that's passed to m_getfld().
-       Though this might not be necessary any more, as long as the
-       parser inits a new m_getfld_state for each file.  See comment
-       below about the readpos shift code being currently unused. */
+    if (! *gstate) {
+       m_getfld_state_init (gstate);
+    }
+    s = *gstate;
+    s->bytes_read = 0;
+
+    /* Ugly.  The parser (used to) open the input file multiple times,
+       so we have to always use the FILE * that's passed to
+       m_getfld().  Though this might not be necessary any more, as
+       long as the parser inits a new m_getfld_state for each file.
+       See comment below about the readpos shift code being currently
+       unused. */
     s->iob = iob;
 
     if (pos != 0  ||  s->last_internal_pos != 0) {
     s->iob = iob;
 
     if (pos != 0  ||  s->last_internal_pos != 0) {
@@ -365,8 +382,6 @@ enter_getfld (m_getfld_state_t s, FILE *iob) {
            fseeko (iob, pos, SEEK_SET);
        }
     }
            fseeko (iob, pos, SEEK_SET);
        }
     }
-
-    s->bytes_read = 0;
 }
 
 static void
 }
 
 static void
@@ -439,13 +454,15 @@ Ungetc (int c, m_getfld_state_t s) {
 
 
 int
 
 
 int
-m_getfld (m_getfld_state_t s, unsigned char name[NAMESZ], unsigned char *buf,
-          int *bufsz, FILE *iob)
+m_getfld (m_getfld_state_t *gstate, unsigned char name[NAMESZ],
+          unsigned char *buf, int *bufsz, FILE *iob)
 {
 {
+    m_getfld_state_t s;
     register unsigned char *cp;
     register int max, n, c;
 
     register unsigned char *cp;
     register int max, n, c;
 
-    enter_getfld (s, iob);
+    enter_getfld (gstate, iob);
+    s = *gstate;
 
     if ((c = Getc(s)) < 0) {
        *bufsz = *buf = 0;
 
     if ((c = Getc(s)) < 0) {
        *bufsz = *buf = 0;
@@ -710,8 +727,9 @@ m_getfld (m_getfld_state_t s, unsigned char name[NAMESZ], unsigned char *buf,
 
 
 void
 
 
 void
-m_unknown(m_getfld_state_t s, FILE *iob)
+m_unknown(m_getfld_state_t *gstate, FILE *iob)
 {
 {
+    m_getfld_state_t s;
     register int c;
     char text[MAX_DELIMITER_SIZE];
     char from[] = "From ";
     register int c;
     char text[MAX_DELIMITER_SIZE];
     char from[] = "From ";
@@ -719,7 +737,8 @@ m_unknown(m_getfld_state_t s, FILE *iob)
     register char *delimstr;
     unsigned int i;
 
     register char *delimstr;
     unsigned int i;
 
-    enter_getfld (s, iob);
+    enter_getfld (gstate, iob);
+    s = *gstate;
 
 /*
  * Figure out what the message delimitter string is for this
 
 /*
  * Figure out what the message delimitter string is for this
index 4e02738ca1e0aeba0f462dc26c0767b754e92b5d..b25ea99aa2f6f4c93e40c9c1ffbac1b5a22376ba 100644 (file)
@@ -52,17 +52,16 @@ readconfig (struct node **npp, FILE *ib, char *file, int ctx)
     char name[NAMESZ], field[BUFSIZ];
     register struct node *np;
     register struct procstr *ps;
     char name[NAMESZ], field[BUFSIZ];
     register struct node *np;
     register struct procstr *ps;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if (npp == NULL && (npp = opp) == NULL) {
        admonish (NULL, "bug: readconfig called but pump not primed");
        return;
     }
 
 
     if (npp == NULL && (npp = opp) == NULL) {
        admonish (NULL, "bug: readconfig called but pump not primed");
        return;
     }
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (gstate, name, field, &fieldsz, ib)) {
+       switch (state = m_getfld (&gstate, name, field, &fieldsz, ib)) {
            case FLD:
            case FLDPLUS:
                np = (struct node *) mh_xmalloc (sizeof(*np));
            case FLD:
            case FLDPLUS:
                np = (struct node *) mh_xmalloc (sizeof(*np));
@@ -73,7 +72,7 @@ readconfig (struct node **npp, FILE *ib, char *file, int ctx)
                    cp = getcpy (field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
                    cp = getcpy (field);
                    while (state == FLDPLUS) {
                        fieldsz = sizeof field;
-                       state = m_getfld (gstate, name, field, &fieldsz, ib);
+                       state = m_getfld (&gstate, name, field, &fieldsz, ib);
                        cp = add (field, cp);
                    }
                    np->n_field = trimcpy (cp);
                        cp = add (field, cp);
                    }
                    np->n_field = trimcpy (cp);
index 1b6844133db8a43a82121fca7ca1a23942b33200..a807ef7d6169b0b000c57535c163590f8e190fd5 100644 (file)
@@ -59,7 +59,7 @@ seq_public (struct msgs *mp)
     char *cp, seqfile[PATH_MAX];
     char name[NAMESZ], field[BUFSIZ];
     FILE *fp;
     char *cp, seqfile[PATH_MAX];
     char name[NAMESZ], field[BUFSIZ];
     FILE *fp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     /*
      * If mh_seq == NULL (such as if nmh been compiled with
 
     /*
      * If mh_seq == NULL (such as if nmh been compiled with
@@ -77,17 +77,16 @@ seq_public (struct msgs *mp)
        return;
 
     /* Use m_getfld to scan sequence file */
        return;
 
     /* Use m_getfld to scan sequence file */
-    m_getfld_state_init (&gstate);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (gstate, name, field, &fieldsz, fp)) {
+       switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) {
            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_getfld (&gstate, name, field, &fieldsz, fp);
                        cp = add (field, cp);
                    }
                    seq_init (mp, getcpy (name), trimcpy (cp));
                        cp = add (field, cp);
                    }
                    seq_init (mp, getcpy (name), trimcpy (cp));
index 457536a318b4a72be3bfdb76d2a0110f17e86afc..b5119fbe88a39d9692b3b1dd78d1938e391881ef 100644 (file)
@@ -32,7 +32,7 @@ distout (char *drft, char *msgnam, char *backup)
     register char *resent;
     char name[NAMESZ], buffer[BUFSIZ];
     register FILE *ifp, *ofp;
     register char *resent;
     char name[NAMESZ], buffer[BUFSIZ];
     register FILE *ifp, *ofp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     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);
@@ -47,10 +47,9 @@ distout (char *drft, char *msgnam, char *backup)
     lseek (hdrfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */
     cpydata (hdrfd, fileno (ofp), msgnam, drft);
 
     lseek (hdrfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */
     cpydata (hdrfd, fileno (ofp), msgnam, drft);
 
-    m_getfld_state_init (&gstate);
     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_getfld (&gstate, name, buffer, &buffersz, ifp)) {
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "distribute-"))
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "distribute-"))
@@ -67,7 +66,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_getfld (&gstate, name, buffer, &buffersz, ifp);
                    resent = add (buffer, resent);
                    fputs (buffer, ofp);
                }
                    resent = add (buffer, resent);
                    fputs (buffer, ofp);
                }
@@ -131,7 +130,7 @@ ready_msg (char *msgnam)
     char name[NAMESZ], buffer[BUFSIZ], tmpfil[BUFSIZ];
     register FILE *ifp, *ofp;
     char *cp = NULL;
     char name[NAMESZ], buffer[BUFSIZ], tmpfil[BUFSIZ];
     register FILE *ifp, *ofp;
     char *cp = NULL;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if (hdrfd != NOTOK)
        close (hdrfd), hdrfd = NOTOK;
 
     if (hdrfd != NOTOK)
        close (hdrfd), hdrfd = NOTOK;
@@ -152,10 +151,9 @@ ready_msg (char *msgnam)
        adios (NULL, "no file descriptors -- you lose big");
     unlink (tmpfil);
 
        adios (NULL, "no file descriptors -- you lose big");
     unlink (tmpfil);
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int buffersz = sizeof buffer;
     for (;;) {
        int buffersz = sizeof buffer;
-       switch (state = m_getfld (gstate, name, buffer, &buffersz, ifp)) {
+       switch (state = m_getfld (&gstate, name, buffer, &buffersz, ifp)) {
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "resent"))
            case FLD: 
            case FLDPLUS: 
                if (uprf (name, "resent"))
@@ -163,7 +161,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_getfld (&gstate, name, buffer, &buffersz, ifp);
                    fputs (buffer, ofp);
                }
                break;
                    fputs (buffer, ofp);
                }
                break;
@@ -184,7 +182,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_getfld (&gstate, name, buffer, &buffersz, ifp);
                    fputs (buffer, ofp);
                }
            case FILEEOF: 
                    fputs (buffer, ofp);
                }
            case FILEEOF: 
index 592f1eb26adfffddd99550ece339a9425c0c3878..901e6328a1996f38262b3a4d6ceaf0c05cfb87fc 100644 (file)
@@ -54,7 +54,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
     register struct comp *cptr;
     struct format *fmt;
     char *cp = NULL;
     register struct comp *cptr;
     struct format *fmt;
     char *cp = NULL;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     /*
      * Open the message we'll be scanning for components
 
     /*
      * Open the message we'll be scanning for components
@@ -87,10 +87,9 @@ build_form (char *form, char *digest, int *dat, char *from, char *to,
      * these routines?
      */
 
      * these routines?
      */
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int msg_count = sizeof msgbuf;
     for (;;) {
        int msg_count = sizeof msgbuf;
-       state = m_getfld (gstate, name, msgbuf, &msg_count, tmp);
+       state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
        switch (state) {
            case FLD:
            case FLDPLUS:
        switch (state) {
            case FLD:
            case FLDPLUS:
@@ -104,13 +103,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_getfld (&gstate, name, msgbuf, &msg_count, tmp);
                        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_getfld (&gstate, name, msgbuf, &msg_count, tmp);
                break;
 
            case LENERR:
                break;
 
            case LENERR:
index 3d0830e564690a649ba82222a72a58ad74c341dd..210c3b63ff546c9a081addb81956b4d610ec882e 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -46,8 +46,6 @@
 # define SASLminc(a)  0
 #endif
 
 # define SASLminc(a)  0
 #endif
 
-extern m_getfld_state_t gstate;
-
 static struct swit switches[] = {
 #define        AUDSW                      0
     { "audit audit-file", 0 },
 static struct swit switches[] = {
 #define        AUDSW                      0
     { "audit audit-file", 0 },
@@ -173,6 +171,8 @@ static FILE *in;
  */
 char *map_name(char *);
 
  */
 char *map_name(char *);
 
+extern m_getfld_state_t gstate;
+
 static void inc_done(int) NORETURN;
 static int pop_action(char *);
 static int pop_pack(char *);
 static void inc_done(int) NORETURN;
 static int pop_action(char *);
 static int pop_pack(char *);
@@ -589,7 +589,6 @@ go_to_it:
        fflush (stdout);
     }
 
        fflush (stdout);
     }
 
-    m_getfld_state_init (&gstate);
 
     /*
      * Get the mail from a POP server
 
     /*
      * Get the mail from a POP server
@@ -724,7 +723,7 @@ go_to_it:
      * Get the mail from file (usually mail spool)
      */
     if (inc_type == INC_FILE && Maildir == NULL) {
      * Get the mail from file (usually mail spool)
      */
     if (inc_type == INC_FILE && Maildir == NULL) {
-       m_unknown (gstate, in);         /* the MAGIC invocation... */
+       m_unknown (&gstate, in);                /* the MAGIC invocation... */
        hghnum = msgnum = mp->hghmsg;
        for (;;) {
            /*
        hghnum = msgnum = mp->hghmsg;
        for (;;) {
            /*
index 76c6dce026bea46139b02dfe1c687e7330244d65..5b7f074689e87b8e32512f2a648b4a67ee947c48 100644 (file)
@@ -135,7 +135,7 @@ build_mime (char *infile, int directives)
     struct part **pp;
     CT ct;
     FILE *in;
     struct part **pp;
     CT ct;
     FILE *in;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     directive_init(directives);
 
 
     directive_init(directives);
 
@@ -163,10 +163,9 @@ build_mime (char *infile, 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_state_init (&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_getfld (&gstate, name, buf, &bufsz, in)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -183,7 +182,7 @@ build_mime (char *infile, int directives)
            if (!mh_strcasecmp (name, TYPE_FIELD)) {
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
            if (!mh_strcasecmp (name, TYPE_FIELD)) {
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, in);
+                   state = m_getfld (&gstate, name, buf, &bufsz, in);
                }
                goto finish_field;
            }
                }
                goto finish_field;
            }
@@ -195,7 +194,7 @@ build_mime (char *infile, 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_getfld (&gstate, name, buf, &bufsz, in);
                vp = add (buf, vp);     /* add to previous value */
            }
 
                vp = add (buf, vp);     /* add to previous value */
            }
 
index 94c4bb34adefd97119e7a52f2d9d9b3c5ade39ff..25ac9ab0b7a430654b9747e870dcf8752b9c08f7 100644 (file)
@@ -376,18 +376,17 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen)
     int        state;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
     int        state;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if (!(fp = lkfopen (mapfile, "r")))
        return NOTOK;
 
 
     if (!(fp = lkfopen (mapfile, "r")))
        return NOTOK;
 
-    m_getfld_state_init (&gstate);
     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_getfld (&gstate, name, buf, &bufsz, fp)) {
            case FLD:
            case FLDPLUS:
                strncpy (mapname, name, namelen);
            case FLD:
            case FLDPLUS:
                strncpy (mapname, name, namelen);
@@ -397,7 +396,7 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen)
                    cp = add (buf, NULL);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
                    cp = add (buf, NULL);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, fp);
+                       state = m_getfld (&gstate, name, buf, &bufsz, fp);
                        cp = add (buf, cp);
                    }
                }
                        cp = add (buf, cp);
                    }
                }
index bfa06873a3d281175258ca9fb01dc3942467b3d0..58ffe94c26939315d3552d2c4eff5e3775d2388f 100644 (file)
@@ -954,7 +954,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
     int state, bucket;
     struct mcomp *c1, *c2, *c3;
     char **ip, name[NAMESZ], buf[BUFSIZ];
     int state, bucket;
     struct mcomp *c1, *c2, *c3;
     char **ip, name[NAMESZ], buf[BUFSIZ];
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     compile_filterargs();
 
 
     compile_filterargs();
 
@@ -1016,10 +1016,9 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
        }
     }
 
        }
     }
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
            case FLD: 
            case FLDPLUS: 
                bucket = fmt_addcomptext(name, buf);
            case FLD: 
            case FLDPLUS: 
                bucket = fmt_addcomptext(name, buf);
@@ -1027,7 +1026,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                    if (!mh_strcasecmp (name, *ip)) {
                        while (state == FLDPLUS) {
                            bufsz = sizeof buf;
                    if (!mh_strcasecmp (name, *ip)) {
                        while (state == FLDPLUS) {
                            bufsz = sizeof buf;
-                           state = m_getfld (gstate, name, buf, &bufsz, fp);
+                           state = m_getfld (&gstate, name, buf, &bufsz, fp);
                            fmt_appendcomp(bucket, name, buf);
                        }
                        break;
                            fmt_appendcomp(bucket, name, buf);
                        }
                        break;
@@ -1050,7 +1049,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_getfld (&gstate, name, buf, &bufsz, fp);
                    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);
                }
@@ -1090,7 +1089,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
                            while (state == BODY) {
                                putcomp (c1, &holder, BODYCOMP);
                                bufsz = sizeof buf;
                            while (state == BODY) {
                                putcomp (c1, &holder, BODYCOMP);
                                bufsz = sizeof buf;
-                               state = m_getfld (gstate, name, holder.c_text,
+                               state = m_getfld (&gstate, name, holder.c_text,
                                            &bufsz, fp);
                            }
                            free (holder.c_text);
                                            &bufsz, fp);
                            }
                            free (holder.c_text);
@@ -1849,7 +1848,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp,
        while (state == BODY) {
            int bufsz2 = bufsz;
            write(fdinput[1], buf, strlen(buf));
        while (state == BODY) {
            int bufsz2 = bufsz;
            write(fdinput[1], buf, strlen(buf));
-           state = m_getfld (gstate, name, buf, &bufsz2, fp);
+           state = m_getfld (&gstate, name, buf, &bufsz2, fp);
        }
 
        /*
        }
 
        /*
index bf93b18ef51a0c4fd7befb1e1138af291e51e763..39a701dbf17c6931cb726e12a71d5f6e1bf02679 100644 (file)
@@ -262,7 +262,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;
+    m_getfld_state_t gstate = 0;
 
     /* allocate the content structure */
     if (!(ct = (CT) calloc (1, sizeof(*ct))))
 
     /* allocate the content structure */
     if (!(ct = (CT) calloc (1, sizeof(*ct))))
@@ -276,10 +276,9 @@ 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_state_init (&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_getfld (&gstate, name, buf, &bufsz, in)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -291,7 +290,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_getfld (&gstate, name, buf, &bufsz, in);
                vp = add (buf, vp);     /* add to previous value */
            }
 
                vp = add (buf, vp);     /* add to previous value */
            }
 
index 7dc15d36fdd639e16ced955eb2507d2cd33129fe..02a613be4f2c293990a52bbf6f5cf02ad177c90c 100644 (file)
--- a/uip/msh.c
+++ b/uip/msh.c
@@ -150,8 +150,6 @@ int interrupted;            /* SIGINT detected  */
 int broken_pipe;               /* SIGPIPE detected */
 int told_to_quit;              /* SIGQUIT detected */
 
 int broken_pipe;               /* SIGPIPE detected */
 int told_to_quit;              /* SIGQUIT detected */
 
-extern m_getfld_state_t gstate;
-
 /*
  * prototypes
  */
 /*
  * prototypes
  */
@@ -166,6 +164,8 @@ void seq_setcur (struct msgs *, int);
 void padios (char *, char *, ...);
 void padvise (char *, char *, ...);
 
 void padios (char *, char *, ...);
 void padvise (char *, char *, ...);
 
+extern m_getfld_state_t gstate;
+
 
 /*
  * static prototypes
 
 /*
  * static prototypes
@@ -344,7 +344,6 @@ main (int argc, char **argv)
 #endif /* SIGTSTP */
     }
 
 #endif /* SIGTSTP */
     }
 
-    m_getfld_state_init (&gstate);
     if (folder)
        fsetup (folder);
     else
     if (folder)
        fsetup (folder);
     else
@@ -717,7 +716,7 @@ setup (char *file)
     mp->msgattrs[0] = getcpy ("unseen");
     mp->msgattrs[1] = NULL;
 
     mp->msgattrs[0] = getcpy ("unseen");
     mp->msgattrs[1] = NULL;
 
-    m_unknown (gstate, fp);            /* the MAGIC invocation */
+    m_unknown (&gstate, fp);           /* the MAGIC invocation */
     if (fmsh) {
        free (fmsh);
        fmsh = NULL;
     if (fmsh) {
        free (fmsh);
        fmsh = NULL;
@@ -1011,14 +1010,14 @@ readid (int msgnum)
     zp = msh_ready (msgnum, 0);
     for (;;) {
        int bufsz = sizeof buf;
     zp = msh_ready (msgnum, 0);
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, zp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, zp)) {
            case FLD: 
            case FLDPLUS: 
                if (!mh_strcasecmp (name, BBoard_ID)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
            case FLD: 
            case FLDPLUS: 
                if (!mh_strcasecmp (name, BBoard_ID)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, zp);
+                       state = m_getfld (&gstate, name, buf, &bufsz, zp);
                        bp = add (buf, bp);
                    }
                    i = atoi (bp);
                        bp = add (buf, bp);
                    }
                    i = atoi (bp);
@@ -1030,7 +1029,7 @@ readid (int msgnum)
                }
                while (state == FLDPLUS)
                    bufsz = sizeof buf;
                }
                while (state == FLDPLUS)
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, zp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, zp);
                continue;
 
            default: 
                continue;
 
            default: 
index 9ab1592eb5471289b15405e3259dea4fea1adf7c..b8bc425038ce5bdfed61205a4d13a98e3d4882ad 100644 (file)
@@ -2439,7 +2439,7 @@ is_nontext (int msgnum)
 
     for (;;) {
        int bufsz = sizeof buf;
 
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
        case FLD:
        case FLDPLUS:
            /*
        case FLD:
        case FLDPLUS:
            /*
@@ -2452,7 +2452,7 @@ is_nontext (int msgnum)
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                    cp = add (buf, cp);
                }
                bp = cp;
                    cp = add (buf, cp);
                }
                bp = cp;
@@ -2556,7 +2556,7 @@ out:
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace (*bp); bp++)
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace (*bp); bp++)
@@ -2582,7 +2582,7 @@ out:
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (gstate, name, buf, &bufsz, fp);
+               state = m_getfld (&gstate, name, buf, &bufsz, fp);
            }
            break;
 
            }
            break;
 
@@ -2751,14 +2751,14 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp)
 
     for (;;) {
        int bufsz = sizeof buf;
 
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, zp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, zp)) {
            case FLD: 
            case FLDPLUS: 
                if (!mh_strcasecmp (name, datesw)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
            case FLD: 
            case FLDPLUS: 
                if (!mh_strcasecmp (name, datesw)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, zp);
+                       state = m_getfld (&gstate, name, buf, &bufsz, zp);
                        bp = add (buf, bp);
                    }
                    if ((tw = dparsetime (bp)) == NULL)
                        bp = add (buf, bp);
                    }
                    if ((tw = dparsetime (bp)) == NULL)
@@ -2776,7 +2776,7 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp)
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, zp);
+                       state = m_getfld (&gstate, name, buf, &bufsz, zp);
                        bp = add (buf, bp);
                    }
                    msgp->m_scanl = sosmash(subjsw, bp);
                        bp = add (buf, bp);
                    }
                    msgp->m_scanl = sosmash(subjsw, bp);
@@ -2787,7 +2787,7 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp)
                } else {
                    while (state == FLDPLUS) {  /* flush this one */
                        bufsz = sizeof buf;
                } else {
                    while (state == FLDPLUS) {  /* flush this one */
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, zp);
+                       state = m_getfld (&gstate, name, buf, &bufsz, zp);
                    }
                }
                continue;
                    }
                }
                continue;
index 666bc108e01c941033e5829e64a42802932efce9..91991e1b6a580e31198c730f34bf3d6716da91c5 100644 (file)
--- a/uip/new.c
+++ b/uip/new.c
@@ -97,7 +97,7 @@ get_msgnums(char *folder, char *sequences[])
     char name[NAMESZ], field[BUFSIZ];
     char *cp;
     char *msgnums = NULL, *this_msgnums, *old_msgnums;
     char name[NAMESZ], field[BUFSIZ];
     char *cp;
     char *msgnums = NULL, *this_msgnums, *old_msgnums;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     /* no sequences file -> no messages */
     if (fp == NULL) {
 
     /* no sequences file -> no messages */
     if (fp == NULL) {
@@ -105,17 +105,16 @@ get_msgnums(char *folder, char *sequences[])
     }
 
     /* copied from seq_read.c:seq_public */
     }
 
     /* copied from seq_read.c:seq_public */
-    m_getfld_state_init (&gstate);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (gstate, name, field, &fieldsz, fp)) {
+       switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) {
             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_getfld (&gstate, name, field, &fieldsz, fp);
                         cp = add (field, cp);
                     }
 
                         cp = add (field, cp);
                     }
 
index 0acdedf0b9862dfb140d5bd8517599555f24e4d5..196271a7730f9401a2c9de401c434a13a5586416 100644 (file)
@@ -943,14 +943,13 @@ plist
     register char *bp;
     char buf[BUFSIZ], name[NAMESZ];
     register struct tws *tw;
     register char *bp;
     char buf[BUFSIZ], name[NAMESZ];
     register struct tws *tw;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
     NMH_UNUSED (stop);
 
     fseek (fp, start, SEEK_SET);
     NMH_UNUSED (stop);
 
     fseek (fp, start, SEEK_SET);
-    m_getfld_state_init (&gstate);
     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_getfld (&gstate, name, buf, &bufsz, fp)) {
            case FLD: 
            case FLDPLUS: 
                if (bp != NULL)
            case FLD: 
            case FLDPLUS: 
                if (bp != NULL)
@@ -958,7 +957,7 @@ plist
                bp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                bp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                    bp = add (buf, bp);
                }
                if (!mh_strcasecmp (name, n->n_datef))
                    bp = add (buf, bp);
                }
                if (!mh_strcasecmp (name, n->n_datef))
index 972a97ccf75f4afbe76e3fdf69208ad4b05f4442..227bd1023acae7cd84abbdc3034cf23707da003f 100644 (file)
@@ -322,7 +322,7 @@ main (int argc, char **argv)
     char *cp, *msg = NULL, **argp, **arguments, *envelope;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *in, *out;
     char *cp, *msg = NULL, **argp, **arguments, *envelope;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *in, *out;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
@@ -579,17 +579,16 @@ main (int argc, char **argv)
 
     hdrtab = msgstate == NORMAL ? NHeaders : RHeaders;
 
 
     hdrtab = msgstate == NORMAL ? NHeaders : RHeaders;
 
-    m_getfld_state_init (&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_getfld (&gstate, name, buf, &bufsz, in)) {
            case FLD: 
            case FLDPLUS: 
                compnum++;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
            case FLD: 
            case FLDPLUS: 
                compnum++;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, in);
+                   state = m_getfld (&gstate, name, buf, &bufsz, in);
                    cp = add (buf, cp);
                }
                putfmt (name, cp, out);
                    cp = add (buf, cp);
                }
                putfmt (name, cp, out);
@@ -603,7 +602,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_getfld (&gstate, name, buf, &bufsz, in);
                    fputs (buf, out);
                }
                break;
                    fputs (buf, out);
                }
                break;
index 1691547e426f05ee2142d5c6fc6c386869a1312b..a0a5086ec9234a4220679d95d75369480f59d063 100644 (file)
@@ -84,7 +84,7 @@ main (int argc, char **argv)
     char **arguments, **argp;
     FILE *in, *out;
     char *tfile = NULL;
     char **arguments, **argp;
     FILE *in, *out;
     char *tfile = NULL;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
@@ -209,10 +209,9 @@ main (int argc, char **argv)
     /*
      * Loop through the lines of the draft skeleton.
      */
     /*
      * Loop through the lines of the draft skeleton.
      */
-    m_getfld_state_init (&gstate);
     for (;;) {
        int fieldsz = sizeof field;
     for (;;) {
        int fieldsz = sizeof field;
-       switch (state = m_getfld (gstate, name, field, &fieldsz, in)) {
+       switch (state = m_getfld (&gstate, name, field, &fieldsz, in)) {
            case FLD: 
            case FLDPLUS: 
                /*
            case FLD: 
            case FLDPLUS: 
                /*
@@ -229,7 +228,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_getfld (&gstate, name, field, &fieldsz, in);
                        printf ("%s", field);
                        fprintf (out, "%s", field);
                    }
                        printf ("%s", field);
                        fprintf (out, "%s", field);
                    }
@@ -288,7 +287,7 @@ abort:
                            printf ("%s", field);
                    } while (state == BODY &&
                            (fieldsz = sizeof field,
                            printf ("%s", field);
                    } while (state == BODY &&
                            (fieldsz = sizeof field,
-                            state = m_getfld (gstate, name, field, &fieldsz, in)));
+                            state = m_getfld (&gstate, name, field, &fieldsz, in)));
                    if (prepend || !body)
                        break;
                    else
                    if (prepend || !body)
                        break;
                    else
index c11ac491658aced59243b391d74b88abafeaf6e6..0052b07b4fbeb558177c6531a13549b733cd791e 100644 (file)
@@ -173,7 +173,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     char *cp, *scanl, name[NAMESZ], tmpbuf[SBUFSIZ];
     register struct comp *cptr;
     FILE *out;
     char *cp, *scanl, name[NAMESZ], tmpbuf[SBUFSIZ];
     register struct comp *cptr;
     FILE *out;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if (!(out = fopen (drft, "w")))
        adios (drft, "unable to create");
 
     if (!(out = fopen (drft, "w")))
        adios (drft, "unable to create");
@@ -193,10 +193,9 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     if (cptr)
        cptr->c_text = addrs;
 
     if (cptr)
        cptr->c_text = addrs;
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int msg_count = SBUFSIZ;
     for (;;) {
        int msg_count = SBUFSIZ;
-       switch (state = m_getfld (gstate, name, tmpbuf, &msg_count, inb)) {
+       switch (state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb)) {
            case FLD: 
            case FLDPLUS: 
                i = fmt_addcomptext(name, tmpbuf);
            case FLD: 
            case FLDPLUS: 
                i = fmt_addcomptext(name, tmpbuf);
@@ -204,7 +203,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count = SBUFSIZ;
                    char_read += msg_count;
                    while (state == FLDPLUS) {
                        msg_count = SBUFSIZ;
-                       state = m_getfld (gstate, name, tmpbuf, &msg_count, inb);
+                       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
@@ -212,7 +211,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
 
                while (state == FLDPLUS) {
                    msg_count = SBUFSIZ;
 
                while (state == FLDPLUS) {
                    msg_count = SBUFSIZ;
-                   state = m_getfld (gstate, name, tmpbuf, &msg_count, inb);
+                   state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
                }
                break;
 
                }
                break;
 
index 25288d845f0304dd83aa1991d36bc926656c7ef1..a5c2d67e7a934bce86b6789d03d02fb7fc7c9db6 100644 (file)
@@ -31,8 +31,6 @@
 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>  \
 %{subject}%<{body}<<%{body}>>%>"
 
 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>%<(zero)%17(friendly{from})%>  \
 %{subject}%<{body}<<%{body}>>%>"
 
-extern m_getfld_state_t gstate;
-
 static struct swit switches[] = {
 #define        BIFFSW  0
     { "biff", 0 },
 static struct swit switches[] = {
 #define        BIFFSW  0
     { "biff", 0 },
@@ -70,6 +68,8 @@ static char *format = NULL;
  */
 char *getusername(void);
 
  */
 char *getusername(void);
 
+extern m_getfld_state_t gstate;
+
 /*
  * static prototypes
  */
 /*
  * static prototypes
  */
@@ -262,7 +262,6 @@ header_fd (void)
 
     /* get new format string */
     nfs = new_fs (form, format, SCANFMT);
 
     /* get new format string */
     nfs = new_fs (form, format, SCANFMT);
-    m_getfld_state_init (&gstate);
     scan (stdin, 0, 0, nfs, width, 0, 0, NULL, 0L, 0);
     m_getfld_state_destroy (&gstate);
     if (newline)
     scan (stdin, 0, 0, nfs, width, 0, 0, NULL, 0L, 0);
     m_getfld_state_destroy (&gstate);
     if (newline)
index c0ffb726453c35122574213d581aa5e487117087..d81eb745505ec32e10ea6fcdef9149136a19aa39 100644 (file)
@@ -72,7 +72,7 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
     char name[NAMESZ], *scanl;
     unsigned char *cp;
     static int dat[5];                 /* aux. data for format routine */
     char name[NAMESZ], *scanl;
     unsigned char *cp;
     static int dat[5];                 /* aux. data for format routine */
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     FILE *out;
     NMH_UNUSED (msg);
 
     FILE *out;
     NMH_UNUSED (msg);
@@ -132,10 +132,9 @@ 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"
      */
-    m_getfld_state_init (&gstate);
     for (;;) {
        int msg_count = sizeof tmpbuf;
     for (;;) {
        int msg_count = sizeof tmpbuf;
-       state = m_getfld (gstate, name, tmpbuf, &msg_count, inb);
+       state = m_getfld (&gstate, name, tmpbuf, &msg_count, inb);
        switch (state) {
            case FLD: 
            case FLDPLUS: 
        switch (state) {
            case FLD: 
            case FLDPLUS: 
@@ -151,7 +150,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_getfld (&gstate, name, tmpbuf, &msg_count, inb);
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
                        fmt_appendcomp(i, name, tmpbuf);
                        char_read += msg_count;
                    }
@@ -159,7 +158,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_getfld (&gstate, name, tmpbuf, &msg_count, inb);
                }
                break;
 
                }
                break;
 
index 8ea61eeb74e770280d59cfea3bcbe4253796dcb2..27a8efeb4de285297ae3d0670a14fb03e0a5089e 100644 (file)
@@ -51,13 +51,13 @@ static struct swit switches[] = {
 extern struct msgs *fmt_current_folder;        
 #endif
 
 extern struct msgs *fmt_current_folder;        
 #endif
 
-extern m_getfld_state_t gstate;
-
 /*
  * prototypes
  */
 void clear_screen(void);  /* from termsbr.c */
 
 /*
  * prototypes
  */
 void clear_screen(void);  /* from termsbr.c */
 
+extern m_getfld_state_t gstate;
+
 
 int
 main (int argc, char **argv)
 
 int
 main (int argc, char **argv)
@@ -190,8 +190,7 @@ main (int argc, char **argv)
            printf ("FOLDER %s\t%s\n", file, dtimenow (1));
        }
 
            printf ("FOLDER %s\t%s\n", file, dtimenow (1));
        }
 
-       m_getfld_state_init (&gstate);
-       m_unknown (gstate, in);
+       m_unknown (&gstate, in);
        for (msgnum = 1; ; ++msgnum) {
            state = scan (in, msgnum, -1, nfs, width, 0, 0,
                    hdrflag ? file : NULL, 0L, 1);
        for (msgnum = 1; ; ++msgnum) {
            state = scan (in, msgnum, -1, nfs, width, 0, 0,
                    hdrflag ? file : NULL, 0L, 1);
@@ -283,7 +282,6 @@ main (int argc, char **argv)
                }
            }
 
                }
            }
 
-           m_getfld_state_init (&gstate);
            switch (state = scan (in, msgnum, 0, nfs, width,
                        msgnum == mp->curmsg, unseen,
                        folder, 0L, 1)) {
            switch (state = scan (in, msgnum, 0, nfs, width,
                        msgnum == mp->curmsg, unseen,
                        folder, 0L, 1)) {
index 9f77f86bb7d079ec709216f7e56caa5ce5a0f262..8678c2d886c364b9c16203517e6ff116e6a8fea3 100644 (file)
@@ -167,7 +167,7 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
      */
     bufsz = rlwidth;
     m_getfld_state_reset (&gstate);
      */
     bufsz = rlwidth;
     m_getfld_state_reset (&gstate);
-    if ((state = m_getfld (gstate, name, tmpbuf, &bufsz, inb)) == FILEEOF) {
+    if ((state = m_getfld (&gstate, name, tmpbuf, &bufsz, inb)) == FILEEOF) {
        if (ferror(inb)) {
            advise("read", "unable to"); /* "read error" */
            return SCNFAT;
        if (ferror(inb)) {
            advise("read", "unable to"); /* "read error" */
            return SCNFAT;
@@ -190,7 +190,7 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
 
     /* scan - main loop */
     for (compnum = 1; ;
 
     /* scan - main loop */
     for (compnum = 1; ;
-       bufsz = rlwidth, state = m_getfld (gstate, name, tmpbuf, &bufsz, inb)) {
+       bufsz = rlwidth, state = m_getfld (&gstate, name, tmpbuf, &bufsz, inb)) {
        switch (state) {
            case FLD: 
            case FLDPLUS: 
        switch (state) {
            case FLD: 
            case FLDPLUS: 
@@ -222,7 +222,7 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
 
                while (state == FLDPLUS) {
                    bufsz = rlwidth;
 
                while (state == FLDPLUS) {
                    bufsz = rlwidth;
-                   state = m_getfld (gstate, name, tmpbuf, &bufsz, inb);
+                   state = m_getfld (&gstate, name, tmpbuf, &bufsz, inb);
                    if (outnum)
                        FPUTS (tmpbuf);
                }
                    if (outnum)
                        FPUTS (tmpbuf);
                }
@@ -237,7 +237,7 @@ scan (FILE *inb, int innum, int outnum, char *nfs, int width, int curflg,
 
                if ((i = strlen(tmpbuf)) < rlwidth) {
                    bufsz = rlwidth - i;
 
                if ((i = strlen(tmpbuf)) < rlwidth) {
                    bufsz = rlwidth - i;
-                   state = m_getfld (gstate, name, tmpbuf + i, &bufsz, inb);
+                   state = m_getfld (&gstate, name, tmpbuf + i, &bufsz, inb);
                }
 
                if (! outnum) {
                }
 
                if (! outnum) {
@@ -272,7 +272,7 @@ body:;
 
                while (state == BODY) {
                    bufsz = rlwidth;
 
                while (state == BODY) {
                    bufsz = rlwidth;
-                   state = m_getfld (gstate, name, tmpbuf, &bufsz, inb);
+                   state = m_getfld (&gstate, name, tmpbuf, &bufsz, inb);
                    FPUTS(tmpbuf);
                }
                goto finished;
                    FPUTS(tmpbuf);
                }
                goto finished;
index d8fc9c7a1341ef405b8de290f413340c99d8821c..4c447414e45315c0b7ea2c8125af5547e29d6080 100644 (file)
@@ -591,7 +591,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
     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;
+    m_getfld_state_t gstate = 0;
 
     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");
@@ -603,10 +603,9 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
      * 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_state_init (&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_getfld (&gstate, name, buffer, &bufsz, in)) {
            case FLD:
            case FLDPLUS:
                compnum++;
            case FLD:
            case FLDPLUS:
                compnum++;
@@ -617,7 +616,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
                if (!mh_strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
                if (!mh_strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buffer;
-                       state = m_getfld (gstate, name, buffer, &bufsz, in);
+                       state = m_getfld (&gstate, name, buffer, &bufsz, in);
                    }
                } else if (uprf (name, XXX_FIELD_PRF)
                        || !mh_strcasecmp (name, VRSN_FIELD)
                    }
                } else if (uprf (name, XXX_FIELD_PRF)
                        || !mh_strcasecmp (name, VRSN_FIELD)
@@ -643,7 +642,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
                    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_getfld (&gstate, name, buffer, &bufsz, in);
                        dp = add (buffer, dp);
                    }
                } else {
                        dp = add (buffer, dp);
                    }
                } else {
@@ -654,7 +653,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
                    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_getfld (&gstate, name, buffer, &bufsz, in);
                        cp = add (buffer, cp);
                    }
                }
                        cp = add (buffer, cp);
                    }
                }
index d04835e67fd5c5a1b806722a9a7a6a56513db209..224e17faf279b6fb2fb9652abaac79a104440827 100644 (file)
@@ -348,15 +348,14 @@ is_nontext (char *msgnam)
     char *cp;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
     char *cp;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
 
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
        case FLD:
        case FLDPLUS:
            /*
        case FLD:
        case FLDPLUS:
            /*
@@ -369,7 +368,7 @@ is_nontext (char *msgnam)
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                    cp = add (buf, cp);
                }
                bp = cp;
                    cp = add (buf, cp);
                }
                bp = cp;
@@ -473,7 +472,7 @@ out:
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace (*bp); bp++)
                    cp = add (buf, cp);
                }
                for (bp = cp; isspace (*bp); bp++)
@@ -499,7 +498,7 @@ out:
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
             */
            while (state == FLDPLUS) {
                bufsz = sizeof buf;
-               state = m_getfld (gstate, name, buf, &bufsz, fp);
+               state = m_getfld (&gstate, name, buf, &bufsz, fp);
            }
            break;
 
            }
            break;
 
index d8d427a4e4dcfa9382b431b831535d36a587ee47..bb9b5ac44ed35d753d349d14013860fefa7b9f5b 100644 (file)
@@ -716,7 +716,7 @@ parse (int fd)
     char name[NAMESZ], field[BUFSIZ];
     struct pair *p, *q;
     FILE  *in;
     char name[NAMESZ], field[BUFSIZ];
     struct pair *p, *q;
     FILE  *in;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if (parsed++)
        return 0;
 
     if (parsed++)
        return 0;
@@ -740,16 +740,15 @@ 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.
      */
-    m_getfld_state_init (&gstate);
     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_getfld (&gstate, name, field, &fieldsz, in)) {
            case FLD: 
            case FLDPLUS: 
                lp = add (field, NULL);
                while (state == FLDPLUS) {
                    fieldsz = sizeof field;
            case FLD: 
            case FLDPLUS: 
                lp = add (field, NULL);
                while (state == FLDPLUS) {
                    fieldsz = sizeof field;
-                   state = m_getfld (gstate, name, field, &fieldsz, in);
+                   state = m_getfld (&gstate, name, field, &fieldsz, in);
                    lp = add (field, lp);
                }
                for (p = hdrs; p->p_name; p++) {
                    lp = add (field, lp);
                }
                for (p = hdrs; p->p_name; p++) {
@@ -1415,7 +1414,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;
+    m_getfld_state_t gstate = 0;
 
     if ((fd1 = dup (fd)) == -1)
        return -1;
 
     if ((fd1 = dup (fd)) == -1)
        return -1;
@@ -1425,10 +1424,9 @@ suppress_duplicates (int fd, char *file)
     }
     rewind (in);
 
     }
     rewind (in);
 
-    m_getfld_state_init (&gstate);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       state = m_getfld (gstate, name, buf, &bufsz, in);
+       state = m_getfld (&gstate, name, buf, &bufsz, in);
        switch (state) {
            case FLD:
            case FLDPLUS:
        switch (state) {
            case FLD:
            case FLDPLUS:
@@ -1436,7 +1434,7 @@ suppress_duplicates (int fd, char *file)
                if (mh_strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
                if (mh_strcasecmp (name, "Message-ID")) {
                    while (state == FLDPLUS) {
                        bufsz = sizeof buf;
-                       state = m_getfld (gstate, name, buf, &bufsz, in);
+                       state = m_getfld (&gstate, name, buf, &bufsz, in);
                    }
                    continue;
                }
                    }
                    continue;
                }
@@ -1444,7 +1442,7 @@ suppress_duplicates (int fd, char *file)
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, in);
+                   state = m_getfld (&gstate, name, buf, &bufsz, in);
                    cp = add (buf, cp);
                }
                key.dptr = trimcpy (cp);
                    cp = add (buf, cp);
                }
                key.dptr = trimcpy (cp);
index b8df0d0ba761b1264c343d8bd604477b27c9367c..05b6ed02eb59e0ea2ec92491cd112cecfea7c7cd 100644 (file)
@@ -365,16 +365,15 @@ get_fields (char *datesw, int msg, struct smsg *smsg)
     register struct tws *tw;
     register char *datecomp = NULL, *subjcomp = NULL;
     register FILE *in;
     register struct tws *tw;
     register char *datecomp = NULL, *subjcomp = NULL;
     register FILE *in;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     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);
     }
-    m_getfld_state_init (&gstate);
     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_getfld (&gstate, nam, buf, &bufsz, in)) {
        case FLD:
        case FLDPLUS:
            compnum++;
        case FLD:
        case FLDPLUS:
            compnum++;
@@ -382,7 +381,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_getfld (&gstate, nam, buf, &bufsz, in);
                    datecomp = add (buf, datecomp);
                }
                if (!subjsort || subjcomp)
                    datecomp = add (buf, datecomp);
                }
                if (!subjsort || subjcomp)
@@ -391,7 +390,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_getfld (&gstate, nam, buf, &bufsz, in);
                    subjcomp = add (buf, subjcomp);
                }
                if (datecomp)
                    subjcomp = add (buf, subjcomp);
                }
                if (datecomp)
@@ -400,7 +399,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_getfld (&gstate, nam, buf, &bufsz, in);
                }
            }
            continue;
                }
            }
            continue;
index d3f0fcf83e661d81be3d89d202b71cf84dd163df..d72ede85f5bb7fd8e924791b21a9926a5cc5dc4e 100644 (file)
@@ -938,14 +938,13 @@ check_draft (char *msgnam)
     int        state;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
     int        state;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
-    m_getfld_state_t gstate;
+    m_getfld_state_t gstate = 0;
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
 
     if ((fp = fopen (msgnam, "r")) == NULL)
        return 0;
-    m_getfld_state_init (&gstate);
     for (;;) {
        int bufsz = sizeof buf;
     for (;;) {
        int bufsz = sizeof buf;
-       switch (state = m_getfld (gstate, name, buf, &bufsz, fp)) {
+       switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) {
            case FLD:
            case FLDPLUS:
                /*
            case FLD:
            case FLDPLUS:
                /*
@@ -959,7 +958,7 @@ check_draft (char *msgnam)
                }
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
                }
                while (state == FLDPLUS) {
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                }
                break;
 
                }
                break;
 
@@ -974,7 +973,7 @@ check_draft (char *msgnam)
                        }
 
                    bufsz = sizeof buf;
                        }
 
                    bufsz = sizeof buf;
-                   state = m_getfld (gstate, name, buf, &bufsz, fp);
+                   state = m_getfld (&gstate, name, buf, &bufsz, fp);
                } while (state == BODY);
                /* and fall... */
 
                } while (state == BODY);
                /* and fall... */