Removed the -noeditor switches and made them replaceable by `-editor ""'.
[mmh] / uip / repl.c
index 3cba512..4523365 100644 (file)
@@ -29,38 +29,32 @@ static struct swit switches[] = {
        { "nocc type", 0 },
 #define EDITRSW  6
        { "editor editor", 0 },
-#define NEDITSW  7
-       { "noedit", 0 },
-#define FILTSW  8
+#define FILTSW  7
        { "filter filterfile", 0 },
-#define NFILTSW  9
+#define NFILTSW  8
        { "nofilter", 0 },
-#define FORMSW  10
+#define FORMSW  9
        { "form formfile", 0 },
-#define MIMESW  11
+#define MIMESW  10
        { "mime", 0 },
-#define NMIMESW  12
+#define NMIMESW  11
        { "nomime", 0 },
-#define QURYSW  13
+#define QURYSW  12
        { "query", 0 },
-#define NQURYSW  14
+#define NQURYSW  13
        { "noquery", 0 },
-#define WHATSW  15
+#define WHATSW  14
        { "whatnowproc program", 0 },
-#define NWHATSW  16
-       { "nowhatnowproc", 0 },
-#define VERSIONSW  17
+#define VERSIONSW  15
        { "version", 0 },
-#define HELPSW  18
+#define HELPSW  16
        { "help", 0 },
-#define FILESW  19
+#define FILESW  17
        { "file file", 4 },  /* interface from msh */
-
 #ifdef MHE
-#define BILDSW  20
+# define BILDSW  18
        { "build", 5 },  /* interface from mhe */
 #endif
-
        { NULL, 0 }
 };
 
@@ -101,7 +95,7 @@ static int dftype=0;
 static char *badaddrs = NULL;
 static char *dfhost = NULL;
 
-static struct mailname mq = { NULL };
+static struct mailname mq;
 
 static struct format *fmt;
 
@@ -133,7 +127,7 @@ static char *addrcomps[] = {
 static void docc(char *, int);
 static int insert(struct mailname *);
 static void replfilter(FILE *, FILE *, char *);
-static void replout(FILE *, char *, char *, struct msgs *, int,
+static void replout(FILE *, char *, struct msgs *, int,
                char *, char *);
 
 
@@ -141,7 +135,6 @@ int
 main(int argc, char **argv)
 {
        int anot = 0;
-       int nedit = 0, nwhat = 0;
        char *cp, *cwd, *maildir, *file = NULL;
        char *folder = NULL, *msg = NULL;
        char *ed = NULL, drft[BUFSIZ], buf[BUFSIZ];
@@ -214,10 +207,6 @@ main(int argc, char **argv)
                                if (!(ed = *argp++) || *ed == '-')
                                        adios(NULL, "missing argument to %s",
                                                        argp[-2]);
-                               nedit = 0;
-                               continue;
-                       case NEDITSW:
-                               nedit++;
                                continue;
 
                        case WHATSW:
@@ -225,15 +214,12 @@ main(int argc, char **argv)
                                                *whatnowproc == '-')
                                        adios(NULL, "missing argument to %s",
                                                        argp[-2]);
-                               nwhat = 0;
                                continue;
 #ifdef MHE
                        case BILDSW:
                                buildsw++;  /* fall... */
-#endif /* MHE */
-                       case NWHATSW:
-                               nwhat++;
                                continue;
+#endif /* MHE */
 
                        case FILESW:
                                if (file)
@@ -360,13 +346,12 @@ main(int argc, char **argv)
                        form = etcpath(replcomps);
        }
 
-       replout(in, msg, drft, mp, mime, form, filter);
+       replout(in, drft, mp, mime, form, filter);
        fclose(in);
 
-       if (nwhat)
+       if (buildsw)
                done(0);
-       what_now(ed, nedit, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL,
-                       cwd);
+       what_now(ed, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL, cwd);
        done(1);
        return 1;
 }
@@ -403,7 +388,7 @@ docc(char *cp, int ccflag)
 
 
 static void
-replout(FILE *inb, char *msg, char *drft, struct msgs *mp,
+replout(FILE *inb, char *drft, struct msgs *mp,
        int mime, char *form, char *filter)
 {
        register int state, i;
@@ -594,9 +579,13 @@ finished:
                /* add an attachment header */
                char buffer[BUFSIZ];
 
-               snprintf(buffer, sizeof buffer, "+%s %s",
-                               mp->foldpath, m_name(mp->lowsel));
-               annotate(drft, attach_hdr, buffer, 0, -2, 1, 0);
+               snprintf(buffer, sizeof buffer, "anno -append -nodate '%s' "
+                               "-comp '%s' -text '+%s %s'",
+                               drft,
+                               attach_hdr, mp->foldpath, m_name(mp->lowsel));
+               if (system(buffer) != 0) {
+                       advise(NULL, "unable to add attachment header");
+               }
        }
 
        /* return dynamically allocated buffers */
@@ -741,15 +730,9 @@ insert(struct mailname *np)
                snprintf(buffer, sizeof(buffer), "Reply to %s? ",
                                adrformat(np));
                if (!gans(buffer, anoyes))
-               return 0;
+                       return 0;
        }
        mp->m_next = np;
-
-#ifdef ISI
-       if (ismymbox(np))
-               ccme = 0;
-#endif
-
        return 1;
 }
 
@@ -762,7 +745,7 @@ insert(struct mailname *np)
 static void
 replfilter(FILE *in, FILE *out, char *filter)
 {
-       int pid;
+       int pid, n;
        char *errstr;
 
        if (filter == NULL)
@@ -781,7 +764,9 @@ replfilter(FILE *in, FILE *out, char *filter)
        case OK:
                dup2(fileno(in), fileno(stdin));
                dup2(fileno(out), fileno(stdout));
-               closefds(3);
+               for (n=3; n<OPEN_MAX; n++) {
+                       close(n);
+               }
 
                execlp("mhl", "mhl", "-form", filter, NULL);
                errstr = strerror(errno);