* dcrt0.cc (_dll_crt0): Accommodate breaking apart of early_stuff_init.

* exceptions.cc (early_stuff_init): Delete.
(init_console_handler): New function - top half of early_stuff_init.
(init_global_security): New function - bottom half of early_stuff_init.
(sig_handle): Avoid special hExeced test for SIGINT.  Just terminate the
captive process.
(signal_exit): Add debugging output.
* fhandler_tty.cc (fhandler_tty_slave::open): Don't allocate a console if one
already seems to exist.  Properly initialize ctrl-c handling if we do allocate
a console.
* winsup.h (early_stuff_init): Delete declaration.
(init_console_handler): New declaration.
(init_global_security): New declaration.
This commit is contained in:
Christopher Faylor
2003-09-12 06:41:53 +00:00
parent 3a25635489
commit fb3dd71676
5 changed files with 36 additions and 9 deletions

View File

@@ -115,12 +115,16 @@ init_exception_handler (exception_list *el)
#endif
void
early_stuff_init ()
init_console_handler ()
{
(void) SetConsoleCtrlHandler (ctrl_c_handler, FALSE);
if (!SetConsoleCtrlHandler (ctrl_c_handler, TRUE))
system_printf ("SetConsoleCtrlHandler failed, %E");
}
void
init_global_security ()
{
/* Initialize global security attribute stuff */
sec_none.nLength = sec_none_nih.nLength =
@@ -1024,7 +1028,7 @@ sig_handle (int sig)
if (handler == (void *) SIG_DFL)
{
if (sig == SIGCHLD || sig == SIGIO || sig == SIGCONT || sig == SIGWINCH
|| sig == SIGURG || (hExeced && sig == SIGINT))
|| sig == SIGURG)
{
sigproc_printf ("default signal %d ignored", sig);
goto done;
@@ -1107,7 +1111,10 @@ signal_exit (int rc)
user_data->resourcelocks->Init ();
if (hExeced)
TerminateProcess (hExeced, rc);
{
sigproc_printf ("terminating captive process");
TerminateProcess (hExeced, rc);
}
sigproc_printf ("about to call do_exit (%x)", rc);
(void) SetEvent (signal_arrived);