aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Henrion <mux@FreeBSD.org>2003-06-13 17:05:41 +0000
committerMaxime Henrion <mux@FreeBSD.org>2003-06-13 17:05:41 +0000
commit0792992c732d0636a2d183bb3823be167d1b372e (patch)
treea8306e10fb46eeba388e57266c028ee99aa7a93c
parent0d3b8ac42cad89a56f63abc4059e5b9d85f1c8a1 (diff)
Notes
-rw-r--r--usr.bin/xargs/xargs.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c
index 77f08ebd4124b..227d9f52332a6 100644
--- a/usr.bin/xargs/xargs.c
+++ b/usr.bin/xargs/xargs.c
@@ -483,6 +483,7 @@ static void
run(char **argv)
{
pid_t pid;
+ int fd;
char **avec;
/*
@@ -521,13 +522,16 @@ exec:
case -1:
err(1, "vfork");
case 0:
- close(0);
if (oflag) {
- if (open("/dev/tty", O_RDONLY) == -1)
- err(1, "open /dev/tty");
+ if ((fd = open(_PATH_TTY, O_RDONLY)) == -1)
+ err(1, "can't open /dev/tty");
} else {
- if (open("/dev/null", O_RDONLY) == -1)
- err(1, "open /dev/null");
+ fd = open(_PATH_DEVNULL, O_RDONLY);
+ }
+ if (fd > STDIN_FILENO) {
+ if (dup2(fd, STDIN_FILENO) != 0)
+ err(1, "can't dup2 to stdin");
+ close(fd);
}
execvp(argv[0], argv);
childerr = errno;