Use execprog() instead of system() ... partly transition
[mmh] / uip / repl.c
index af147a1..e5fbc0f 100644 (file)
@@ -18,49 +18,41 @@ static struct swit switches[] = {
 #define GROUPSW  0
        { "group", 0 },
 #define NGROUPSW  1
-       { "nogroup", 0 },
+       { "nogroup", 2 },
 #define ANNOSW  2
        { "annotate", 0 },
 #define NANNOSW  3
-       { "noannotate", 0 },
+       { "noannotate", 2 },
 #define CCSW  4
        { "cc all|to|cc|me", 0 },
 #define NCCSW  5
-       { "nocc type", 0 },
+       { "nocc type", 2 },
 #define EDITRSW  6
        { "editor editor", 0 },
-#define NEDITSW  7
-       { "noedit", 0 },
-#define FILTSW  8
+#define FILTSW  7
        { "filter filterfile", 0 },
-#define NFILTSW  9
-       { "nofilter", 0 },
-#define FORMSW  10
+#define NFILTSW  8
+       { "nofilter", 2 },
+#define FORMSW  9
        { "form formfile", 0 },
-#define MIMESW  11
+#define MIMESW  10
        { "mime", 0 },
-#define NMIMESW  12
-       { "nomime", 0 },
-#define QURYSW  13
+#define NMIMESW  11
+       { "nomime", 2 },
+#define QURYSW  12
        { "query", 0 },
-#define NQURYSW  14
-       { "noquery", 0 },
-#define WHATSW  15
+#define NQURYSW  13
+       { "noquery", 2 },
+#define WHATSW  14
        { "whatnowproc program", 0 },
-#define NWHATSW  16
-       { "nowhatnowproc", 0 },
-#define VERSIONSW  17
-       { "version", 0 },
-#define HELPSW  18
+#define VERSIONSW  15
+       { "Version", 0 },
+#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 }
 };
 
@@ -141,23 +133,17 @@ 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];
        char **argp, **arguments;
        struct msgs *mp = NULL;
        FILE *in;
-
-#ifdef MHE
        int buildsw = 0;
-#endif /* MHE */
 
        filter = getcpy(etcpath(mhlreply));
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
@@ -214,10 +200,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,14 +207,10 @@ 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++;
+                               buildsw++;
                                continue;
 
                        case FILESW:
@@ -300,12 +278,14 @@ main(int argc, char **argv)
        if (file && (msg || folder))
                adios(NULL, "can't mix files and folders/msgs");
 
-#ifdef MHE
-       strncpy(drft, buildsw ? toabsdir("reply")
-               : m_draft(seq_beyond), sizeof(drft));
-#else
-       strncpy(drft, m_draft(seq_beyond), sizeof(drft));
-#endif /* MHE */
+       strncpy(drft, buildsw ? toabsdir("reply") : m_draft(seq_beyond),
+                       sizeof(drft));
+       /*
+       ** FIXME: (concerning MHE support (buildsw) only)
+       ** There's no check if the draft already exists. mmh has removed
+       ** this case by having the draft folder. I won't add code only to
+       ** handle this legacy issue for MHE. -- meillo@marmaro.de 2012-05
+       */
 
        if (file) {
                /*
@@ -363,10 +343,9 @@ main(int argc, char **argv)
        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;
 }
@@ -594,11 +573,11 @@ finished:
                /* add an attachment header */
                char buffer[BUFSIZ];
 
-               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) {
+               snprintf(buffer, sizeof buffer, "+%s %s",
+                               mp->foldpath, m_name(mp->lowsel));
+               if (execprogl("anno", "anno", "-append", "-nodate",
+                               drft, "-comp", attach_hdr, "-text", buffer,
+                               (char *)NULL) != 0) {
                        advise(NULL, "unable to add attachment header");
                }
        }