Removed the mime command from whatnow and automimeproc (automhnproc).
[mmh] / uip / whatnowsbr.c
index 0699fce..e958ef3 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);
@@ -827,18 +793,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 +836,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 },
@@ -1042,11 +901,7 @@ static struct swit  sendswitches[] = {
        { "server host", 6 },
 #define SNOOPSW  31
        { "snoop", -5 },
-#define SNDATTACHSW  32
-       { "attach file", 6 },
-#define SNDATTACHFORMAT   33
-       { "attachformat", 7 },
-#define PORTSW  34
+#define PORTSW  32
        { "port server-port-name/number", 4 },
        { NULL, 0 }
 };
@@ -1071,8 +926,6 @@ 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;
@@ -1211,27 +1064,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);
@@ -1296,7 +1128,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);
 }