X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5dd6771b28c257af405d7248639ed0e3bcdce38b..fcadfe1323db62daea7b943b8a1e4e6a3c8640fa:/sbr/refile.c?ds=inline diff --git a/sbr/refile.c b/sbr/refile.c index fc2793c6..c675500f 100644 --- a/sbr/refile.c +++ b/sbr/refile.c @@ -15,15 +15,16 @@ int 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) @@ -34,18 +35,19 @@ refile (char **arg, char *file) context_save(); /* save the context file */ fflush(stdout); - switch (pid = vfork()) { + switch (pid = fork()) { 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: + arglist_free(program, vec); return (pidwait (pid, -1)); } }