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 | |
8 | void 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 | |
30 | void 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 | } |
41 | |