about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/stdio/__fdopen.c5
-rw-r--r--src/stdio/__stdout_write.c5
-rw-r--r--src/unistd/isatty.c7
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);
 }