char *hook; /* hook program from context */
pid_t pid; /* ID of child process */
int status; /* exit or other child process status */
- char *vec[4]; /* argument vector for child process */
+ char **vec; /* argument vector for child process */
+ int vecp; /* Vector index */
+ char *program; /* Name of program to execute */
static int did_message = 0; /* set if we've already output a message */
break;
case 0:
- vec[0] = r1bindex(hook, '/');
- vec[1] = message_file_name_1;
- vec[2] = message_file_name_2;
- vec[3] = (char *)0;
- execvp(hook, vec);
+ vec = argsplit(hook, &program, &vecp);
+ vec[vecp++] = message_file_name_1;
+ vec[vecp++] = message_file_name_2;
+ vec[vecp++] = NULL;
+ execvp(program, vec);
_exit(-1);
/* NOTREACHED */
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)
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));
}
}
{
pid_t pid;
int isdraft, vecp;
- char *vec[MAXARGS];
+ char **vec, *program;
context_save(); /* save the context file */
fflush(stdout);
case 0:
/* child */
- vecp = 0;
- vec[vecp++] = r1bindex (lproc, '/');
+ vec = argsplit(lproc, &program, &vecp);
isdraft = 1;
if (arg) {
while (*arg) {
}
vec[vecp] = NULL;
- execvp (lproc, vec);
+ execvp (program, vec);
fprintf (stderr, "unable to exec ");
perror (lproc);
_exit (-1);