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-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 '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)
213 , signal_handler); 213 , signal_handler);
214 214
215#if ENABLE_FEATURE_CHAT_TTY_HIFI 215#if ENABLE_FEATURE_CHAT_TTY_HIFI
216//TODO: use set_termios_to_raw()
216 tcgetattr(STDIN_FILENO, &tio); 217 tcgetattr(STDIN_FILENO, &tio);
217 tio0 = tio; 218 tio0 = tio;
218 cfmakeraw(&tio); 219 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;
363int conspy_main(int argc UNUSED_PARAM, char **argv) 363int conspy_main(int argc UNUSED_PARAM, char **argv)
364{ 364{
365 char tty_name[sizeof(DEV_TTY "NN")]; 365 char tty_name[sizeof(DEV_TTY "NN")];
366 struct termios termbuf;
367 unsigned opts; 366 unsigned opts;
368 unsigned ttynum; 367 unsigned ttynum;
369 int poll_timeout_ms; 368 int poll_timeout_ms;
@@ -414,16 +413,14 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
414 413
415 bb_signals(BB_FATAL_SIGS, cleanup); 414 bb_signals(BB_FATAL_SIGS, cleanup);
416 415
417 // All characters must be passed through to us unaltered
418 G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY); 416 G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY);
419 tcgetattr(G.kbd_fd, &G.term_orig); 417
420 termbuf = G.term_orig; 418 // All characters must be passed through to us unaltered
421 termbuf.c_iflag &= ~(BRKINT|INLCR|ICRNL|IXON|IXOFF|IUCLC|IXANY|IMAXBEL); 419 set_termios_to_raw(G.kbd_fd, &G.term_orig, 0
422 //termbuf.c_oflag &= ~(OPOST); - no, we still want \n -> \r\n 420 | TERMIOS_CLEAR_ISIG // no signals on ^C ^Z etc
423 termbuf.c_lflag &= ~(ISIG|ICANON|ECHO); 421 | TERMIOS_RAW_INPUT // turn off all input conversions
424 termbuf.c_cc[VMIN] = 1; 422 );
425 termbuf.c_cc[VTIME] = 0; 423 //Note: termios.c_oflag &= ~(OPOST); - no, we still want \n -> \r\n
426 tcsetattr(G.kbd_fd, TCSANOW, &termbuf);
427 424
428 poll_timeout_ms = 250; 425 poll_timeout_ms = 250;
429 while (1) { 426 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 @@
33// set raw tty mode 33// set raw tty mode
34static void xget1(int fd, struct termios *t, struct termios *oldt) 34static void xget1(int fd, struct termios *t, struct termios *oldt)
35{ 35{
36//TODO: use set_termios_to_raw()
36 tcgetattr(fd, oldt); 37 tcgetattr(fd, oldt);
37 *t = *oldt; 38 *t = *oldt;
38 cfmakeraw(t); 39 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)
263 263
264 termios_err = tcgetattr(read_fd, &tty); 264 termios_err = tcgetattr(read_fd, &tty);
265 if (termios_err == 0) { 265 if (termios_err == 0) {
266//TODO: use set_termios_to_raw()
266 orig_tty = tty; 267 orig_tty = tty;
267 cfmakeraw(&tty); 268 cfmakeraw(&tty);
268 tcsetattr(read_fd, TCSAFLUSH, &tty); 269 tcsetattr(read_fd, TCSAFLUSH, &tty);