瀏覽代碼

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.
Ali Mohammad Pur 3 年之前
父節點
當前提交
1fcef99ff7
共有 1 個文件被更改,包括 9 次插入14 次删除
  1. 9 14
      Userland/Libraries/LibLine/Editor.cpp

+ 9 - 14
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)