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