41 lines
		
	
	
		
			728 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			728 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // 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);
 | |
| }
 |