1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-11 16:08:13 +00:00

* src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.

This commit is contained in:
Stefan Monnier 2010-08-04 20:10:07 +02:00
parent e0d62a9b7b
commit aaa0a19a94
2 changed files with 20 additions and 13 deletions

View File

@ -1,3 +1,7 @@
2010-08-04 Stefan Monnier <monnier@iro.umontreal.ca>
* sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
2010-08-03 Johan Bockgård <bojohan@gnu.org> 2010-08-03 Johan Bockgård <bojohan@gnu.org>
* data.c (Flocal_variable_p): Handle variable aliases correctly. * data.c (Flocal_variable_p): Handle variable aliases correctly.

View File

@ -503,26 +503,29 @@ child_setup_tty (int out)
s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */ s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */
#endif /* AIX */ #endif /* AIX */
/* We used to enable ICANON (and set VEOF to 04), but this leads to /* We originally enabled ICANON (and set VEOF to 04), and then had
problems where process.c wants to send EOFs every once in a while proces.c send additional EOF chars to flush the output when faced
to force the output, which leads to weird effects when the with long lines, but this leads to weird effects when the
subprocess has disabled ICANON and ends up seeing those spurious subprocess has disabled ICANON and ends up seeing those spurious
extra EOFs. So we don't send EOFs any more in extra EOFs. So we don't send EOFs any more in
process.c:send_process, and instead we disable ICANON by default, process.c:send_process. First we tried to disable ICANON by
so if a subsprocess sets up ICANON, it's his problem (or the Elisp default, so if a subsprocess sets up ICANON, it's his problem (or
package that talks to it) to deal with lines that are too long. */ the Elisp package that talks to it) to deal with lines that are
/* There is no more "send eof to flush" going on (which is wrong and too long. But this disables some features, such as the ability
unportable in itself), and disabling ICANON breaks a lot of stuff to send EOF signals. So we re-enabled ICANON but there is no
and shows literal ^D in many cases. The correct way to handle too more "send eof to flush" going on (which is wrong and unportable
much output is to buffer what could not be written and then write it in itself). The correct way to handle too much output is to
again when select returns ok for writing. This has it own set of buffer what could not be written and then write it again when
problems. Write is now asynchronous, is that a problem? select returns ok for writing. This has it own set of
How much do we buffer, and what do we do when that limit is reached? */ problems. Write is now asynchronous, is that a problem? How much
do we buffer, and what do we do when that limit is reached? */
s.main.c_lflag |= ICANON; /* Enable line editing and eof processing */ s.main.c_lflag |= ICANON; /* Enable line editing and eof processing */
s.main.c_cc[VEOF] = 'D'&037; /* Control-D */ s.main.c_cc[VEOF] = 'D'&037; /* Control-D */
#ifdef 0 /* These settins only apply to non-ICANON mode. */
s.main.c_cc[VMIN] = 1; s.main.c_cc[VMIN] = 1;
s.main.c_cc[VTIME] = 0; s.main.c_cc[VTIME] = 0;
#endif
#else /* not HAVE_TERMIO */ #else /* not HAVE_TERMIO */