]> diplodocus.org Git - nmh/blobdiff - sbr/refile.c
Added -v and -a switches to whatnow attach so the user can see
[nmh] / sbr / refile.c
index fc2793c699dae5ee05836982305ff4f2ed8f1516..c675500f45bd9122f619dcbc6c303600bcd88bdb 100644 (file)
@@ -15,15 +15,16 @@ int
 refile (char **arg, char *file)
 {
     pid_t pid;
 refile (char **arg, char *file)
 {
     pid_t pid;
-    register int vecp;
-    char *vec[MAXARGS];
+    int vecp;
+    char **vec;
+    char *program;
 
 
-    vecp = 0;
-    vec[vecp++] = r1bindex (fileproc, '/');
-    vec[vecp++] = "-nolink";   /* override bad .mh_profile defaults */
-    vec[vecp++] = "-nopreserve";
-    vec[vecp++] = "-file";
-    vec[vecp++] = file;
+    vec = argsplit(fileproc, &program, &vecp);
+
+    vec[vecp++] = getcpy("-nolink");   /* override bad .mh_profile defaults */
+    vec[vecp++] = getcpy("-nopreserve");
+    vec[vecp++] = getcpy("-file");
+    vec[vecp++] = getcpy(file);
 
     if (arg) {
        while (*arg)
 
     if (arg) {
        while (*arg)
@@ -34,18 +35,19 @@ refile (char **arg, char *file)
     context_save();    /* save the context file */
     fflush(stdout);
 
     context_save();    /* save the context file */
     fflush(stdout);
 
-    switch (pid = vfork()) {
+    switch (pid = fork()) {
        case -1: 
            advise ("fork", "unable to");
            return -1;
 
        case 0: 
        case -1: 
            advise ("fork", "unable to");
            return -1;
 
        case 0: 
-           execvp (fileproc, vec);
+           execvp (program, vec);
            fprintf (stderr, "unable to exec ");
            perror (fileproc);
            _exit (-1);
 
        default: 
            fprintf (stderr, "unable to exec ");
            perror (fileproc);
            _exit (-1);
 
        default: 
+           arglist_free(program, vec);
            return (pidwait (pid, -1));
     }
 }
            return (pidwait (pid, -1));
     }
 }