[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 10/16: Install 'mingw_take_signal' on MinGW.
From: |
Jan Nieuwenhuizen |
Subject: |
[Guile-commits] 10/16: Install 'mingw_take_signal' on MinGW. |
Date: |
Mon, 16 May 2022 14:23:38 -0400 (EDT) |
janneke pushed a commit to branch wip-mingw
in repository guile.
commit da9efea88f3f71c4c3f0ec88be52336a4d781b15
Author: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
AuthorDate: Fri Oct 30 13:32:00 2020 +0100
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.
---
libguile/scmsigs.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c
index 27d7e38f7..d5ebab56b 100644
--- a/libguile/scmsigs.c
+++ b/libguile/scmsigs.c
@@ -41,6 +41,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"
@@ -264,6 +269,30 @@ scm_i_ensure_signal_delivery_thread ()
#endif /* !SCM_USE_PTHREAD_THREADS */
+#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)
{
@@ -740,6 +769,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));
- [Guile-commits] branch wip-mingw created (now 64d016580), Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 03/16: mingw: canonicalize-path: Also canonicalize drive letter and '/'., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 04/16: Add 'set-port-binary/text-mode!' procedure for MinGW., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 06/16: Clear errno before CreateProcess for MinGW., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 10/16: Install 'mingw_take_signal' on MinGW.,
Jan Nieuwenhuizen <=
- [Guile-commits] 01/16: gnulib: Import the gethostname module., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 02/16: Link fix for MinGW., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 05/16: Support for x86_64-w64-mingw32., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 14/16: REMOVEME mingw: Hardcode compile-time-file-name-convention to 'mingw., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 16/16: DEBUG guile.cmd, wine-guile.sh: Some Wine help., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 08/16: squash! Fix 'absolute-file-name?' and others for cross-build to MinGW., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 12/16: DRAFT Add partial `scm_fcntl' support for MinGW., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 13/16: guix: Add guile-patched, guile-mingw., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 15/16: REMOVEME guix: guile-mingw: Hardcode file-name-convention., Jan Nieuwenhuizen, 2022/05/16
- [Guile-commits] 09/16: Make `read-bytes' suspendable for socket reads on MinGW., Jan Nieuwenhuizen, 2022/05/16