From dfb94adb2574b60e7eb403f00789ab6576960435 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Wed, 10 Feb 2016 21:09:48 +0100 Subject: only close stdin when we read arguments from it --- xe.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'xe.c') diff --git a/xe.c b/xe.c index 77acdd7..c4b6292 100644 --- a/xe.c +++ b/xe.c @@ -205,14 +205,16 @@ run() char iter[32]; snprintf(iter, sizeof iter, "%ld", iterations); setenv("ITER", iter, 1); - // redirect stdin to /dev/null - int fd = open("/dev/null", O_RDONLY); - if (fd >= 0) { - if (dup2(fd, 0) != 0) - exit(1); - close(fd); - execvp(args[0], args); + // redirect stdin to /dev/null when we read arguments from it + if (!(aflag || Aflag)) { + int fd = open("/dev/null", O_RDONLY); + if (fd >= 0) { + if (dup2(fd, 0) != 0) + exit(1); + close(fd); + } } + execvp(args[0], args); fprintf(stderr, "xe: %s: %s\n", args[0], strerror(errno)); exit(errno == ENOENT ? 127 : 126); } -- cgit 1.4.1