Removed the undocumented -unique switches. Seems they were JLR-only stuff.
[mmh] / uip / whatnowsbr.c
index 0699fce..3ed0ea4 100644 (file)
@@ -5,9 +5,9 @@
 ** COPYRIGHT file in the root directory of the nmh distribution for
 ** complete copyright information.
 **
-**  Several options have been added to ease the inclusion of attachments
-**  using the header field name mechanism added to anno and send.  The
-**  -attach option is used to specify the header field name for attachments.
+**  The inclusion of attachments is eased by
+**  using the header field name mechanism added to anno and send.
+**  The header field name for attachments is predefined.
 **
 **  Several commands have been added at the whatnow prompt:
 **
@@ -54,8 +54,6 @@ static struct swit whatnowswitches[] = {
        { "version", 0 },
 #define HELPSW  4
        { "help", 0 },
-#define ATTACHSW  5
-       { "attach header-field-name", 0 },
        { NULL, 0 }
 };
 
@@ -67,31 +65,29 @@ static struct swit aleqs[] = {
        { "edit [<editor> <switches>]", 0 },
 #define REFILEOPT  1
        { "refile [<switches>] +folder", 0 },
-#define BUILDMIMESW  2
-       { "mime [<switches>]", 0 },
-#define DISPSW  3
+#define DISPSW  2
        { "display [<switches>]", 0 },
-#define LISTSW  4
+#define LISTSW  3
        { "list [<switches>]", 0 },
-#define SENDSW  5
+#define SENDSW  4
        { "send [<switches>]", 0 },
-#define PUSHSW  6
+#define PUSHSW  5
        { "push [<switches>]", 0 },
-#define QUITSW  7
+#define QUITSW  6
        { "quit [-delete]", 0 },
-#define DELETESW  8
+#define DELETESW  7
        { "delete", 0 },
-#define CDCMDSW  9
+#define CDCMDSW  8
        { "cd [directory]", 0 },
-#define PWDCMDSW  10
+#define PWDCMDSW  9
        { "pwd", 0 },
-#define LSCMDSW  11
+#define LSCMDSW  10
        { "ls", 0 },
-#define ATTACHCMDSW  12
+#define ATTACHCMDSW  11
        { "attach", 0 },
-#define DETACHCMDSW  13
+#define DETACHCMDSW  12
        { "detach [-n]", 2 },
-#define ALISTCMDSW  14
+#define ALISTCMDSW  13
        { "alist [-ln] ", 2 },
        { NULL, 0 }
 };
@@ -105,8 +101,6 @@ static int editfile(char **, char **, char *, int, struct msgs *,
        char *, char *, int);
 static int sendfile(char **, char *, int);
 static void sendit(char *, char **, char *, int);
-static int buildfile(char **, char *);
-static int check_draft(char *);
 static int removefile(char *);
 static void writelscmd(char *, int, char **);
 static void writesomecmd(char *buf, int bufsz, char *cmd, char *trailcmd, char **argp);
@@ -128,7 +122,6 @@ WhatNow(int argc, char **argv)
        char buf[BUFSIZ], prompt[BUFSIZ];
        char **argp, **arguments;
        struct stat st;
-       char *attach = NULL;  /* attachment header field name */
        char cwd[MAXPATHLEN + 1];  /* current working directory */
        char file[MAXPATHLEN + 1];  /* file name buffer */
        char shell[MAXPATHLEN + 1];  /* shell response buffer */
@@ -187,13 +180,6 @@ WhatNow(int argc, char **argv)
                                                        argp[-2]);
                                continue;
 
-                       case ATTACHSW:
-                               if (attach != NULL)
-                                       adios(NULL, "only one attachment header field name at a time!");
-                               if (!(attach = *argp++) || *attach == '-')
-                                       adios(NULL, "missing argument to %s",
-                                                       argp[-2]);
-                               continue;
                        }
                }
                if (drft)
@@ -238,11 +224,6 @@ WhatNow(int argc, char **argv)
                                advise(NULL, "no alternate message to display");
                        break;
 
-               case BUILDMIMESW:
-                       /* Translate MIME composition file */
-                       buildfile(++argp, drft);
-                       break;
-
                case EDITSW:
                        /* Call an editor on the draft file */
                        if (*++argp)
@@ -344,11 +325,6 @@ WhatNow(int argc, char **argv)
                        ** -n    numbers listing
                        */
 
-                       if (attach == NULL) {
-                               advise(NULL, "can't list because no header field name was given.");
-                               break;
-                       }
-
                        l = NULL;
                        n = 0;
 
@@ -373,7 +349,7 @@ WhatNow(int argc, char **argv)
                                advise(NULL, "usage is alist [-ln].");
 
                        else
-                               annolist(drft, attach, l, n);
+                               annolist(drft, attach_hdr, l, n);
 
                        break;
 
@@ -382,11 +358,6 @@ WhatNow(int argc, char **argv)
                        ** Attach files to current draft.
                        */
 
-                       if (attach == NULL) {
-                               advise(NULL, "can't attach because no header field name was given.");
-                               break;
-                       }
-
                        if (*(argp+1) == NULL) {
                                advise(NULL, "attach command requires file argument(s).");
                                break;
@@ -409,20 +380,21 @@ WhatNow(int argc, char **argv)
                        ** working directory to relative path names.
                        ** Add the attachment annotation to the draft.
                        */
-
                        if ((f = popen_in_dir(cwd, buf, "r")) != (FILE *)0) {
                                while (fgets(shell, sizeof (shell), f)
                                                != NULL) {
                                        *(strchr(shell, '\n')) = '\0';
 
                                        if (*shell == '/')
-                                               annotate(drft, attach, shell,
-                                                               1, 0, -2, 1);
+                                               annotate(drft, attach_hdr,
+                                                               shell, 1, 0,
+                                                               -2, 1);
                                        else {
                                                sprintf(file, "%s/%s", cwd,
                                                                shell);
-                                               annotate(drft, attach, file,
-                                                               1, 0, -2, 1);
+                                               annotate(drft, attach_hdr,
+                                                               file, 1, 0,
+                                                               -2, 1);
                                        }
                                }
 
@@ -436,14 +408,7 @@ WhatNow(int argc, char **argv)
                case DETACHCMDSW:
                        /*
                        ** Detach files from current draft.
-                       */
-
-                       if (attach == NULL) {
-                               advise(NULL, "can't detach because no header field name was given.");
-                               break;
-                       }
-
-                       /*
+                       **
                        ** Scan the arguments for a -n.  Mixed file
                        ** names and numbers aren't allowed, so this
                        ** catches a -n anywhere in the argument list.
@@ -475,8 +440,9 @@ WhatNow(int argc, char **argv)
 
                                        if (**arguments != '\0') {
                                                n = atoi(*arguments);
-                                               annotate(drft, attach, NULL,
-                                                               1, 0, n, 1);
+                                               annotate(drft, attach_hdr,
+                                                               NULL, 1, 0,
+                                                               n, 1);
 
                                                for (argp = arguments + 1; *argp != NULL; argp++) {
                                                        if (atoi(*argp) > n) {
@@ -507,7 +473,7 @@ WhatNow(int argc, char **argv)
                                while (fgets(shell, sizeof (shell), f)
                                                != NULL) {
                                        *(strchr(shell, '\n')) = '\0';
-                                       annotate(drft, attach, shell,
+                                       annotate(drft, attach_hdr, shell,
                                                        1, 0, 0, 1);
                                }
                                pclose(f);
@@ -642,9 +608,6 @@ editfile(char **ed, char **arg, char *file, int use, struct msgs *mp,
 
 #ifdef HAVE_LSTAT
        int slinked = 0;
-#if 0
-       int oumask;  /* PJS: for setting permissions on symlinks. */
-#endif
 #endif /* HAVE_LSTAT */
 
        /* Was there a previous edit session? */
@@ -682,15 +645,7 @@ editfile(char **ed, char **arg, char *file, int use, struct msgs *mp,
                unlink(linkpath);
 #ifdef HAVE_LSTAT
                if (link(altpath, linkpath) == NOTOK) {
-#if 0
-                       /* I don't think permission on symlinks matters /JLR */
-                       /* PJS: else symlinks are world 'r' */
-                       oumask = umask(0044);
-#endif
                        symlink(altpath, linkpath);
-#if 0
-                       umask(oumask);  /* PJS: else symlinks are world 'r' */
-#endif
                        slinked = 1;
                } else {
                        slinked = 0;
@@ -827,18 +782,6 @@ sendfile(char **arg, char *file, int pushsw)
        int i, vecp;
        char *cp, *sp, *vec[MAXARGS];
 
-       /* Translate MIME composition file, if necessary */
-       if ((cp = context_find("automimeproc")) && (!strcmp(cp, "1")) &&
-                       !getenv("NOMHNPROC") && check_draft(file) &&
-                       (buildfile(NULL, file) == NOTOK))
-               return 0;
-
-       /* For backwards compatibility */
-       if ((cp = context_find("automhnproc")) && !getenv("NOMHNPROC")
-                       && check_draft(file) && (i = editfile(&cp, NULL,
-                       file, NOUSE, NULL, NULL, NULL, 0)))
-               return 0;
-
        /*
        ** If the sendproc is the nmh command `send', then we call
        ** those routines directly rather than exec'ing the command.
@@ -882,101 +825,6 @@ sendfile(char **arg, char *file, int pushsw)
 }
 
 
-/*
-** Translate MIME composition file (call buildmimeproc)
-*/
-
-static int
-buildfile(char **argp, char *file)
-{
-       int i;
-       char **args, *ed;
-
-       ed = buildmimeproc;
-
-       /* allocate space for arguments */
-       i = 0;
-       if (argp) {
-               while (argp[i])
-                       i++;
-       }
-       args = (char **) mh_xmalloc((i + 2) * sizeof(char *));
-
-       /*
-       ** For backward compatibility, we need to add -build
-       ** if we are using mhn as buildmimeproc
-       */
-       i = 0;
-       if (strcmp(mhbasename(ed), "mhn") == 0)
-               args[i++] = "-build";
-
-       /* copy any other arguments */
-       while (argp && *argp)
-               args[i++] = *argp++;
-       args[i] = NULL;
-
-       i = editfile(&ed, args, file, NOUSE, NULL, NULL, NULL, 0);
-       free(args);
-
-       return (i ? NOTOK : OK);
-}
-
-
-/*
-**  Check if draft is a mhbuild composition file
-*/
-
-static int
-check_draft(char *msgnam)
-{
-       int state;
-       char buf[BUFSIZ], name[NAMESZ];
-       FILE *fp;
-
-       if ((fp = fopen(msgnam, "r")) == NULL)
-               return 0;
-       for (state = FLD;;)
-               switch (state = m_getfld(state, name, buf, sizeof(buf), fp)) {
-               case FLD:
-               case FLDPLUS:
-               case FLDEOF:
-                       /*
-                       ** If draft already contains any of the
-                       ** Content-XXX fields, then assume it already
-                       ** been converted.
-                       */
-                       if (uprf(name, XXX_FIELD_PRF)) {
-                               fclose(fp);
-                               return 0;
-                       }
-                       while (state == FLDPLUS)
-                               state = m_getfld(state, name, buf,
-                                               sizeof(buf), fp);
-                       break;
-
-               case BODY:
-                       do {
-                               char *bp;
-
-                               for (bp = buf; *bp; bp++)
-                                       if (*bp != ' ' && *bp != '\t' &&
-                                                       *bp != '\n') {
-                                               fclose(fp);
-                                               return 1;
-                                       }
-
-                               state = m_getfld(state, name, buf,
-                                               sizeof(buf), fp);
-                       } while (state == BODY);
-                       /* and fall... */
-
-               default:
-                       fclose(fp);
-                       return 0;
-               }
-}
-
-
 static struct swit  sendswitches[] = {
 #define ALIASW  0
        { "alias aliasfile", 0 },
@@ -994,60 +842,24 @@ static struct swit  sendswitches[] = {
        { "forward", 0 },
 #define NFORWSW  7
        { "noforward", 0 },
-#define MIMESW  8
-       { "mime", 0 },
-#define NMIMESW  9
-       { "nomime", 0 },
-#define MSGDSW  10
-       { "msgid", 0 },
-#define NMSGDSW  11
-       { "nomsgid", 0 },
-#define SPSHSW  12
+#define SPSHSW  8
        { "push", 0 },
-#define NSPSHSW  13
+#define NSPSHSW  9
        { "nopush", 0 },
-#define UNIQSW  14
-       { "unique", -6 },
-#define NUNIQSW  15
-       { "nounique", -8 },
-#define VERBSW  16
+#define VERBSW  10
        { "verbose", 0 },
-#define NVERBSW  17
+#define NVERBSW  11
        { "noverbose", 0 },
-#define WATCSW  18
+#define WATCSW  12
        { "watch", 0 },
-#define NWATCSW  19
+#define NWATCSW  13
        { "nowatch", 0 },
-#define WIDTHSW  20
+#define WIDTHSW  14
        { "width columns", 0 },
-#define SVERSIONSW  21
+#define SVERSIONSW  15
        { "version", 0 },
-#define SHELPSW  22
+#define SHELPSW  16
        { "help", 0 },
-#define BITSTUFFSW  23
-       { "dashstuffing", -12 },
-#define NBITSTUFFSW  24
-       { "nodashstuffing", -14 },
-#define MAILSW  25
-       { "mail", -4 },
-#define SAMLSW  26
-       { "saml", -4 },
-#define SSNDSW  27
-       { "send", -4 },
-#define SOMLSW  28
-       { "soml", -4 },
-#define CLIESW  29
-       { "client host", -6 },
-#define SERVSW  30
-       { "server host", 6 },
-#define SNOOPSW  31
-       { "snoop", -5 },
-#define SNDATTACHSW  32
-       { "attach file", 6 },
-#define SNDATTACHFORMAT   33
-       { "attachformat", 7 },
-#define PORTSW  34
-       { "port server-port-name/number", 4 },
        { NULL, 0 }
 };
 
@@ -1056,7 +868,6 @@ extern int debugsw;  /* from sendsbr.c */
 extern int forwsw;
 extern int inplace;
 extern int pushsw;
-extern int unique;
 extern int verbsw;
 
 extern char *altmsg;  /*  .. */
@@ -1071,15 +882,10 @@ sendit(char *sp, char **arg, char *file, int pushed)
        char *cp, buf[BUFSIZ], **argp;
        char **arguments, *vec[MAXARGS];
        struct stat st;
-       char *attach = NULL;  /* attachment header field name */
-       int attachformat = 0;  /* mhbuild format specifier for attachments */
 
 #ifndef lint
        int distsw = 0;
 #endif
-#ifdef UCI
-       FILE *fp;
-#endif
 
        /*
        ** Make sure these are defined.  In particular, we need
@@ -1117,7 +923,6 @@ sendit(char *sp, char **arg, char *file, int pushed)
        debugsw = 0;
        forwsw = 1;
        inplace = 1;
-       unique = 0;
 
        altmsg = NULL;
        annotext = NULL;
@@ -1153,12 +958,6 @@ sendit(char *sp, char **arg, char *file, int pushed)
                                pushed = 0;
                                continue;
 
-                       case UNIQSW:
-                               unique++;
-                               continue;
-                       case NUNIQSW:
-                               unique = 0;
-                               continue;
                        case FORWSW:
                                forwsw++;
                                continue;
@@ -1180,28 +979,14 @@ sendit(char *sp, char **arg, char *file, int pushed)
                        case NFILTSW:
                        case FRMTSW:
                        case NFRMTSW:
-                       case BITSTUFFSW:
-                       case NBITSTUFFSW:
-                       case MIMESW:
-                       case NMIMESW:
-                       case MSGDSW:
-                       case NMSGDSW:
                        case WATCSW:
                        case NWATCSW:
-                       case MAILSW:
-                       case SAMLSW:
-                       case SSNDSW:
-                       case SOMLSW:
-                       case SNOOPSW:
                                vec[vecp++] = --cp;
                                continue;
 
                        case ALIASW:
                        case FILTSW:
                        case WIDTHSW:
-                       case CLIESW:
-                       case SERVSW:
-                       case PORTSW:
                                vec[vecp++] = --cp;
                                if (!(cp = *argp++) || *cp == '-') {
                                        advise(NULL, "missing argument to %s",
@@ -1211,27 +996,6 @@ sendit(char *sp, char **arg, char *file, int pushed)
                                vec[vecp++] = cp;
                                continue;
 
-                       case SNDATTACHSW:
-                               if (!(attach = *argp++) || *attach == '-') {
-                                       advise(NULL, "missing argument to %s",
-                                                       argp[-2]);
-                                       return;
-                               }
-                               continue;
-
-                       case SNDATTACHFORMAT:
-                               if (! *argp || **argp == '-')
-                                       adios(NULL, "missing argument to %s",
-                                                       argp[-1]);
-                               else {
-                                       attachformat = atoi(*argp);
-                                       if (attachformat < 0 || attachformat > ATTACHFORMATS - 1) {
-                                               advise(NULL, "unsupported attachformat %d", attachformat);
-                                               continue;
-                                       }
-                               }
-                               ++argp;
-                               continue;
                        }
                }
                advise(NULL, "usage: %s [switches]", sp);
@@ -1249,21 +1013,9 @@ sendit(char *sp, char **arg, char *file, int pushed)
                }
        }
 
-       if ((cp = getenv("SIGNATURE")) == NULL || *cp == 0)
+       if (!(cp = getenv("SIGNATURE")) || !*cp)
                if ((cp = context_find("signature")) && *cp)
                        m_putenv("SIGNATURE", cp);
-#ifdef UCI
-               else {
-                       snprintf(buf, sizeof(buf), "%s/.signature", mypath);
-                       if ((fp = fopen(buf, "r")) != NULL &&
-                                       fgets(buf, sizeof(buf), fp) != NULL) {
-                               fclose(fp);
-                               if (cp = strchr(buf, '\n'))
-                                       *cp = 0;
-                               m_putenv("SIGNATURE", buf);
-                       }
-               }
-#endif /* UCI */
 
        if ((annotext = getenv("mhannotate")) == NULL || *annotext == 0)
                annotext = NULL;
@@ -1296,7 +1048,7 @@ sendit(char *sp, char **arg, char *file, int pushed)
        vec[0] = mhbasename(postproc);
        closefds(3);
 
-       if (sendsbr(vec, vecp, file, &st, 1, attach, attachformat) == OK)
+       if (sendsbr(vec, vecp, file, &st, 1) == OK)
                done(0);
 }