diff options
| author | Maxime Henrion <mux@FreeBSD.org> | 2003-06-13 17:05:41 +0000 |
|---|---|---|
| committer | Maxime Henrion <mux@FreeBSD.org> | 2003-06-13 17:05:41 +0000 |
| commit | 0792992c732d0636a2d183bb3823be167d1b372e (patch) | |
| tree | a8306e10fb46eeba388e57266c028ee99aa7a93c | |
| parent | 0d3b8ac42cad89a56f63abc4059e5b9d85f1c8a1 (diff) | |
Notes
| -rw-r--r-- | usr.bin/xargs/xargs.c | 14 |
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; |
