-
- /* copy off our path to use incase we have too many args */
- strfieldcpymax(buffer, path, sizeof(buffer));
-
- if (strchr(path, ' ')) {
- /* exec with arguments */
- pos = path;
- for (i=0; i < PROGRAM_MAXARG-1; i++) {
- args[i] = strsep(&pos, " ");
- if (args[i] == NULL)
- break;
- }
- if (args[i]) {
- dbg("too many args - %d, using subshell instead '%s'", i, buffer);
- retval = execl("/bin/sh", "sh", "-c", buffer, NULL);
- } else {
- dbg("execute program '%s'", path);
- retval = execv(args[0], args);
- }
+ if (argv[0] != NULL) {
+ dbg("execute '%s' with given arguments", argv[0]);
+ retval = execv(argv[0], argv);