diff options
author | Will Dietz <w@wdtz.org> | 2018-09-18 17:41:58 -0500 |
---|---|---|
committer | Will Dietz <w@wdtz.org> | 2018-09-18 17:41:58 -0500 |
commit | 697859fdc562082eae339ccb8cb8c560ab97278d (patch) | |
tree | 168109313eccc04929d20ef2a1430ab5c22caf22 /pkgs/os-specific/linux/musl/tty-more-precise-errors.patch | |
parent | 4305e7d5ecee69b82101c0cb273fddf23aa5c6e2 (diff) | |
download | nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar.gz nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar.bz2 nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar.lz nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar.xz nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.tar.zst nixlib-697859fdc562082eae339ccb8cb8c560ab97278d.zip |
musl: apply other upstream fixes, selected for relevance to NixOS usage
Diffstat (limited to 'pkgs/os-specific/linux/musl/tty-more-precise-errors.patch')
-rw-r--r-- | pkgs/os-specific/linux/musl/tty-more-precise-errors.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch b/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch new file mode 100644 index 000000000000..06b108559e46 --- /dev/null +++ b/pkgs/os-specific/linux/musl/tty-more-precise-errors.patch @@ -0,0 +1,51 @@ +From c84971995b3a6d5118f9357c040572f4c78bcd55 Mon Sep 17 00:00:00 2001 +From: Benjamin Peterson <benjamin@python.org> +Date: Thu, 13 Sep 2018 14:23:42 -0700 +Subject: improve error handling of ttyname_r and isatty + +POSIX allows ttyname(_r) and isatty to return EBADF if passed file +descriptor is invalid. + +maintainer's note: these are optional ("may fail") errors, but it's +non-conforming for ttyname_r to return ENOTTY when it failed for a +different reason. +--- + src/unistd/isatty.c | 6 +++++- + src/unistd/ttyname_r.c | 2 +- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c +index c8badaf5..75a9c186 100644 +--- a/src/unistd/isatty.c ++++ b/src/unistd/isatty.c +@@ -1,9 +1,13 @@ + #include <unistd.h> ++#include <errno.h> + #include <sys/ioctl.h> + #include "syscall.h" + + int isatty(int fd) + { + struct winsize wsz; +- return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); ++ unsigned long r = syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); ++ if (r == 0) return 1; ++ if (errno != EBADF) errno = ENOTTY; ++ return 0; + } +diff --git a/src/unistd/ttyname_r.c b/src/unistd/ttyname_r.c +index cb364c29..82acb75e 100644 +--- a/src/unistd/ttyname_r.c ++++ b/src/unistd/ttyname_r.c +@@ -9,7 +9,7 @@ int ttyname_r(int fd, char *name, size_t size) + char procname[sizeof "/proc/self/fd/" + 3*sizeof(int) + 2]; + ssize_t l; + +- if (!isatty(fd)) return ENOTTY; ++ if (!isatty(fd)) return errno; + + __procfdname(procname, fd); + l = readlink(procname, name, size); +-- +cgit v1.2.1 + |