Removed unused and not compiling program wmh.
[mmh] / uip / mshcmds.c
index 13ad356..3bd4db3 100644 (file)
@@ -2,7 +2,9 @@
 /*
  * mshcmds.c -- command handlers in msh
  *
- * $Id$
+ * This code is Copyright (c) 2002, by the authors of nmh.  See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
  */
 
 #include <h/mh.h>
 #include <h/dropsbr.h>
 #include <h/fmt_scan.h>
 #include <h/scansbr.h>
-#include <zotnet/tws/tws.h>
-#include <zotnet/mts/mts.h>
+#include <h/tws.h>
+#include <h/mts.h>
 #include <errno.h>
 #include <setjmp.h>
 #include <signal.h>
 #include <h/msh.h>
 #include <h/picksbr.h>
+#include <h/utils.h>
 
-extern int errno;
 
 static char delim3[] = "-------";      /* from burst.c */
 
 static int mhlnum;
 static FILE *mhlfp;
 
-#if defined(NNTP) && defined(MPOP)
-# undef        MPOP
-#endif
-
-#ifdef MPOP
-# ifdef BPOP
-extern int pmsh;
-extern char response[];
-# endif
-#endif /* MPOP */
-
 /*
  * Type for a compare function for qsort.  This keeps
  * the compiler happy.
@@ -139,7 +130,7 @@ static struct swit distswit[] = {
 #define        DINWTSW                  11
     { "nowhatnowproc", 0 },
 #define        DIHELP                   12
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -240,7 +231,7 @@ static struct swit explswit[] = {
 #define        EXNVBSW        5
     { "noverbose", 0 },
 #define        EXHELP         6
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -469,7 +460,7 @@ static struct swit fileswit[] = {
 #define        FINPRC               8
     { "normmproc", 0 },
 #define        FIHELP               9
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -589,7 +580,7 @@ filehak (char **args)
        if (cwd == NULL)
            cwd = getcpy (pwd ());
        chdir (m_maildir (""));
-       cp = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF);
+       cp = pluspath (cp);
        if (access (m_maildir (cp), F_OK) == NOTOK)
            result = OK;
        free (cp);
@@ -633,7 +624,7 @@ static struct swit foldswit[] = {
 #define        FLLISW        14
     { "list", 0 },
 #define        FLHELP        15
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -699,7 +690,7 @@ foldcmd (char **args)
                return;
            }
            else
-               folder = fmsh ? path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF)
+               folder = fmsh ? pluspath (cp)
                            : cp + 1;
        }
        else
@@ -852,7 +843,7 @@ static struct swit forwswit[] = {
 #define        FONWTSW                 16
     { "nowhatnow", 0 },
 #define        FOHELP                  17
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -863,6 +854,8 @@ forwcmd (char **args)
     int        msgp = 0, vecp = 1, msgnum;
     char *cp, *filter = NULL, buf[BUFSIZ];
     char *msgs[MAXARGS], *vec[MAXARGS];
+    char *tfile = NULL;
+    char tmpfil[BUFSIZ];
 
     if (fmsh) {
        forkcmd (args, cmd_name);
@@ -935,16 +928,12 @@ forwcmd (char **args)
 
                                        /* foil search of .mh_profile */
     snprintf (buf, sizeof(buf), "%sXXXXXX", invo_name);
-/*
-  Mkstemp work postponed until later -Doug
-#ifdef HAVE_MKSTEMP
-    vec[0] = (char *)mkstemp (buf);
-#else
-*/
-    vec[0] = (char *)mktemp (buf);
-/*
-#endif
-*/
+
+    tfile = m_mktemp(buf, NULL, NULL);
+    if (tfile == NULL) adios("forwcmd", "unable to create temporary file");
+    strncpy (tmpfil, tfile, sizeof(tmpfil));
+    vec[0] = tmpfil;
+
     vec[vecp++] = "-file";
     vec[vecp] = NULL;
     if (!msgp)
@@ -975,10 +964,14 @@ static void
 forw (char *proc, char *filter, int vecp, char **vec)
 {
     int i, child_id, msgnum, msgcnt;
-    char tmpfil[80], *args[MAXARGS];
+    char tmpfil[BUFSIZ], *args[MAXARGS];
     FILE *out;
+    char *tfile = NULL;
+
+    tfile = m_mktemp2(NULL, invo_name, NULL, NULL);
+    if (tfile == NULL) adios("forw", "unable to create temporary file");
+    strncpy (tmpfil, tfile, sizeof(tmpfil));
 
-    strncpy (tmpfil, m_tmpfil (invo_name), sizeof(tmpfil));
     interrupted = 0;
     if (filter)
        switch (child_id = fork ()) {
@@ -1120,7 +1113,7 @@ static struct swit markswit[] = {
 #define        MNZERSW            7
     { "nozero", 0 },
 #define        MHELP              8
-    { "help", 4 },
+    { "help", 0 },
 #define        MDBUGSW            9
     { "debug", -5 },
     { NULL, 0 }
@@ -1339,7 +1332,7 @@ static struct swit mhnswit[] = {
 #define        MHNNVERBSW         23
     { "noverbose", 0 },
 #define        MHNHELPSW          24
-    { "help", 4 },
+    { "help", 0 },
 #define        MHNPROGSW          25
     { "moreproc program", -4 },
 #define        MHNNPROGSW         26
@@ -1454,7 +1447,7 @@ static struct swit packswit[] = {
 #define        PAFISW         0
     { "file name", 0 },
 #define        PAHELP         1
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -1632,7 +1625,7 @@ static struct swit pickswit[] = {
 #define        PINLISW              21
     { "nolist", 0 },
 #define        PIHELP               22
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -1819,7 +1812,7 @@ static struct swit replswit[] = {
 #define        REWIDSW                19
     { "width columns", 0 },
 #define        REHELP                 20
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -1915,7 +1908,7 @@ replcmd (char **args)
 
 static struct swit rmmswit[] = {
 #define        RMHELP    0
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -1995,12 +1988,6 @@ rmm (void)
        if (is_selected (mp, msgnum)) {
            set_deleted (mp, msgnum);
            unset_exists (mp, msgnum);
-#ifdef MPOP
-#ifdef BPOP
-           if (pmsh && pop_dele (msgnum) != OK)
-               fprintf (stderr, "%s", response);
-#endif
-#endif /* MPOP */
        }
 
     if ((mp->nummsg -= mp->numsel) <= 0) {
@@ -2044,7 +2031,7 @@ static struct swit scanswit[] = {
 #define        SCWID              6
     { "width columns", 0 },
 #define        SCHELP             7
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -2059,11 +2046,6 @@ scancmd (char **args)
     char *cp, *form = NULL, *format = NULL;
     char buf[BUFSIZ], *nfs, *msgs[MAXARGS];
     register FILE *zp;
-#ifdef MPOP
-#ifdef BPOP
-    static int p_optim = 0;
-#endif
-#endif /* MPOP */
     static int s_optim = 0;
     static char *s_form = NULL, *s_format = NULL;
 
@@ -2144,80 +2126,10 @@ scancmd (char **args)
        s_form = form ? getcpy (form) : NULL;
        s_format = format ? getcpy (format) : NULL;
 
-#ifdef MPOP
-#ifdef BPOP
-       if (pmsh) {
-           int i;
-           char *dp, *ep, *fp;
-
-           if (width == 0)
-               width = sc_width ();
-
-           for (dp = nfs, i = 0; *dp; dp++, i++)
-               if (*dp == '\\' || *dp == '"' || *dp == '\n')
-                   i++;
-           i++;
-           if ((ep = malloc ((unsigned) i)) == NULL)
-               adios (NULL, "out of memory");
-           for (dp = nfs, fp = ep; *dp; dp++) {
-               if (*dp == '\n') {
-                   *fp++ = '\\', *fp++ = 'n';
-                   continue;
-               }
-               if (*dp == '"' || *dp == '\\')
-                   *fp++ = '\\';
-               *fp++ = *dp;
-           }
-           *fp = NULL;
-
-           if (pop_command ("XTND SCAN %d \"%s\"", width, ep) == OK)
-               p_optim = 1;
-
-           free (ep);
-       }
-#endif
-#endif /* MPOP */
     }
     else
        optim = equiv (s_form, form) && equiv (s_format, format);
 
-#ifdef MPOP
-#ifdef BPOP
-    if (p_optim && optim) {
-       for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++)
-           if (!is_selected(mp, msgnum) || Msgs[msgnum].m_scanl)
-               break;
-       if (msgnum > mp->hghmsg && pop_command ("LIST") == OK) {
-           fprintf (stderr, "Stand-by...");
-           fflush (stderr);
-
-           for (;;) {
-               int     size;
-
-               switch (pop_multiline ()) {
-                   case NOTOK:
-                       fprintf (stderr, "%s", response);
-                       /* and fall... */
-                   case DONE:
-                       fprintf (stderr,"\n");
-                       break;
-
-                   case OK:
-                       if (sscanf (response, "%d %d", &msgnum, &size) == 2
-                               && mp->lowmsg <= msgnum
-                               && msgnum <= mp->hghmsg
-                               && (cp = strchr(response, '#'))
-                               && *++cp)
-                           Msgs[msgnum].m_scanl = concat (cp, "\n", NULL);
-                       continue;
-               }
-               break;
-           }
-       }
-    }
-#endif
-#endif /* MPOP */
-
     interrupted = 0;
     for (msgnum = mp->lowsel;
            msgnum <= mp->hghsel && !interrupted;
@@ -2226,20 +2138,6 @@ scancmd (char **args)
            if (optim && Msgs[msgnum].m_scanl)
                printf ("%s", Msgs[msgnum].m_scanl);
            else {
-#ifdef MPOP
-#ifdef BPOP
-               if (p_optim
-                       && optim
-                       && is_virtual (mp, msgnum)
-                       && pop_command ("LIST %d", msgnum) == OK
-                       && (cp = strchr(response, '#'))
-                       && *++cp) {
-                   Msgs[msgnum].m_scanl = concat (cp, "\n", NULL);
-                   printf ("%s", Msgs[msgnum].m_scanl);                    
-                   continue;
-               }
-#endif
-#endif /* MPOP */
 
                zp = msh_ready (msgnum, 0);
                switch (state = scan (zp, msgnum, 0, nfs, width,
@@ -2294,7 +2192,7 @@ static struct swit showswit[] = {
 #define SHNHEAD               9
     { "noheader", 3 },
 #define        SHHELP               10
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -2307,10 +2205,10 @@ showcmd (char **args)
     char *cp, *proc = showproc, buf[BUFSIZ];
     char *msgs[MAXARGS], *vec[MAXARGS];
 
-    if (!strcasecmp (cmd_name, "next"))
+    if (!mh_strcasecmp (cmd_name, "next"))
        mode = 1;
     else
-       if (!strcasecmp (cmd_name, "prev"))
+       if (!mh_strcasecmp (cmd_name, "prev"))
            mode = -1;
     while ((cp = *args++)) {
        if (*cp == '-')
@@ -2387,7 +2285,6 @@ showcmd (char **args)
        for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
            if (is_selected (mp, msgnum) && is_nontext (msgnum)) {
                proc = showmimeproc;
-               vec[vecp++] = "-show";
                vec[vecp++] = "-file";
                vec[vecp] = NULL;
                goto finish;
@@ -2545,7 +2442,8 @@ static int
 is_nontext (int msgnum)
 {
     int        result, state;
-    char *bp, *cp, *dp;
+    unsigned char *bp, *dp;
+    char *cp;
     char buf[BUFSIZ], name[NAMESZ];
     FILE *fp;
 
@@ -2563,7 +2461,7 @@ is_nontext (int msgnum)
            /*
             * Check Content-Type field
             */
-           if (!strcasecmp (name, TYPE_FIELD)) {
+           if (!mh_strcasecmp (name, TYPE_FIELD)) {
                int passno;
                char c;
 
@@ -2618,7 +2516,7 @@ invalid:
                if (!*bp)
                    goto invalid;
                if (passno > 1) {
-                   if ((result = (strcasecmp (bp, "plain") != 0)))
+                   if ((result = (mh_strcasecmp (bp, "plain") != 0)))
                        goto out;
                    *dp = c;
                    for (dp++; isspace (*dp); dp++)
@@ -2650,7 +2548,7 @@ invalid:
                    /* Check the character set */
                    result = !check_charset (dp, strlen (dp));
                } else {
-                   if (!(result = (strcasecmp (bp, "text") != 0))) {
+                   if (!(result = (mh_strcasecmp (bp, "text") != 0))) {
                        *dp = c;
                        bp = dp;
                        passno = 2;
@@ -2669,7 +2567,7 @@ out:
            /*
             * Check Content-Transfer-Encoding field
             */
-           if (!strcasecmp (name, ENCODING_FIELD)) {
+           if (!mh_strcasecmp (name, ENCODING_FIELD)) {
                cp = add (buf, NULL);
                while (state == FLDPLUS) {
                    state = m_getfld (state, name, buf, sizeof buf, fp);
@@ -2680,9 +2578,9 @@ out:
                for (dp = bp; istoken (*dp); dp++)
                    continue;
                *dp = '\0';
-               result = (strcasecmp (bp, "7bit")
-                      && strcasecmp (bp, "8bit")
-                      && strcasecmp (bp, "binary"));
+               result = (mh_strcasecmp (bp, "7bit")
+                      && mh_strcasecmp (bp, "8bit")
+                      && mh_strcasecmp (bp, "binary"));
 
                free (cp);
                if (result) {
@@ -2726,7 +2624,7 @@ static struct swit sortswit[] = {
 #define        SONVERB              6
     { "noverbose", 0 },
 #define        SOHELP               7
-    { "help", 4 },
+    { "help", 0 },
     { NULL, 0 }
 };
 
@@ -2866,7 +2764,7 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp)
            case FLD: 
            case FLDEOF: 
            case FLDPLUS: 
-               if (!strcasecmp (name, datesw)) {
+               if (!mh_strcasecmp (name, datesw)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        state = m_getfld (state, name, buf, sizeof buf, zp);
@@ -2883,7 +2781,7 @@ get_fields (char *datesw, char *subjsw, int msgnum, struct Msg *msgp)
                        break;          /* all done! */
                    gotdate++;
                }
-               else if (subjsw && !strcasecmp(name, subjsw)) {
+               else if (subjsw && !mh_strcasecmp(name, subjsw)) {
                    bp = getcpy (buf);
                    while (state == FLDPLUS) {
                        state = m_getfld (state, name, buf, sizeof buf, zp);
@@ -2958,12 +2856,13 @@ subsort (struct Msg *a, struct Msg *b)
 static char *
 sosmash (char *subj, char *s)
 {
-    register char *cp, *dp, c;
+    register char *cp, *dp;
+    register unsigned char c;
 
     if (s) {
        cp = s;
        dp = s; /* dst pointer */
-       if (!strcasecmp (subj, "subject"))
+       if (!mh_strcasecmp (subj, "subject"))
            while ((c = *cp)) {
                if (! isspace(c)) {
                    if(uprf(cp, "re:"))
@@ -2991,8 +2890,9 @@ static int
 process (int msgnum, char *proc, int vecp, char **vec)
 {
     int        child_id, status;
-    char tmpfil[80];
+    char tmpfil[BUFSIZ];
     FILE *out;
+    char *cp;
 
     if (fmsh) {
        strncpy (tmpfil, m_name (msgnum), sizeof(tmpfil));
@@ -3003,24 +2903,20 @@ process (int msgnum, char *proc, int vecp, char **vec)
        goto ready;
     }
 
-    strncpy (tmpfil, m_scratch ("", invo_name), sizeof(tmpfil));
-    if ((out = fopen (tmpfil, "w")) == NULL) {
-       int olderr;
-       extern int errno;
-       char newfil[80];
-
-       olderr = errno;
-       strncpy (newfil, m_tmpfil (invo_name), sizeof(newfil));
-       if ((out = fopen (newfil, "w")) == NULL) {
+    cp = m_mktemp(invo_name, NULL, &out);
+    if (cp == NULL) {
+        /* Try again, but try to create under /tmp */
+       int olderr = errno;
+        cp = m_mktemp2(NULL, invo_name, NULL, &out);
+        if (cp == NULL) {
            errno = olderr;
-           advise (tmpfil, "unable to create temporary file");
+           advise (NULL, "unable to create temporary file");
            return NOTOK;
-       } else {
-           strncpy (tmpfil, newfil, sizeof(tmpfil));
        }
     }
     copy_message (msgnum, out);
     fclose (out);
+    strncpy(tmpfil, cp, sizeof(tmpfil));
 
 ready: ;
     fflush (stdout);
@@ -3086,7 +2982,7 @@ static void
 copy_digest (int msgnum, FILE *out)
 {
     char c;
-    long pos;
+    long pos = 0L;
     static char buffer[BUFSIZ];
     register FILE *zp;