term.c (728B)
1// SPDX-License-Identifier: GPL-2.0 2#include "term.h" 3#include <stdlib.h> 4#include <termios.h> 5#include <unistd.h> 6#include <sys/ioctl.h> 7 8void get_term_dimensions(struct winsize *ws) 9{ 10 char *s = getenv("LINES"); 11 12 if (s != NULL) { 13 ws->ws_row = atoi(s); 14 s = getenv("COLUMNS"); 15 if (s != NULL) { 16 ws->ws_col = atoi(s); 17 if (ws->ws_row && ws->ws_col) 18 return; 19 } 20 } 21#ifdef TIOCGWINSZ 22 if (ioctl(1, TIOCGWINSZ, ws) == 0 && 23 ws->ws_row && ws->ws_col) 24 return; 25#endif 26 ws->ws_row = 25; 27 ws->ws_col = 80; 28} 29 30void set_term_quiet_input(struct termios *old) 31{ 32 struct termios tc; 33 34 tcgetattr(0, old); 35 tc = *old; 36 tc.c_lflag &= ~(ICANON | ECHO); 37 tc.c_cc[VMIN] = 0; 38 tc.c_cc[VTIME] = 0; 39 tcsetattr(0, TCSANOW, &tc); 40}