aboutsummaryrefslogtreecommitdiff
path: root/util-linux
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-01-11 16:17:59 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2017-01-11 16:17:59 +0100
commit01ccdd1d3c5221789f1ac62ced12b7984d910705 (patch)
treea6eb44f24c1324ddf18bfcec57fd4c3735aa1245 /util-linux
parent8944c67b1f61ca6a51a485772d5d1e6a8ff3d83d (diff)
downloadbusybox-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.c6
-rw-r--r--util-linux/more.c10
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);
1226int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 1226int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
1227int fsck_minix_main(int argc UNUSED_PARAM, char **argv) 1227int 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 {