From: Ken Hornstein Date: Fri, 1 Feb 2013 17:11:59 +0000 (-0500) Subject: More code converted to use argsplit(). X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/3b6be5607a251a3a793e97382e251ce66ea2bca0?ds=inline;hp=88019cf6462cea565a09c62f400cc9ff74087a63 More code converted to use argsplit(). --- diff --git a/sbr/ext_hook.c b/sbr/ext_hook.c index e94083b3..a86e7a3f 100644 --- a/sbr/ext_hook.c +++ b/sbr/ext_hook.c @@ -16,7 +16,9 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2) 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 */ @@ -30,11 +32,11 @@ ext_hook(char *hook_name, char *message_file_name_1, char *message_file_name_2) 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 */ diff --git a/sbr/refile.c b/sbr/refile.c index fc2793c6..f0fc76e5 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) @@ -40,12 +41,13 @@ refile (char **arg, char *file) 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)); } } diff --git a/sbr/showfile.c b/sbr/showfile.c index 59ae7952..c7223c21 100644 --- a/sbr/showfile.c +++ b/sbr/showfile.c @@ -15,7 +15,7 @@ showfile (char **arg, char *file) { pid_t pid; int isdraft, vecp; - char *vec[MAXARGS]; + char **vec, *program; context_save(); /* save the context file */ fflush(stdout); @@ -36,8 +36,7 @@ showfile (char **arg, char *file) case 0: /* child */ - vecp = 0; - vec[vecp++] = r1bindex (lproc, '/'); + vec = argsplit(lproc, &program, &vecp); isdraft = 1; if (arg) { while (*arg) { @@ -53,7 +52,7 @@ showfile (char **arg, char *file) } vec[vecp] = NULL; - execvp (lproc, vec); + execvp (program, vec); fprintf (stderr, "unable to exec "); perror (lproc); _exit (-1);