41 lines · c
1// SPDX-License-Identifier: GPL-2.02#include "term.h"3#include <stdlib.h>4#include <termios.h>5#include <unistd.h>6#include <sys/ioctl.h>7 8void 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 TIOCGWINSZ22 if (ioctl(1, TIOCGWINSZ, ws) == 0 &&23 ws->ws_row && ws->ws_col)24 return;25#endif26 ws->ws_row = 25;27 ws->ws_col = 80;28}29 30void 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