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