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>
This commit is contained in:
@@ -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);
|
||||
|
@@ -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) {
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user