diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-01-11 16:17:59 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-01-11 16:17:59 +0100 |
commit | 01ccdd1d3c5221789f1ac62ced12b7984d910705 (patch) | |
tree | a6eb44f24c1324ddf18bfcec57fd4c3735aa1245 /util-linux | |
parent | 8944c67b1f61ca6a51a485772d5d1e6a8ff3d83d (diff) | |
download | busybox-w32-01ccdd1d3c5221789f1ac62ced12b7984d910705.tar.gz busybox-w32-01ccdd1d3c5221789f1ac62ced12b7984d910705.tar.bz2 busybox-w32-01ccdd1d3c5221789f1ac62ced12b7984d910705.zip |
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>
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/fsck_minix.c | 6 | ||||
-rw-r--r-- | util-linux/more.c | 10 |
2 files changed, 4 insertions, 12 deletions
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index 0eaac17c0..2ab7530ea 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c | |||
@@ -1226,7 +1226,6 @@ void check2(void); | |||
1226 | int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 1226 | int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
1227 | int fsck_minix_main(int argc UNUSED_PARAM, char **argv) | 1227 | int fsck_minix_main(int argc UNUSED_PARAM, char **argv) |
1228 | { | 1228 | { |
1229 | struct termios tmp; | ||
1230 | int retcode = 0; | 1229 | int retcode = 0; |
1231 | 1230 | ||
1232 | xfunc_error_retval = 8; | 1231 | xfunc_error_retval = 8; |
@@ -1271,10 +1270,7 @@ int fsck_minix_main(int argc UNUSED_PARAM, char **argv) | |||
1271 | read_tables(); | 1270 | read_tables(); |
1272 | 1271 | ||
1273 | if (OPT_manual) { | 1272 | if (OPT_manual) { |
1274 | tcgetattr(0, &sv_termios); | 1273 | set_termios_to_raw(STDIN_FILENO, &sv_termios, 0); |
1275 | tmp = sv_termios; | ||
1276 | tmp.c_lflag &= ~(ICANON | ECHO); | ||
1277 | tcsetattr_stdin_TCSANOW(&tmp); | ||
1278 | termios_set = 1; | 1274 | termios_set = 1; |
1279 | } | 1275 | } |
1280 | 1276 | ||
diff --git a/util-linux/more.c b/util-linux/more.c index 7fa60bdba..debad81bd 100644 --- a/util-linux/more.c +++ b/util-linux/more.c | |||
@@ -43,7 +43,6 @@ struct globals { | |||
43 | unsigned terminal_width; | 43 | unsigned terminal_width; |
44 | unsigned terminal_height; | 44 | unsigned terminal_height; |
45 | struct termios initial_settings; | 45 | struct termios initial_settings; |
46 | struct termios new_settings; | ||
47 | } FIX_ALIASING; | 46 | } FIX_ALIASING; |
48 | #define G (*(struct globals*)bb_common_bufsiz1) | 47 | #define G (*(struct globals*)bb_common_bufsiz1) |
49 | #define INIT_G() do { setup_common_bufsiz(); } while (0) | 48 | #define INIT_G() do { setup_common_bufsiz(); } while (0) |
@@ -101,12 +100,9 @@ int more_main(int argc UNUSED_PARAM, char **argv) | |||
101 | return bb_cat(argv); | 100 | return bb_cat(argv); |
102 | 101 | ||
103 | G.tty_fileno = fileno(tty); | 102 | G.tty_fileno = fileno(tty); |
104 | tcgetattr(G.tty_fileno, &G.initial_settings); | 103 | |
105 | G.new_settings = G.initial_settings; | 104 | /* Turn on unbuffered input; turn off echoing */ |
106 | G.new_settings.c_lflag &= ~(ICANON | ECHO); | 105 | set_termios_to_raw(G.tty_fileno, &G.initial_settings, 0); |
107 | G.new_settings.c_cc[VMIN] = 1; | ||
108 | G.new_settings.c_cc[VTIME] = 0; | ||
109 | tcsetattr_tty_TCSANOW(&G.new_settings); | ||
110 | bb_signals(BB_FATAL_SIGS, gotsig); | 106 | bb_signals(BB_FATAL_SIGS, gotsig); |
111 | 107 | ||
112 | do { | 108 | do { |