aboutsummaryrefslogtreecommitdiff
path: root/miscutils
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 /miscutils
parent8944c67b1f61ca6a51a485772d5d1e6a8ff3d83d (diff)
downloadbusybox-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.c1
-rw-r--r--miscutils/conspy.c17
-rw-r--r--miscutils/microcom.c1
-rw-r--r--miscutils/rx.c1
4 files changed, 10 insertions, 10 deletions
diff --git a/miscutils/chat.c b/miscutils/chat.c
index dc85f82fb..8df194534 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 d9d09d482..1f0278b47 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 04605d883..5a4bbefa9 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 660f66a89..36fc20a72 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);