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

Re: Signal handling/zcurses

On Apr 21,  8:07pm, Bart Schaefer wrote:
} Interestingly, I'm able to reproduce your result with the script you
} sent -- in spite of the fact that (a) Linux normally has restartable
} system calls (b) the doc says that "Under the ncurses implementation,
} handled signals never interrupt getch" and (c) my zsh is linked with
} -lncursesw so this really should work.

This gets odder.

If you interrupt "zcurses input" with a handled signal, wget_wch() [and
I must assume wgetch()] returns ERR/EINTR.  The loop in my patch then
calls it again and gets ERR/zero, which causes "zcurses input" to
return 1.

Run "zcurses input" again immediately, and it again gets ERR/zero
without ever calling read().

Run it *again* and not only does wget_wch() block waiting for input,
but now it restarts properly after a handled signal!  Give it some
input so it returns success and the script-level loop in the test goes
around and wget_wch() is called a fifth time, and now it has returned
to the state where it gets interrupted by handled signals.

I was trying all this inside of GDB so I suppose that might have side-
effects, but this is damned peculiar.

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