From 4056f9da2f6828f652e12561d69420468b735547 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 8 Sep 2015 23:16:06 -0700 Subject: linenoise: don't flush tty input when changing mode. * linenoise/linenoise.c (enable_raw_mode, disable_raw_mode): Use TCSANOW instead of TCSAFLUSH to change tty settings without flushing input. TCSAFLUSH could discard type-ahead-buffered keystrokes. --- linenoise/linenoise.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'linenoise/linenoise.c') diff --git a/linenoise/linenoise.c b/linenoise/linenoise.c index bc27e0c5..4477d8fd 100644 --- a/linenoise/linenoise.c +++ b/linenoise/linenoise.c @@ -169,7 +169,7 @@ static int enable_raw_mode(lino_t *ls) { raw.c_cc[VMIN] = 1; raw.c_cc[VTIME] = 0; /* 1 byte, no timer */ /* put terminal in raw mode after flushing */ - if (tcsetattr(ls->ifd,TCSAFLUSH,&raw) < 0) goto fatal; + if (tcsetattr(ls->ifd,TCSANOW,&raw) < 0) goto fatal; ls->rawmode = 1; return 0; @@ -180,7 +180,7 @@ fatal: static void disable_raw_mode(lino_t *ls) { /* Don't even check the return value as it's too late. */ - if (ls->rawmode && tcsetattr(ls->ifd,TCSAFLUSH,&ls->orig_termios) != -1) + if (ls->rawmode && tcsetattr(ls->ifd,TCSANOW,&ls->orig_termios) != -1) ls->rawmode = 0; } -- cgit v1.2.3