summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2004-09-20 13:37:41 +0000
committerBart Schaefer <barts@users.sourceforge.net>2004-09-20 13:37:41 +0000
commit2e9bbdc833ca50f4d1a4613c1e0f2035fc5f9561 (patch)
treee179ab8e1b1e1ded3a7a9f2202e334c899d062c2
parent037485c4a474395064e2b5b1da281ca052796320 (diff)
downloadzsh-2e9bbdc833ca50f4d1a4613c1e0f2035fc5f9561.tar.gz
zsh-2e9bbdc833ca50f4d1a4613c1e0f2035fc5f9561.zip
20387: revised algorithm for the fix in 20363.
-rw-r--r--ChangeLog10
-rw-r--r--Src/Zle/zle_main.c24
-rw-r--r--Src/init.c2
3 files changed, 19 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 3dd273437..f347b542e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-09-20 Bart Schaefer <schaefer@zsh.org>
+
+ * 20387: Src/init.c, Src/zle_main.c: rather than counting the EOF
+ keystrokes as in 20363, pretend that we received an EOF each time
+ the "use 'logout' to logout" warning is printed, and let the top-
+ level loop keep the count. This way, disabling the warning (by
+ rebinding that key to a "zle -N" widget) also disables counting.
+
2004-09-17 Peter Stephenson <pws@csr.com>
* 20378: Matthias B <msb@winterdrache.de>: Src/params.c,
@@ -34,7 +42,7 @@
from zle -I and improve documentation of status from zle, zle -I,
zle -R.
-2004-09-08 Bart Schaefer <schaefer@zanshin.com>
+2004-09-08 Bart Schaefer <schaefer@zsh.org>
* 20325: Src/exec.c, Test/E01options.ztst: fix crash when using
the "command" builtin (as opposed to the "command" precommand
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index 80c0db6ed..2f78db1d1 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -688,30 +688,23 @@ zlecore(void)
selectlocalmap(NULL);
bindk = getkeycmd();
if (bindk) {
- if (!ll && isfirstln && lastchar == eofchar) {
+ if (!ll && isfirstln && !(zlereadflags & ZLRF_IGNOREEOF) &&
+ lastchar == eofchar) {
/*
* Slight hack: this relies on getkeycmd returning
* a value for the EOF character. However,
* undefined-key is fine. That's necessary because
* otherwise we can't distinguish this case from
* a ^C.
- *
- * The noxitct test is done in the top-level loop
- * if zle is not running. As we trap EOFs at this
- * level inside zle we need to mimic it here.
- * If we break, the top-level loop will actually increment
- * noexitct an extra time; that doesn't cause any
- * problems.
*/
- if (!(zlereadflags & ZLRF_IGNOREEOF) ||
- ++noexitct >= 10)
- {
- eofsent = 1;
- break;
- }
+ eofsent = 1;
+ break;
}
- if (execzlefunc(bindk, zlenoargs))
+ if (execzlefunc(bindk, zlenoargs)) {
handlefeep(zlenoargs);
+ if (eofsent)
+ break;
+ }
handleprefixes();
/* for vi mode, make sure the cursor isn't somewhere illegal */
if (invicmdmode() && cs > findbol() &&
@@ -908,6 +901,7 @@ execzlefunc(Thingy func, char **args)
!ll && isfirstln && (zlereadflags & ZLRF_IGNOREEOF)) {
showmsg((!islogin) ? "zsh: use 'exit' to exit." :
"zsh: use 'logout' to logout.");
+ eofsent = 1;
ret = 1;
} else {
if(!(wflags & ZLE_KEEPSUFFIX))
diff --git a/Src/init.c b/Src/init.c
index d562349d5..ef101069c 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -37,7 +37,7 @@
#include "version.h"
/**/
-mod_export int noexitct = 0;
+int noexitct = 0;
/* buffer for $_ and its length */