summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--namedev.c24
-rw-r--r--udevinfo.c2
-rw-r--r--udevsend.c1
3 files changed, 12 insertions, 15 deletions
diff --git a/namedev.c b/namedev.c
index 6b1aa297ea..de7f7c1b88 100644
--- a/namedev.c
+++ b/namedev.c
@@ -332,12 +332,8 @@ static int execute_program(char *path, char *value, int len)
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 */
@@ -353,16 +349,16 @@ static int execute_program(char *path, char *value, int len)
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;
diff --git a/udevinfo.c b/udevinfo.c
index aa9d20a773..4d28755b2f 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -397,7 +397,7 @@ help:
" -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"
diff --git a/udevsend.c b/udevsend.c
index 3f3bbacbc2..0a305e50c4 100644
--- a/udevsend.c
+++ b/udevsend.c
@@ -87,6 +87,7 @@ static int start_daemon(void)
case 0:
/* daemon */
setsid();
+ chdir("/");
execl(UDEVD_EXEC, "udevd", NULL);
dbg("exec of daemon failed");
exit(1);