mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Install 'mingw_take_signal' on MinGW.
After installing a signal handler, these are handled * C-c * kill -SIGINT <guile.exe-pid> (the wine process) works these result in a direct terminate (or kill even?) - kill <guile.exe-pid> - wine cmd /c guile -c '(kill <guile-exe.pid> SIGINT)' - wine cmd /c guile -c '(kill <guile-exe.pid> SIGTERM)' * libguile/scmsigs.c (mingw_take_signal)[__MINGW32__]: New function. install_mingw_take_signal)[__MINGW32__]: New function. (scm_init_scmsigs)[__MINGW32__]: Use it.
This commit is contained in:
parent
b55397ea5d
commit
eaa38d6381
1 changed files with 33 additions and 0 deletions
|
@ -42,6 +42,11 @@
|
|||
|
||||
#include <full-write.h>
|
||||
|
||||
#ifdef __MINGW32__
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
#include "async.h"
|
||||
#include "boolean.h"
|
||||
#include "dynwind.h"
|
||||
|
@ -363,6 +368,30 @@ scm_i_signals_post_fork ()
|
|||
scm_i_ensure_signal_delivery_thread ();
|
||||
}
|
||||
|
||||
#ifdef __MINGW32__
|
||||
|
||||
static BOOL
|
||||
mingw_take_signal (DWORD ctrl_signal)
|
||||
{
|
||||
switch (ctrl_signal)
|
||||
{
|
||||
case CTRL_C_EVENT:
|
||||
take_signal (SIGINT);
|
||||
break;
|
||||
case CTRL_BREAK_EVENT:
|
||||
take_signal (SIGTERM);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
install_mingw_take_signal ()
|
||||
{
|
||||
SetConsoleCtrlHandler ((PHANDLER_ROUTINE) mingw_take_signal, TRUE);
|
||||
}
|
||||
#endif /* __MINGW32__ */
|
||||
|
||||
static void
|
||||
install_handler (int signum, SCM thread, SCM handler)
|
||||
{
|
||||
|
@ -848,6 +877,10 @@ scm_init_scmsigs ()
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef __MINGW32__
|
||||
install_mingw_take_signal ();
|
||||
#endif
|
||||
|
||||
scm_c_define ("NSIG", scm_from_long (NSIG));
|
||||
scm_c_define ("SIG_IGN", scm_from_intptr_t ((intptr_t) SIG_IGN));
|
||||
scm_c_define ("SIG_DFL", scm_from_intptr_t ((intptr_t) SIG_DFL));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue