From 1fcef99ff7bd05792e69b64c276c86c277e61f59 Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Mon, 28 Feb 2022 07:31:18 +0330 Subject: [PATCH] LibLine: Never assume a 25x80 terminal Just reuse the lldb hack if the normal stderr ioctl fails for any reason, and read the size directly off /dev/tty. --- Userland/Libraries/LibLine/Editor.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/Userland/Libraries/LibLine/Editor.cpp b/Userland/Libraries/LibLine/Editor.cpp index 3863131c10..3a5ce1f420 100644 --- a/Userland/Libraries/LibLine/Editor.cpp +++ b/Userland/Libraries/LibLine/Editor.cpp @@ -218,22 +218,17 @@ void Editor::ensure_free_lines_from_origin(size_t count) void Editor::get_terminal_size() { struct winsize ws; - - if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) < 0) { - m_num_columns = 80; - m_num_lines = 25; - } else { - if (ws.ws_col == 0 || ws.ws_row == 0) { - // LLDB uses ttys which "work" and then gives us a zero sized - // terminal which is far from useful - if (int fd = open("/dev/tty", O_RDONLY); fd != -1) { - ioctl(fd, TIOCGWINSZ, &ws); - close(fd); - } + ioctl(STDERR_FILENO, TIOCGWINSZ, &ws); + if (ws.ws_col == 0 || ws.ws_row == 0) { + // LLDB uses ttys which "work" and then gives us a zero sized + // terminal which is far from useful + if (int fd = open("/dev/tty", O_RDONLY); fd != -1) { + ioctl(fd, TIOCGWINSZ, &ws); + close(fd); } - m_num_columns = ws.ws_col; - m_num_lines = ws.ws_row; } + m_num_columns = ws.ws_col; + m_num_lines = ws.ws_row; } void Editor::add_to_history(String const& line)