commit 77edf68c1a986fa3f80f5d5c986a736cbb5d24c4
parent dac6950d9e556d5521ad7913d27a6cf83e2a90a1
Author: Mattias Andrée <maandree@kth.se>
Date: Sun, 30 Apr 2017 14:00:19 +0200
Do not reopen /dev/std{in,out,err} when specified explicitly
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat:
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/util.c b/src/util.c
@@ -234,9 +234,16 @@ int
xenopen(int status, const char *path, int flags, int mode, ...)
{
int fd;
- if (!strncmp(path, "/dev/fd/", sizeof("/dev/fd/") - 1))
+ if (!strncmp(path, "/dev/fd/", sizeof("/dev/fd/") - 1)) {
if (!toi(path + sizeof("/dev/fd/") - 1, 0, INT_MAX, &fd))
return fd;
+ } else if (!strcmp(path, "/dev/stdin")) {
+ return STDIN_FILENO;
+ } else if (!strcmp(path, "/dev/stdout")) {
+ return STDOUT_FILENO;
+ } else if (!strcmp(path, "/dev/stderr")) {
+ return STDERR_FILENO;
+ }
fd = open(path, flags, mode);
if (fd < 0)
enprintf(status, "open %s:", path);