hc
2024-08-09 d3d58fa5ee2428cd2dde78fd8eeeeabe916b3835
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);
}