version 1.12, 2003/08/02 20:38:38 |
version 1.13, 2003/08/18 17:55:57 |
|
|
|
|
|
|
int |
int |
|
process_setargv(struct pstate *ps, int argc, char **argv) |
|
{ |
|
int i; |
|
|
|
if (ps->ps_argv != NULL) { |
|
for (i = 0; i < ps->ps_argc; i++) |
|
free(ps->ps_argv[i]); |
|
free(ps->ps_argv); |
|
} |
|
|
|
ps->ps_argv = (char **)calloc((argc + 1), sizeof(char *)); |
|
if (ps->ps_argv == NULL) { |
|
warn("failed to allocate argument vector"); |
|
return (-1); |
|
} |
|
|
|
ps->ps_argc = argc; |
|
for (i = 0; i < argc; i++) { |
|
ps->ps_argv[i] = strdup(argv[i]); |
|
if (ps->ps_argv[i] == NULL) { |
|
warn("failed to copy argument"); |
|
return (-1); |
|
} |
|
} |
|
|
|
ps->ps_argv[i] = NULL; |
|
return (0); |
|
} |
|
|
|
|
|
int |
process_run(struct pstate *ps) |
process_run(struct pstate *ps) |
{ |
{ |
int status; |
int status; |