diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-10-07 00:17:11 -0700 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:37:03 -0700 |
commit | 1059b07a143fac796a4ae8a7235cab9665a7622e (patch) | |
tree | 48551f0cd63c974317a857aa1889251eb70cfca7 | |
parent | e284ecba7646562da9ad4c3c22871f6c341960d4 (diff) |
[PATCH] fix problems with dev.d and udevstart
Here is the correction for the dev.d/ scripts too. We should pass
the right argv[0] here too. A script may depend on the right value, as
udev does with udev/udevstart.
Here is the old version:
[pid 4692] execve("/etc/dev.d/default/log.dev", ["./udev", "block"], [/* 41 vars */]) = 0
this the new one:
[pid 9832] execve("/etc/dev.d/default/log.dev", ["/etc/dev.d/default/log.dev", "block"], [/* 41 vars */]) = 0
-rw-r--r-- | dev_d.c | 8 | ||||
-rw-r--r-- | namedev.c | 5 |
2 files changed, 7 insertions, 6 deletions
@@ -39,6 +39,7 @@ static int run_program(char *name) { pid_t pid; int fd; + char *argv[3]; dbg("running %s", name); @@ -54,7 +55,12 @@ static int run_program(char *name) dup2(fd, STDERR_FILENO); } close(fd); - execv(name, main_argv); + + argv[0] = name; + argv[1] = main_argv[1]; + argv[2] = NULL; + + execv(name, argv); dbg("exec of child failed"); exit(1); case -1: @@ -450,11 +450,6 @@ static int execute_program(const char *path, char *value, int len) dbg("execute '%s' with subsystem '%s' argument", arg, argv[1]); } - /* set basename() only */ - pos = strrchr(argv[0], '/'); - if (pos != NULL) - argv[0] = &pos[1]; - retval = pipe(fds); if (retval != 0) { dbg("pipe failed"); |