diff options
-rw-r--r-- | namedev.c | 24 | ||||
-rw-r--r-- | udevinfo.c | 2 | ||||
-rw-r--r-- | udevsend.c | 1 |
3 files changed, 12 insertions, 15 deletions
@@ -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); |