whatnow: No need to fork
authormarkus schnalke <meillo@marmaro.de>
Thu, 15 Jan 2015 20:13:08 +0000 (21:13 +0100)
committermarkus schnalke <meillo@marmaro.de>
Thu, 15 Jan 2015 20:13:08 +0000 (21:13 +0100)
Plus refactoring.

uip/whatnow.c

index 914e298..163a02e 100644 (file)
@@ -565,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);
 }