From 8e34c970b5c73c8ee314923b79802abccc51f333 Mon Sep 17 00:00:00 2001 From: Lucas Chollet Date: Mon, 2 Nov 2026 16:32:45 +0100 Subject: [PATCH] LibC: Implement tc{get,set}winsize functions We already support the operation with ioctl, these functions are simply the POSIX-compatible way of doing it. They were added in POSIX 2024. --- Userland/Libraries/LibC/termios.cpp | 13 +++++++++++++ Userland/Libraries/LibC/termios.h | 3 +++ 2 files changed, 16 insertions(+) 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);