pid = fork();
if (pid == 0) {
/* In child */
+ char *bufptr = file;
+
close(cmd_in_fd);
dup2(cmd_out_fd, STDOUT_FILENO);
dup2(cmd_out_fd, STDERR_FILENO);
close(cmd_out_fd);
- spawn(utils[UTIL_SH_EXEC], file, arg1, arg2, F_MULTI);
+ if (bufptr && arg1) {
+ char argbuf[CMD_LEN_MAX];
+
+ len = xstrsncpy(argbuf, file, xstrlen(file) + 1);
+ argbuf[len - 1] = ' ';
+ bufptr = argbuf + len;
+ len = xstrsncpy(bufptr, arg1, xstrlen(arg1) + 1);
+ if (arg2) {
+ bufptr[len - 1] = ' ';
+ xstrsncpy(bufptr + len, arg2, xstrlen(arg2) + 1);
+ }
+
+ bufptr = argbuf;
+ }
+
+ spawn(utils[UTIL_SH_EXEC], bufptr, NULL, NULL, F_MULTI);
_exit(EXIT_SUCCESS);
}