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:
Denys Vlasenko
2017-01-11 16:17:59 +01:00
parent 8944c67b1f
commit 01ccdd1d3c
15 changed files with 71 additions and 55 deletions

View File

@@ -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;
}

View File

@@ -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 {