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>
diff --git a/procps/top.c b/procps/top.c
index 491acb5..91bb8a8 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -1089,9 +1089,6 @@
unsigned interval;
char *str_interval, *str_iterations;
unsigned scan_mask = TOP_MASK;
-#if ENABLE_FEATURE_USE_TERMIOS
- struct termios new_settings;
-#endif
INIT_G();
@@ -1141,11 +1138,8 @@
}
#if ENABLE_FEATURE_USE_TERMIOS
else {
- tcgetattr(0, (void *) &initial_settings);
- memcpy(&new_settings, &initial_settings, sizeof(new_settings));
- /* unbuffered input, turn off echo */
- new_settings.c_lflag &= ~(ISIG | ICANON | ECHO | ECHONL);
- tcsetattr_stdin_TCSANOW(&new_settings);
+ /* Turn on unbuffered input; turn off echoing, ^C ^Z etc */
+ set_termios_to_raw(STDIN_FILENO, &initial_settings, TERMIOS_CLEAR_ISIG);
}
bb_signals(BB_FATAL_SIGS, sig_catcher);