summaryrefslogtreecommitdiff
path: root/src/signal.c
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2025-09-10 19:37:28 +0100
committerSam Light <sam@lightscale.co.uk>2025-09-10 19:37:28 +0100
commitd9b456d738e5013d48f41f5e6315ef7c22d6acf0 (patch)
tree2e3722f5697cbf883c4b16edc87726b9e510bce1 /src/signal.c
Initial commit
Diffstat (limited to 'src/signal.c')
-rw-r--r--src/signal.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/signal.c b/src/signal.c
new file mode 100644
index 0000000..e993ae3
--- /dev/null
+++ b/src/signal.c
@@ -0,0 +1,34 @@
+#include "signal.h"
+
+#include <string.h>
+
+sig_atomic_t signal_running;
+
+static void
+handle_signal_shutdown(int sig)
+{
+ signal_running = 0;
+}
+
+int
+signal_setup_actions()
+{
+ int rc;
+ struct sigaction action;
+
+ signal_running = 1;
+
+ memset(&action, 0, sizeof(action));
+ action.sa_handler = handle_signal_shutdown;
+ rc = sigemptyset(&action.sa_mask);
+ if(rc < 0) return rc;
+ rc = sigaction(SIGINT, &action, 0);
+ if(rc < 0) return rc;
+
+ rc = sigemptyset(&action.sa_mask);
+ if(rc < 0) return rc;
+ rc = sigaction(SIGTERM, &action, 0);
+ if(rc < 0) return rc;
+
+ return rc;
+}