summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-12-04 17:06:56 +0000
committerRichard M. Stallman <rms@gnu.org>1994-12-04 17:06:56 +0000
commite6d134dcabcbb47a2878a4c3f51ed1c24ae95dec (patch)
tree8636d863957cd38e2d441a30da9daba164c7e9d3 /src
parent3b5f76356aa7258ebdee6824573aa2f5692798a9 (diff)
downloademacs-e6d134dcabcbb47a2878a4c3f51ed1c24ae95dec.tar.gz
(child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
(init_sys_modes) [SET_LINE_DISCIPLINE]: Set specified line discipline. (reset_sys_modes) [SET_LINE_DISCIPLINE]: Restore old line discipline.
Diffstat (limited to 'src')
-rw-r--r--src/sysdep.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 1bd221c1ba8..7c8a072eb90 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -524,8 +524,8 @@ child_setup_tty (out)
s.main.c_lflag |= ICANON; /* Enable erase/kill and eof processing */
s.main.c_cc[VEOF] = 04; /* insure that EOF is Control-D */
- s.main.c_cc[VERASE] = 0377; /* disable erase processing */
- s.main.c_cc[VKILL] = 0377; /* disable kill processing */
+ s.main.c_cc[VERASE] = CDISABLE; /* disable erase processing */
+ s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
#ifdef HPUX
s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */
@@ -1290,9 +1290,14 @@ init_sys_modes ()
tty.main.c_cc[VSTOP] = CDISABLE;
#endif /* VSTOP */
#endif /* mips or HAVE_TCATTR */
+#ifdef SET_LINE_DISCIPLINE
+ /* Need to explicitely request TERMIODISC line discipline or
+ Ultrix's termios does not work correctly. */
+ tty.main.c_line = SET_LINE_DISCIPLINE;
+#endif
#ifdef AIX
#ifndef IBMR2AIX
- /* AIX enhanced edit loses NULs, so disable it */
+ /* AIX enhanced edit loses NULs, so disable it. */
tty.main.c_line = 0;
tty.main.c_iflag &= ~ASCEDIT;
#else
@@ -1643,6 +1648,13 @@ reset_sys_modes ()
dos_ttcooked ();
#endif
+#ifdef SET_LINE_DISCIPLINE
+ /* Ultrix's termios *ignores* any line discipline except TERMIODISC.
+ A different old line discipline is therefore not restored, yet.
+ Restore the old line discipline by hand. */
+ ioctl (0, TIOCSETD, &old_tty.main.c_line);
+#endif
+
#ifdef AIXHFT
hft_reset ();
#endif