X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/de4636bb664106d9932ae7acb517e471b848f1f3..6bc64765f:/uip/mshcmds.c?ds=sidebyside diff --git a/uip/mshcmds.c b/uip/mshcmds.c index 8212375a..6627c6ab 100644 --- a/uip/mshcmds.c +++ b/uip/mshcmds.c @@ -14,8 +14,6 @@ #include #include #include -#include -#include #include #include #include @@ -51,6 +49,8 @@ static int process (int, char *, int, char **); static void copy_message (int, FILE *); static void copy_digest (int, FILE *); +extern m_getfld_state_t gstate; /* use the gstate in scansbr.c */ + void forkcmd (char **args, char *pgm) { @@ -950,7 +950,7 @@ forw (char *proc, char *filter, int vecp, char **vec) args[i++] = getcpy (m_name (msgnum)); args[i] = NULL; mhlsbr (i, args, mhl_action); - m_eomsbr ((int (*) ()) 0); + scan_eom_action ((int (*) ()) 0); fclose (stdout); _exit (0); @@ -1011,7 +1011,7 @@ forw (char *proc, char *filter, int vecp, char **vec) break; } - unlink (tmpfil); + (void) m_unlink (tmpfil); } @@ -1226,8 +1226,9 @@ markcmd (char **args) (long) Msgs[msgnum].m_start, (long) Msgs[msgnum].m_stop, snprintb (buf, sizeof(buf), - (unsigned) mp->msgstats[msgnum - mp->lowoff], - seq_bits (mp))); + (unsigned) *bvector_bits (msgstat (mp, + msgnum)), + seq_bits (mp))); if (Msgs[msgnum].m_scanl) printf ("%s", Msgs[msgnum].m_scanl); } @@ -2069,7 +2070,7 @@ scancmd (char **args) } if (clearsw) - clear_screen (); + nmh_clear_screen (); } @@ -2103,10 +2104,10 @@ showcmd (char **args) char *cp, *proc = showproc, buf[BUFSIZ]; char *msgs[MAXARGS], *vec[MAXARGS]; - if (!mh_strcasecmp (cmd_name, "next")) + if (!strcasecmp (cmd_name, "next")) mode = 1; else - if (!mh_strcasecmp (cmd_name, "prev")) + if (!strcasecmp (cmd_name, "prev")) mode = -1; while ((cp = *args++)) { if (*cp == '-') @@ -2211,7 +2212,7 @@ finish: ; if (mp->numsel == 1 && headersw) show (mp->lowsel); mhlsbr (vecp, vec, mhl_action); - m_eomsbr ((int (*)()) 0); + scan_eom_action ((int (*)()) 0); while (msgp < vecp) free (vec[msgp++]); } else { @@ -2283,7 +2284,7 @@ mhl_action (char *name) mhlfp = msh_ready (msgnum, 1); if (!fmsh) - m_eomsbr (eom_action); + scan_eom_action (eom_action); return mhlfp; } @@ -2330,8 +2331,7 @@ static int is_nontext (int msgnum) { int result, state; - unsigned char *bp, *dp; - char *cp; + char *bp, *dp, *cp; char buf[BUFSIZ], name[NAMESZ]; FILE *fp; @@ -2341,28 +2341,29 @@ is_nontext (int msgnum) fp = msh_ready (msgnum, 1); - for (state = FLD;;) - switch (state = m_getfld (state, name, buf, sizeof buf, fp)) { + for (;;) { + int bufsz = sizeof buf; + switch (state = m_getfld (&gstate, name, buf, &bufsz, fp)) { case FLD: case FLDPLUS: - case FLDEOF: /* * Check Content-Type field */ - if (!mh_strcasecmp (name, TYPE_FIELD)) { + if (!strcasecmp (name, TYPE_FIELD)) { int passno; char c; cp = add (buf, NULL); while (state == FLDPLUS) { - state = m_getfld (state, name, buf, sizeof buf, fp); + bufsz = sizeof buf; + state = m_getfld (&gstate, name, buf, &bufsz, fp); cp = add (buf, cp); } bp = cp; passno = 1; again: - for (; isspace (*bp); bp++) + for (; isspace ((unsigned char) *bp); bp++) continue; if (*bp == '(') { int i; @@ -2404,27 +2405,27 @@ invalid: if (!*bp) goto invalid; if (passno > 1) { - if ((result = (mh_strcasecmp (bp, "plain") != 0))) + if ((result = (strcasecmp (bp, "plain") != 0))) goto out; *dp = c; - for (dp++; isspace (*dp); dp++) + for (dp++; isspace ((unsigned char) *dp); dp++) continue; if (*dp) { if ((result = !uprf (dp, "charset"))) goto out; dp += sizeof "charset" - 1; - while (isspace (*dp)) + while (isspace ((unsigned char) *dp)) dp++; if (*dp++ != '=') goto invalid; - while (isspace (*dp)) + while (isspace ((unsigned char) *dp)) dp++; if (*dp == '"') { if ((bp = strchr(++dp, '"'))) *bp = '\0'; } else { for (bp = dp; *bp; bp++) - if (isspace (*bp)) { + if (isspace ((unsigned char) *bp)) { *bp = '\0'; break; } @@ -2436,7 +2437,7 @@ invalid: /* Check the character set */ result = !check_charset (dp, strlen (dp)); } else { - if (!(result = (mh_strcasecmp (bp, "text") != 0))) { + if (!(result = (strcasecmp (bp, "text") != 0))) { *dp = c; bp = dp; passno = 2; @@ -2455,20 +2456,21 @@ out: /* * Check Content-Transfer-Encoding field */ - if (!mh_strcasecmp (name, ENCODING_FIELD)) { + if (!strcasecmp (name, ENCODING_FIELD)) { cp = add (buf, NULL); while (state == FLDPLUS) { - state = m_getfld (state, name, buf, sizeof buf, fp); + bufsz = sizeof buf; + state = m_getfld (&gstate, name, buf, &bufsz, fp); cp = add (buf, cp); } - for (bp = cp; isspace (*bp); bp++) + for (bp = cp; isspace ((unsigned char) *bp); bp++) continue; for (dp = bp; istoken (*dp); dp++) continue; *dp = '\0'; - result = (mh_strcasecmp (bp, "7bit") - && mh_strcasecmp (bp, "8bit") - && mh_strcasecmp (bp, "binary")); + result = (strcasecmp (bp, "7bit") + && strcasecmp (bp, "8bit") + && strcasecmp (bp, "binary")); free (cp); if (result) { @@ -2482,8 +2484,10 @@ out: * Just skip the rest of this header * field and go to next one. */ - while (state == FLDPLUS) - state = m_getfld (state, name, buf, sizeof(buf), fp); + while (state == FLDPLUS) { + bufsz = sizeof buf; + state = m_getfld (&gstate, name, buf, &bufsz, fp); + } break; /* @@ -2493,6 +2497,7 @@ out: default: return 0; } + } } @@ -2608,9 +2613,10 @@ sortcmd (char **args) } else /* m_scaln is already NULL */ twscopy (&Msgs[msgnum].m_tb, &tb); - Msgs[msgnum].m_stats = mp->msgstats[msgnum - mp->lowoff]; + Msgs[msgnum].m_stats = bvector_create (0); + bvector_copy (Msgs[msgnum].m_stats, msgstat (mp, msgnum)); if (mp->curmsg == msgnum) - Msgs[msgnum].m_stats |= CUR; + bvector_set (Msgs[msgnum].m_stats, CUR); } qsort ((char *) &Msgs[mp->lowsel], mp->hghsel - mp->lowsel + 1, @@ -2621,8 +2627,9 @@ sortcmd (char **args) free (Msgs[msgnum].m_scanl); /* from subjsort */ Msgs[msgnum].m_scanl = NULL; } - mp->msgstats[msgnum - mp->lowoff] = Msgs[msgnum].m_stats & ~CUR; - if (Msgs[msgnum].m_stats & CUR) + bvector_clear (Msgs[msgnum].m_stats, CUR); + bvector_copy (msgstat (mp, msgnum), Msgs[msgnum].m_stats); + if (bvector_at (Msgs[msgnum].m_stats, CUR)) seq_setcur (mp, msgnum); } @@ -2645,15 +2652,17 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp) register FILE *zp; 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, datesw)) { + if (!strcasecmp (name, datesw)) { 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); } if ((tw = dparsetime (bp)) == NULL) @@ -2667,10 +2676,11 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp) break; /* all done! */ gotdate++; } - else if (subjsw && !mh_strcasecmp(name, subjsw)) { + else if (subjsw && !strcasecmp(name, subjsw)) { 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); } msgp->m_scanl = sosmash(subjsw, bp); @@ -2679,13 +2689,14 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp) else subjsw = (char *)0;/* subject done, need date */ } else { - while (state == FLDPLUS) /* flush this one */ - state = m_getfld (state, name, buf, sizeof buf, zp); + while (state == FLDPLUS) { /* flush this one */ + bufsz = sizeof buf; + state = m_getfld (&gstate, name, buf, &bufsz, zp); + } } continue; case BODY: - case BODYEOF: case FILEEOF: break; @@ -2748,7 +2759,7 @@ sosmash (char *subj, char *s) if (s) { cp = s; dp = s; /* dst pointer */ - if (!mh_strcasecmp (subj, "subject")) + if (!strcasecmp (subj, "subject")) while ((c = *cp)) { if (! isspace(c)) { if(uprf(cp, "re:")) @@ -2831,7 +2842,7 @@ ready: ; } if (!fmsh) - unlink (tmpfil); + (void) m_unlink (tmpfil); return status; }