Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Ignoreeof warning message regression

On Tue, 2019-02-12 at 09:47 -0800, David Bohman wrote:
> This is an old regression, which apparently occurred between release 5.3.1
> and 5.4 of zsh.
> If you have the ignoreeof option set, and type a CTL-D to the shell, you
> are supposed to get a warning message:
> zsh: use 'exit' to exit.
> Instead, a blank line is emitted. This was introduced by
> commit 34656ec2f00d6669cef56afdbffdd90639d7b465, specifically the change to
> Src/Zle/zle_main.c.
> The problem occurs both on Ubuntu 18.04.1 running zsh 5.4.2 and macOS
> 10.12.6 running 5.4 forwards to 5.7.1. Stock macOS 10.12.6 contains zsh 5.2
> and does not manifest the bug.
> The problem disappears when the change to Src/Zle/zle_main.c is backed out.

Yes.  In this case we do need to remember the state of the command line
when we return to ZLE after passing nothing-very-much back to the main
shell --- the ^D was ignored but we told the main shell about it anyway,
then came back into ZLE expecting to pick up exactly where we left off,
meaning we shouldn't clear the message we printed and that the main
shell we briefly returned to knows nothing about...  It's not at all
clear that's sensible behaviour but refactoring the states of ZLE is
probably beyond anyone's capabilities at this point.

The original fix is here (zsh-workers/40305):

I'm not sure the change to zle_main.c there is the key one for the fix
as a whole --- backing it off doesn't appear to make the specific
problem (not the originally reported one in that thread) being addressed
there fail, and it may be the associated change to clearflag in
zle_refresh.c was the key one.

However, as there were various related issues associated with
asynchrohonous behaviour, it's hard to be sure.

In the absence of a test suite for this sort of not only interactive but
asynchronous behaviour (zpty is way out of its depth here), I'm tempted
to make that change and see what happens.


Messages sorted by: Reverse Date, Date, Thread, Author