]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/interrupt.c
Use correct u64 printf fmt
[dragonblocks_alpha.git] / src / interrupt.c
index 2fb1d0181cc309690a886744778e90222e492af4..2b9052c0b0b0310cda97b185049508c9dbbc564a 100644 (file)
@@ -3,25 +3,49 @@
 #include <string.h>
 #include "interrupt.h"
 
-Flag *interrupt;
-static struct sigaction sa = {0};
+Flag interrupt;
+
+#ifdef _WIN32
+
+// just the signals we need, for Win32
+static const char *strsignal(int sig)
+{
+       switch (sig) {
+               case SIGINT:
+                       return "Interrupted";
+
+               case SIGTERM:
+                       return "Terminated";
+
+               default:
+                       return "Unknown signal";
+       }
+}
+
+#endif // _WIN32
 
 static void interrupt_handler(int sig)
 {
        fprintf(stderr, "%s\n", strsignal(sig));
-       flag_set(interrupt);
+       flag_set(&interrupt);
 }
 
 void interrupt_init()
 {
-       interrupt = flag_create();
+       flag_ini(&interrupt);
 
+#ifdef _WIN32
+       signal(SIGINT, interrupt_handler);
+       signal(SIGTERM, interrupt_handler);
+#else // _WIN32
+       struct sigaction sa = {0};
        sa.sa_handler = &interrupt_handler;
        sigaction(SIGINT, &sa, NULL);
        sigaction(SIGTERM, &sa, NULL);
+#endif // _WIN32
 }
 
 void interrupt_deinit()
 {
-       flag_delete(interrupt);
+       flag_dst(&interrupt);
 }