1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2b0742e90SArnaldo Carvalho de Melo #include "term.h" 3b0742e90SArnaldo Carvalho de Melo #include <stdlib.h> 4b0742e90SArnaldo Carvalho de Melo #include <termios.h> 5b0742e90SArnaldo Carvalho de Melo #include <unistd.h> 6b0742e90SArnaldo Carvalho de Melo #include <sys/ioctl.h> 71fe143c5SJosh Poimboeuf get_term_dimensions(struct winsize * ws)81fe143c5SJosh Poimboeufvoid get_term_dimensions(struct winsize *ws) 91fe143c5SJosh Poimboeuf { 101fe143c5SJosh Poimboeuf char *s = getenv("LINES"); 111fe143c5SJosh Poimboeuf 121fe143c5SJosh Poimboeuf if (s != NULL) { 131fe143c5SJosh Poimboeuf ws->ws_row = atoi(s); 141fe143c5SJosh Poimboeuf s = getenv("COLUMNS"); 151fe143c5SJosh Poimboeuf if (s != NULL) { 161fe143c5SJosh Poimboeuf ws->ws_col = atoi(s); 171fe143c5SJosh Poimboeuf if (ws->ws_row && ws->ws_col) 181fe143c5SJosh Poimboeuf return; 191fe143c5SJosh Poimboeuf } 201fe143c5SJosh Poimboeuf } 211fe143c5SJosh Poimboeuf #ifdef TIOCGWINSZ 221fe143c5SJosh Poimboeuf if (ioctl(1, TIOCGWINSZ, ws) == 0 && 231fe143c5SJosh Poimboeuf ws->ws_row && ws->ws_col) 241fe143c5SJosh Poimboeuf return; 251fe143c5SJosh Poimboeuf #endif 261fe143c5SJosh Poimboeuf ws->ws_row = 25; 271fe143c5SJosh Poimboeuf ws->ws_col = 80; 281fe143c5SJosh Poimboeuf } 291fe143c5SJosh Poimboeuf set_term_quiet_input(struct termios * old)301fe143c5SJosh Poimboeufvoid set_term_quiet_input(struct termios *old) 311fe143c5SJosh Poimboeuf { 321fe143c5SJosh Poimboeuf struct termios tc; 331fe143c5SJosh Poimboeuf 341fe143c5SJosh Poimboeuf tcgetattr(0, old); 351fe143c5SJosh Poimboeuf tc = *old; 361fe143c5SJosh Poimboeuf tc.c_lflag &= ~(ICANON | ECHO); 371fe143c5SJosh Poimboeuf tc.c_cc[VMIN] = 0; 381fe143c5SJosh Poimboeuf tc.c_cc[VTIME] = 0; 391fe143c5SJosh Poimboeuf tcsetattr(0, TCSANOW, &tc); 401fe143c5SJosh Poimboeuf } 41