Commit | Line | Data |
---|---|---|
b2441318 | 1 | // SPDX-License-Identifier: GPL-2.0 |
b0742e90 ACM |
2 | #include "term.h" |
3 | #include <stdlib.h> | |
4 | #include <termios.h> | |
5 | #include <unistd.h> | |
6 | #include <sys/ioctl.h> | |
1fe143c5 JP |
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 | } |