commit 77edf68c1a986fa3f80f5d5c986a736cbb5d24c4
Author:     Mattias Andrée <[email protected]>
AuthorDate: Sun Apr 30 14:00:19 2017 +0200
Commit:     Mattias Andrée <[email protected]>
CommitDate: Sun Apr 30 14:00:19 2017 +0200

    Do not reopen /dev/std{in,out,err} when specified explicitly
    
    Signed-off-by: Mattias Andrée <[email protected]>

diff --git a/src/util.c b/src/util.c
index b5aac6e..95b46f4 100644
--- 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);

Reply via email to