whatnow: Use execprog() ... one more time
[mmh] / uip / whatnow.c
index ff9d84c..4f8d956 100644 (file)
@@ -302,32 +302,28 @@ main(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"))) {
-                               while (fgets(shell, sizeof(shell), f)) {
-                                       *(strchr(shell, '\n')) = '\0';
-
-                                       if (*shell == '/')
-                                               sprintf(file, "%s", shell);
-                                       else {
-                                               sprintf(file, "%s/%s", cwd,
-                                                               shell);
-                                       }
-                                       if (execprogl("anno", "anno",
-                                                       "-nodate",
-                                                       "-append", "-comp",
-                                                       attach_hdr, "-text",
-                                                       file, drft,
-                                                       (char *)NULL)
-                                                       != 0) {
-                                               advise(NULL, "Could not add attachment header.");
-                                       }
-                               }
-
-                               pclose(f);
-                       } else {
+                       if (!(f = popen_in_dir(cwd, buf, "r"))) {
                                advise("popen", "could not get file from shell");
+                               break;
                        }
 
+                       while (fgets(shell, sizeof(shell), f)) {
+                               *(strchr(shell, '\n')) = '\0';
+
+                               if (*shell == '/')
+                                       sprintf(file, "%s", shell);
+                               else {
+                                       sprintf(file, "%s/%s", cwd, shell);
+                               }
+                               if (execprogl("anno", "anno",
+                                               "-nodate", "-append",
+                                               "-comp", attach_hdr,
+                                               "-text", file,
+                                               drft, (char *)NULL) != 0) {
+                                       advise(NULL, "Could not add attachment header.");
+                               }
+                       }
+                       pclose(f);
                        break;
 
                case DETACHCMDSW:
@@ -521,9 +517,9 @@ editfile(char **ed, char **arg, char *file, int use)
        case OK:
                vecp = 0;
                vec[vecp++] = mhbasename(*ed);
-               if (arg)
-                       while (*arg)
-                               vec[vecp++] = *arg++;
+               while (arg && *arg) {
+                       vec[vecp++] = *arg++;
+               }
                vec[vecp++] = file;
                vec[vecp] = NULL;
 
@@ -569,36 +565,22 @@ editfile(char **ed, char **arg, char *file, int use)
 static int
 sendfile(char **arg, char *file)
 {
-       pid_t child_id;
-       int vecp;
+       int vecp = 0;
        char *vec[MAXARGS];
 
-       context_save();  /* save the context file */
+       context_save();
        fflush(stdout);
 
-       switch (child_id = fork()) {
-       case NOTOK:
-               advise(NULL, "unable to fork, so sending directly...");
-               /* fall */
-       case OK:
-               vecp = 0;
-               vec[vecp++] = "send";
-               if (arg)
-                       while (*arg)
-                               vec[vecp++] = *arg++;
-               vec[vecp++] = file;
-               vec[vecp] = NULL;
-
-               execvp("send", vec);
-               fprintf(stderr, "%s: unable to exec ", invo_name);
-               perror("send");
-               _exit(-1);
-
-       default:
-               if (pidwait(child_id, OK) == 0)
-                       done(0);
-               return 1;
+       vec[vecp++] = "send";
+       while (arg && *arg) {
+               vec[vecp++] = *arg++;
        }
+       vec[vecp++] = file;
+       vec[vecp] = NULL;
+       execvp(*vec, vec);
+       fprintf(stderr, "%s: unable to exec ", invo_name);
+       perror("send");
+       _exit(-1);
 }
 
 
@@ -608,11 +590,9 @@ sendfile(char **arg, char *file)
 static int
 refile(char **arg, char *file)
 {
-       pid_t pid;
-       register int vecp;
+       int vecp = 0;
        char *vec[MAXARGS];
 
-       vecp = 0;
        vec[vecp++] = "refile";
        vec[vecp++] = "-nolink";  /* override bad .mh_profile defaults */
        vec[vecp++] = "-file";
@@ -623,23 +603,10 @@ refile(char **arg, char *file)
        }
        vec[vecp] = NULL;
 
-       context_save();  /* save the context file */
+       context_save();
        fflush(stdout);
 
-       switch (pid = fork()) {
-       case -1:
-               advise("fork", "unable to");
-               return -1;
-
-       case 0:
-               execvp(*vec, vec);
-               fprintf(stderr, "%s: unable to exec ", invo_name);
-               perror(*vec);
-               _exit(-1);
-
-       default:
-               return (pidwait(pid, -1));
-       }
+       return execprog(*vec, vec);
 }