diff options
author | Kay Sievers <kay.sievers@suse.de> | 2005-08-13 02:36:12 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@suse.de> | 2005-08-13 02:36:12 +0200 |
commit | af5461f72f86bc00fd40a11a8ac2b6979f8cd61a (patch) | |
tree | fdd962e1003bc64af19c423bc3a29eb994a860d0 /udev_utils_run.c | |
parent | 7d38d2287c882ffee02b5f285f2ee5bb60de0efa (diff) |
don't fail too bad, if /dev/null does not exist
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udev_utils_run.c')
-rw-r--r-- | udev_utils_run.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/udev_utils_run.c b/udev_utils_run.c index 44fb7f8316..cf633661e4 100644 --- a/udev_utils_run.c +++ b/udev_utils_run.c @@ -136,23 +136,19 @@ int run_program(const char *command, const char *subsystem, /* discard child output or connect to pipe */ devnull = open("/dev/null", O_RDWR); - if (devnull < 0) { + if (devnull > 0) { + dup2(devnull, STDIN_FILENO); + if (outpipe[1] < 0) + dup2(devnull, STDOUT_FILENO); + if (errpipe[1] < 0) + dup2(devnull, STDERR_FILENO); + close(devnull); + } else err("open /dev/null failed"); - exit(1); - } - dup2(devnull, STDIN_FILENO); - if (outpipe[1] > 0) dup2(outpipe[1], STDOUT_FILENO); - else - dup2(devnull, STDOUT_FILENO); - if (errpipe[1] > 0) dup2(errpipe[1], STDERR_FILENO); - else - dup2(devnull, STDERR_FILENO); - - close(devnull); execv(arg, argv); /* we should never reach this */ |