X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5ccbd49adba7e6d48f4094fa6eade7a7fb8ec4cf..3f06c9575091f6b3199e8686898e4b5bceb56bb9:/uip/msh.c diff --git a/uip/msh.c b/uip/msh.c index 03584f6d..7dc15d36 100644 --- a/uip/msh.c +++ b/uip/msh.c @@ -150,6 +150,8 @@ int interrupted; /* SIGINT detected */ int broken_pipe; /* SIGPIPE detected */ int told_to_quit; /* SIGQUIT detected */ +extern m_getfld_state_t gstate; + /* * prototypes */ @@ -235,10 +237,10 @@ main (int argc, char **argv) case HELPSW: snprintf (buf, sizeof(buf), "%s [switches] file", invo_name); print_help (buf, switches, 1); - done (1); + done (0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case IDSW: if (!(cp = *argp++) || *cp == '-') @@ -342,6 +344,7 @@ main (int argc, char **argv) #endif /* SIGTSTP */ } + m_getfld_state_init (&gstate); if (folder) fsetup (folder); else @@ -350,6 +353,7 @@ main (int argc, char **argv) display_info (id > 0 ? scansw : 0); msh (id > 0 ? scansw : 0); + m_getfld_state_destroy (&gstate); m_reset (); @@ -713,7 +717,7 @@ setup (char *file) mp->msgattrs[0] = getcpy ("unseen"); mp->msgattrs[1] = NULL; - m_unknown (fp); /* the MAGIC invocation */ + m_unknown (gstate, fp); /* the MAGIC invocation */ if (fmsh) { free (fmsh); fmsh = NULL; @@ -836,7 +840,7 @@ msh_ready (int msgnum, int full) return yp; } - m_eomsbr ((int (*)()) 0); /* XXX */ + m_eomsbr (gstate, (int (*)()) 0); /* XXX */ fseek (fp, Msgs[msgnum].m_start, SEEK_SET); return fp; } @@ -1005,15 +1009,16 @@ readid (int msgnum) return Msgs[msgnum].m_bboard_id; zp = msh_ready (msgnum, 0); - for (state = FLD;;) - switch (state = m_getfld (state, name, buf, sizeof(buf), zp)) { + for (;;) { + int bufsz = sizeof buf; + switch (state = m_getfld (gstate, name, buf, &bufsz, zp)) { case FLD: - case FLDEOF: case FLDPLUS: if (!mh_strcasecmp (name, BBoard_ID)) { bp = getcpy (buf); while (state == FLDPLUS) { - state = m_getfld (state, name, buf, sizeof(buf), zp); + bufsz = sizeof buf; + state = m_getfld (gstate, name, buf, &bufsz, zp); bp = add (buf, bp); } i = atoi (bp); @@ -1024,13 +1029,14 @@ readid (int msgnum) continue; } while (state == FLDPLUS) - state = m_getfld (state, name, buf, sizeof(buf), zp); - if (state != FLDEOF) - continue; + bufsz = sizeof buf; + state = m_getfld (gstate, name, buf, &bufsz, zp); + continue; default: return 0; } + } }