return -1;
}
pid = fork();
- if (pid == -1) {
- dbg("fork failed");
- return -1;
- }
-
- if (pid == 0) {
+ switch(pid) {
+ case 0:
/* child */
close(STDOUT_FILENO);
dup(fds[1]); /* dup write side of pipe to STDOUT */
dbg("too many args - %d", i);
args[i] = NULL;
}
- retval = execve(args[0], args, main_envp);
+ retval = execv(args[0], args);
} else {
- retval = execve(path, main_argv, main_envp);
- }
- if (retval != 0) {
- dbg("child execve failed");
- exit(1);
+ retval = execv(path, main_argv);
}
- return -1; /* avoid compiler warning */
- } else {
+ dbg("child execve failed");
+ exit(1);
+ case -1:
+ dbg("fork failed");
+ return -1;
+ default:
/* parent reads from fds[0] */
close(fds[1]);
retval = 0;
" -n NAME node name used for query\n"
"\n"
" -r print udev root\n"
- " -a print all attributes along the chain of the device\n"
+ " -a print all SYSFS_attributes along the device chain\n"
" -d dump whole database\n"
" -V print udev version\n"
" -h print this help text\n"
case 0:
/* daemon */
setsid();
+ chdir("/");
execl(UDEVD_EXEC, "udevd", NULL);
dbg("exec of daemon failed");
exit(1);