#include <termios.h>
#include <pwd.h>
-#include <h/m_setjmp.h>
+#include <setjmp.h>
#include <signal.h>
#include <h/msh.h>
#include <h/vmhsbr.h>
int broken_pipe; /* SIGPIPE detected */
int told_to_quit; /* SIGQUIT detected */
+extern m_getfld_state_t gstate;
+
/*
* prototypes
*/
void fsetup (char *);
void setup (char *);
-FILE *msh_ready (int, int);
void readids (int);
int readid (int);
void display_info (int);
static int read_file (long, int);
static void m_gMsgs (int);
-FILE *msh_ready (int, int);
static int check_folder (int);
static void scanrange (int, int);
static void scanstring (char *);
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 == '-')
#endif /* SIGTSTP */
}
+ m_getfld_state_init (&gstate);
if (folder)
fsetup (folder);
else
display_info (id > 0 ? scansw : 0);
msh (id > 0 ? scansw : 0);
+ m_getfld_state_destroy (&gstate);
m_reset ();
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;
FILE *
msh_ready (int msgnum, int full)
{
- NMH_UNUSED (full);
register int msgp;
int fd;
char *cp;
+ NMH_UNUSED (full);
if (yp) {
fclose (yp);
return yp;
}
- m_eomsbr ((int (*)()) 0); /* XXX */
+ m_eomsbr (gstate, (int (*)()) 0); /* XXX */
fseek (fp, Msgs[msgnum].m_start, SEEK_SET);
return fp;
}
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);
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;
}
+ }
}
{
int status;
- switch (m_setjmp (peerenv)) {
+ switch (setjmp (peerenv)) {
case OK:
SIGNAL (SIGALRM, alrmser);
alarm (ALARM);