* cygerrno.h: Make multi-inclusion safe.

* fhandler_termios.cc (fhandler_termios::tcsetpgrp): Deal with EINTR.
* dcrt0.cc (dll_crt0_0): Accommodate init_console_handler argument change.
* winsup.h: Ditto.
* fhandler_tty.cc (fhandler_tty_slave::open): Ditto.
* exceptions.cc (init_console_handler): Ditto.  Ignore console events if we're
not attached to a terminal.
* fhandler_tty.cc (fhandler_tty_slave::open): Ditto.
* wincap.cc: Implement has_null_console_handler_routine throughout.
* wincap.h: Ditto.
This commit is contained in:
Christopher Faylor
2005-06-30 02:52:14 +00:00
parent d573a471af
commit 5b3e1f7358
9 changed files with 87 additions and 20 deletions

View File

@ -114,11 +114,24 @@ init_exceptions (exception_list *el)
init_exception_handler (el, handle_exceptions);
}
void
init_console_handler ()
BOOL WINAPI
dummy_ctrl_c_handler (DWORD dwCtrlType)
{
return TRUE;
}
void
init_console_handler (BOOL install_handler)
{
BOOL res;
(void) SetConsoleCtrlHandler (ctrl_c_handler, FALSE);
if (!SetConsoleCtrlHandler (ctrl_c_handler, TRUE))
if (install_handler)
res = SetConsoleCtrlHandler (ctrl_c_handler, TRUE);
else if (wincap.has_null_console_handler_routine ())
res = SetConsoleCtrlHandler (NULL, TRUE);
else
res = SetConsoleCtrlHandler (dummy_ctrl_c_handler, TRUE);
if (!res)
system_printf ("SetConsoleCtrlHandler failed, %E");
}