summaryrefslogtreecommitdiffstats
path: root/linenoise
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-09-08 23:16:06 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-09-08 23:16:06 -0700
commit4056f9da2f6828f652e12561d69420468b735547 (patch)
tree544cac8a4929e85292bf023c6520d67bc637a9a4 /linenoise
parent0eeb2089e6fa8781d5016d333d837c87e17f4a19 (diff)
downloadtxr-4056f9da2f6828f652e12561d69420468b735547.tar.gz
txr-4056f9da2f6828f652e12561d69420468b735547.tar.bz2
txr-4056f9da2f6828f652e12561d69420468b735547.zip
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.
Diffstat (limited to 'linenoise')
-rw-r--r--linenoise/linenoise.c4
1 files changed, 2 insertions, 2 deletions
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;
}