summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_raw.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/contrib/ncurses/ncurses/tinfo/lib_raw.c b/contrib/ncurses/ncurses/tinfo/lib_raw.c
index 61b422c..f4d9909 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_raw.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_raw.c
@@ -31,6 +31,7 @@
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
+/* $FreeBSD$ */
/*
* raw.c
@@ -74,6 +75,10 @@ MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $")
#define AFTER(s)
#endif /* TRACE */
+#ifdef TERMIOS
+static tcflag_t iexten = 0;
+#endif
+
int raw(void)
{
T((T_CALLED("raw()")));
@@ -88,7 +93,9 @@ int raw(void)
#ifdef TERMIOS
BEFORE("raw");
- cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG);
+ if (iexten == 0)
+ iexten = cur_term->Nttyb.c_lflag & IEXTEN;
+ cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG|IEXTEN);
cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
cur_term->Nttyb.c_cc[VMIN] = 1;
cur_term->Nttyb.c_cc[VTIME] = 0;
@@ -157,7 +164,7 @@ int noraw(void)
#ifdef TERMIOS
BEFORE("noraw");
- cur_term->Nttyb.c_lflag |= ISIG|ICANON;
+ cur_term->Nttyb.c_lflag |= ISIG|ICANON|iexten;
cur_term->Nttyb.c_iflag |= COOKED_INPUT;
AFTER("noraw");
#else
OpenPOWER on IntegriCloud