From 2e9bbdc833ca50f4d1a4613c1e0f2035fc5f9561 Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Mon, 20 Sep 2004 13:37:41 +0000 Subject: 20387: revised algorithm for the fix in 20363. --- Src/Zle/zle_main.c | 24 +++++++++--------------- Src/init.c | 2 +- 2 files changed, 10 insertions(+), 16 deletions(-) (limited to 'Src') 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 */ -- cgit 1.4.1