diff options
author | Denys Vlasenko | 2017-01-11 16:17:59 +0100 |
---|---|---|
committer | Denys Vlasenko | 2017-01-11 16:17:59 +0100 |
commit | 01ccdd1d3c5221789f1ac62ced12b7984d910705 (patch) | |
tree | a6eb44f24c1324ddf18bfcec57fd4c3735aa1245 /miscutils | |
parent | 8944c67b1f61ca6a51a485772d5d1e6a8ff3d83d (diff) | |
download | busybox-01ccdd1d3c5221789f1ac62ced12b7984d910705.zip busybox-01ccdd1d3c5221789f1ac62ced12b7984d910705.tar.gz |
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 'miscutils')
-rw-r--r-- | miscutils/chat.c | 1 | ||||
-rw-r--r-- | miscutils/conspy.c | 17 | ||||
-rw-r--r-- | miscutils/microcom.c | 1 | ||||
-rw-r--r-- | miscutils/rx.c | 1 |
4 files changed, 10 insertions, 10 deletions
diff --git a/miscutils/chat.c b/miscutils/chat.c index dc85f82..8df1945 100644 --- a/miscutils/chat.c +++ b/miscutils/chat.c @@ -213,6 +213,7 @@ int chat_main(int argc UNUSED_PARAM, char **argv) , signal_handler); #if ENABLE_FEATURE_CHAT_TTY_HIFI +//TODO: use set_termios_to_raw() tcgetattr(STDIN_FILENO, &tio); tio0 = tio; cfmakeraw(&tio); diff --git a/miscutils/conspy.c b/miscutils/conspy.c index d9d09d4..1f0278b 100644 --- a/miscutils/conspy.c +++ b/miscutils/conspy.c @@ -363,7 +363,6 @@ int conspy_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int conspy_main(int argc UNUSED_PARAM, char **argv) { char tty_name[sizeof(DEV_TTY "NN")]; - struct termios termbuf; unsigned opts; unsigned ttynum; int poll_timeout_ms; @@ -414,16 +413,14 @@ int conspy_main(int argc UNUSED_PARAM, char **argv) bb_signals(BB_FATAL_SIGS, cleanup); - // All characters must be passed through to us unaltered G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY); - tcgetattr(G.kbd_fd, &G.term_orig); - termbuf = G.term_orig; - termbuf.c_iflag &= ~(BRKINT|INLCR|ICRNL|IXON|IXOFF|IUCLC|IXANY|IMAXBEL); - //termbuf.c_oflag &= ~(OPOST); - no, we still want \n -> \r\n - termbuf.c_lflag &= ~(ISIG|ICANON|ECHO); - termbuf.c_cc[VMIN] = 1; - termbuf.c_cc[VTIME] = 0; - tcsetattr(G.kbd_fd, TCSANOW, &termbuf); + + // All characters must be passed through to us unaltered + set_termios_to_raw(G.kbd_fd, &G.term_orig, 0 + | TERMIOS_CLEAR_ISIG // no signals on ^C ^Z etc + | TERMIOS_RAW_INPUT // turn off all input conversions + ); + //Note: termios.c_oflag &= ~(OPOST); - no, we still want \n -> \r\n poll_timeout_ms = 250; while (1) { diff --git a/miscutils/microcom.c b/miscutils/microcom.c index 04605d8..5a4bbef 100644 --- a/miscutils/microcom.c +++ b/miscutils/microcom.c @@ -33,6 +33,7 @@ // set raw tty mode static void xget1(int fd, struct termios *t, struct termios *oldt) { +//TODO: use set_termios_to_raw() tcgetattr(fd, oldt); *t = *oldt; cfmakeraw(t); diff --git a/miscutils/rx.c b/miscutils/rx.c index 660f66a..36fc20a 100644 --- a/miscutils/rx.c +++ b/miscutils/rx.c @@ -263,6 +263,7 @@ int rx_main(int argc UNUSED_PARAM, char **argv) termios_err = tcgetattr(read_fd, &tty); if (termios_err == 0) { +//TODO: use set_termios_to_raw() orig_tty = tty; cfmakeraw(&tty); tcsetattr(read_fd, TCSAFLUSH, &tty); |