libbb: consolidate the code to set termios unbuffered mode
function old new delta set_termios_to_raw - 116 +116 count_lines 72 74 +2 powertop_main 1458 1430 -28 top_main 943 914 -29 more_main 759 714 -45 fsck_minix_main 2969 2921 -48 conspy_main 1197 1135 -62 rawmode 99 36 -63 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/6 up/down: 118/-275) Total: -157 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		@@ -1226,7 +1226,6 @@ void check2(void);
 | 
			
		||||
int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 | 
			
		||||
int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	struct termios tmp;
 | 
			
		||||
	int retcode = 0;
 | 
			
		||||
 | 
			
		||||
	xfunc_error_retval = 8;
 | 
			
		||||
@@ -1271,10 +1270,7 @@ int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
	read_tables();
 | 
			
		||||
 | 
			
		||||
	if (OPT_manual) {
 | 
			
		||||
		tcgetattr(0, &sv_termios);
 | 
			
		||||
		tmp = sv_termios;
 | 
			
		||||
		tmp.c_lflag &= ~(ICANON | ECHO);
 | 
			
		||||
		tcsetattr_stdin_TCSANOW(&tmp);
 | 
			
		||||
		set_termios_to_raw(STDIN_FILENO, &sv_termios, 0);
 | 
			
		||||
		termios_set = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,6 @@ struct globals {
 | 
			
		||||
	unsigned terminal_width;
 | 
			
		||||
	unsigned terminal_height;
 | 
			
		||||
	struct termios initial_settings;
 | 
			
		||||
	struct termios new_settings;
 | 
			
		||||
} FIX_ALIASING;
 | 
			
		||||
#define G (*(struct globals*)bb_common_bufsiz1)
 | 
			
		||||
#define INIT_G() do { setup_common_bufsiz(); } while (0)
 | 
			
		||||
@@ -101,12 +100,9 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
		return bb_cat(argv);
 | 
			
		||||
 | 
			
		||||
	G.tty_fileno = fileno(tty);
 | 
			
		||||
	tcgetattr(G.tty_fileno, &G.initial_settings);
 | 
			
		||||
	G.new_settings = G.initial_settings;
 | 
			
		||||
	G.new_settings.c_lflag &= ~(ICANON | ECHO);
 | 
			
		||||
	G.new_settings.c_cc[VMIN] = 1;
 | 
			
		||||
	G.new_settings.c_cc[VTIME] = 0;
 | 
			
		||||
	tcsetattr_tty_TCSANOW(&G.new_settings);
 | 
			
		||||
 | 
			
		||||
	/* Turn on unbuffered input; turn off echoing */
 | 
			
		||||
	set_termios_to_raw(G.tty_fileno, &G.initial_settings, 0);
 | 
			
		||||
	bb_signals(BB_FATAL_SIGS, gotsig);
 | 
			
		||||
 | 
			
		||||
	do {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user