diff options
| -rw-r--r-- | src/unistd/isatty.c | 6 | ||||
| -rw-r--r-- | 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);  | 
