]> diplodocus.org Git - nmh/blobdiff - uip/mshcmds.c
Merge branch 'tmpfiles'
[nmh] / uip / mshcmds.c
index 8212375af6f1433b07d05c94891207eeff26023f..6627c6ab61d2c61c3db51d15be677550084d5833 100644 (file)
@@ -14,8 +14,6 @@
 #include <h/scansbr.h>
 #include <h/tws.h>
 #include <h/mts.h>
-#include <errno.h>
-#include <signal.h>
 #include <h/msh.h>
 #include <h/picksbr.h>
 #include <h/utils.h>
@@ -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;
 }