summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-06-30 02:52:14 +0000
committerChristopher Faylor <me@cgf.cx>2005-06-30 02:52:14 +0000
commit5b3e1f7358338fa4fe7223fb34df9a06fda7e97c (patch)
tree8627ea790d932d24c96ba83d8cfac61d59560126 /winsup/cygwin/exceptions.cc
parentd573a471af3908faf346e61d51e04944ca33a38e (diff)
downloadcygnal-5b3e1f7358338fa4fe7223fb34df9a06fda7e97c.tar.gz
cygnal-5b3e1f7358338fa4fe7223fb34df9a06fda7e97c.tar.bz2
cygnal-5b3e1f7358338fa4fe7223fb34df9a06fda7e97c.zip
* 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.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 6e44b5b21..0e7a09fdf 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -114,11 +114,24 @@ init_exceptions (exception_list *el)
init_exception_handler (el, handle_exceptions);
}
+BOOL WINAPI
+dummy_ctrl_c_handler (DWORD dwCtrlType)
+{
+ return TRUE;
+}
+
void
-init_console_handler ()
+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");
}