mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
a0d624cd61
The GNU Hurd has a bug that can make select() report an exception in a pipe even though none has actually occurred. The typical result is that ELinks closes the pipe through which it internally passes all input events, such as keypresses. It then no longer reacts to what the user is trying to do. Work around the Hurd bug by making set_handlers() check whether the file descriptor refers to a pipe, and if so, pretend the caller did not provide any handler for exceptions. This is a minimal change that avoids slowing down the select() loop itself and does not require careful analysis of the callers to statically find out which file descriptors might refer to pipes. The extra stat() calls may slow ELinks down somewhat, but anyway it'll work better than it did without the patch, and if the Hurd bug is ever fixed, we can remove the workaround at that time. |
||
---|---|---|
.. | ||
event.c | ||
event.h | ||
interlink.c | ||
interlink.h | ||
main.c | ||
main.h | ||
Makefile | ||
module.c | ||
module.h | ||
object.h | ||
select.c | ||
select.h | ||
timer.c | ||
timer.h | ||
version.c | ||
version.h |