diff --git a/Userland/Libraries/LibC/termios.cpp b/Userland/Libraries/LibC/termios.cpp index 75653b1fb58..6c35499980f 100644 --- a/Userland/Libraries/LibC/termios.cpp +++ b/Userland/Libraries/LibC/termios.cpp @@ -9,6 +9,7 @@ #include #include #include +#include extern "C" { @@ -154,4 +155,16 @@ void cfmakeraw(struct termios* tp) termios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); termios.c_cflag |= CS8; } + +// https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcgetwinsize.html +int tcgetwinsize(int fildes, winsize* winsize_p) +{ + return ioctl(fildes, TIOCGWINSZ, winsize_p); +} + +// https://pubs.opengroup.org/onlinepubs/9799919799/functions/tcsetwinsize.html +int tcsetwinsize(int fildes, winsize const* winsize_p) +{ + return ioctl(fildes, TIOCSWINSZ, winsize_p); +} } diff --git a/Userland/Libraries/LibC/termios.h b/Userland/Libraries/LibC/termios.h index a8c4bc4056b..71e7cc56b4a 100644 --- a/Userland/Libraries/LibC/termios.h +++ b/Userland/Libraries/LibC/termios.h @@ -18,6 +18,9 @@ int tcsendbreak(int fd, int duration); int tcflow(int fd, int action); int tcflush(int fd, int queue_selector); +int tcgetwinsize(int fildes, struct winsize* winsize_p); +int tcsetwinsize(int fildes, const struct winsize* winsize_p); + speed_t cfgetispeed(const struct termios*); speed_t cfgetospeed(const struct termios*); int cfsetispeed(struct termios*, speed_t);