[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r100961: Enable ICANON (Bug#6771). An
From: |
Jan D. |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r100961: Enable ICANON (Bug#6771). Any long line problem must be solved differently. |
Date: |
Mon, 02 Aug 2010 09:03:12 +0200 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100961
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Mon 2010-08-02 09:03:12 +0200
message:
Enable ICANON (Bug#6771). Any long line problem must be solved differently.
There is AFAIK no bug report or test case for the long line problem.
* sysdep.c (child_setup_tty): Enable ICANON in lflags and set VEOF
to Control-D (Bug#6771).
modified:
src/ChangeLog
src/sysdep.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-08-02 06:42:03 +0000
+++ b/src/ChangeLog 2010-08-02 07:03:12 +0000
@@ -1,3 +1,8 @@
+2010-08-02 Jan Djärv <address@hidden>
+
+ * sysdep.c (child_setup_tty): Enable ICANON in lflags and set VEOF
+ to Control-D (Bug#6771).
+
2010-08-02 Juanma Barranquero <address@hidden>
* editfns.c (Fregion_beginning, Fregion_end): Doc fixes (bug#6493).
=== modified file 'src/sysdep.c'
--- a/src/sysdep.c 2010-07-29 20:01:08 +0000
+++ b/src/sysdep.c 2010-08-02 07:03:12 +0000
@@ -511,7 +511,16 @@
process.c:send_process, and instead we disable ICANON by default,
so if a subsprocess sets up ICANON, it's his problem (or the Elisp
package that talks to it) to deal with lines that are too long. */
- s.main.c_lflag &= ~ICANON; /* Disable line editing and eof processing */
+ /* There is no more "send eof to flush" going on (which is wrong and
+ unportable in itself), and disabling ICANON breaks a lot of stuff
+ and shows literal ^D in many cases. The correct way to handle too
+ much output is to buffer what could not be written and then write it
+ again when select returns ok for writing. This has it own set of
+ 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_cc[VEOF] = 'D'&037; /* Control-D */
s.main.c_cc[VMIN] = 1;
s.main.c_cc[VTIME] = 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r100961: Enable ICANON (Bug#6771). Any long line problem must be solved differently.,
Jan D. <=