diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/stdio/__fdopen.c | 5 | ||||
-rw-r--r-- | src/stdio/__stdout_write.c | 5 | ||||
-rw-r--r-- | src/unistd/isatty.c | 7 |
3 files changed, 8 insertions, 9 deletions
diff --git a/src/stdio/__fdopen.c b/src/stdio/__fdopen.c index a6ae73a2..ef8f47dc 100644 --- a/src/stdio/__fdopen.c +++ b/src/stdio/__fdopen.c @@ -1,6 +1,5 @@ #include "stdio_impl.h" #include <stdlib.h> -#include <termios.h> #include <sys/ioctl.h> #include <fcntl.h> #include <errno.h> @@ -9,7 +8,7 @@ FILE *__fdopen(int fd, const char *mode) { FILE *f; - struct termios tio; + struct winsize wsz; /* Check for valid initial mode character */ if (!strchr("rwa", *mode)) { @@ -43,7 +42,7 @@ FILE *__fdopen(int fd, const char *mode) /* Activate line buffered mode for terminals */ f->lbf = EOF; - if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TCGETS, &tio)) + if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz)) f->lbf = '\n'; /* Initialize op ptrs. No problem if some are unneeded. */ diff --git a/src/stdio/__stdout_write.c b/src/stdio/__stdout_write.c index 200fe2c9..dd1ec60f 100644 --- a/src/stdio/__stdout_write.c +++ b/src/stdio/__stdout_write.c @@ -1,12 +1,11 @@ #include "stdio_impl.h" -#include <termios.h> #include <sys/ioctl.h> size_t __stdout_write(FILE *f, const unsigned char *buf, size_t len) { - struct termios tio; + struct winsize wsz; f->write = __stdio_write; - if (!(f->flags & F_SVB) && __syscall(SYS_ioctl, f->fd, TCGETS, &tio)) + if (!(f->flags & F_SVB) && __syscall(SYS_ioctl, f->fd, TIOCGWINSZ, &wsz)) f->lbf = -1; return __stdio_write(f, buf, len); } diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c index cff6e9fe..c8badaf5 100644 --- a/src/unistd/isatty.c +++ b/src/unistd/isatty.c @@ -1,8 +1,9 @@ #include <unistd.h> -#include <termios.h> +#include <sys/ioctl.h> +#include "syscall.h" int isatty(int fd) { - struct termios t; - return tcgetattr(fd, &t) == 0; + struct winsize wsz; + return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); } |