From c109164a9f68935098a4915e7237828cafdef5f7 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Tue, 6 Oct 2026 11:28:06 +0000 Subject: fix non-signal-safe exit, and refactor signal handlers --- include/all.h | 2 +- include/ground.h | 2 +- include/handler.h | 40 ---------------------------------------- include/signal_handler.h | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 42 deletions(-) delete mode 100644 include/handler.h create mode 100644 include/signal_handler.h (limited to 'include') diff --git a/include/all.h b/include/all.h index 742eb00..3ee78ef 100644 --- a/include/all.h +++ b/include/all.h @@ -9,7 +9,7 @@ #include "eval.h" #include "global.h" #include "ground.h" -#include "handler.h" +#include "signal_handler.h" #include "init.h" #include "job.h" #include "path.h" diff --git a/include/ground.h b/include/ground.h index a1985eb..e2e07d8 100644 --- a/include/ground.h +++ b/include/ground.h @@ -8,7 +8,7 @@ #include "global.h" #include "util/io.h" #include "job.h" -#include "handler.h" +#include "signal_handler.h" namespace ov4 { diff --git a/include/handler.h b/include/handler.h deleted file mode 100644 index 71db1b9..0000000 --- a/include/handler.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "all.h" - -namespace ov4 -{ - -typedef void handler_t(int); - -extern sigset_t - block_sig_TTOU, - block_job, - block_io; - -inline std::atomic_int exit_code, exit_required_pid; - -inline constexpr int SIGNAL_EXIT_CODE_BASE = 128; - -void signal_init(); -handler_t *Signal(int signum, handler_t *handler); -void sigchld_handler(int sig); -void sigint_handler(int sig); -void sigtstp_handler(int sig); -void sigquit_handler(int sig); - -int block_all(sigset_t *prev); -int block_handler(sigset_t *prev); - -} diff --git a/include/signal_handler.h b/include/signal_handler.h new file mode 100644 index 0000000..12ab0a5 --- /dev/null +++ b/include/signal_handler.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include + +#include "all.h" + +namespace ov4 +{ + +typedef void handler_t(int); + +inline sigset_t + block_sig_TTOU, + block_job, + block_io; + +inline std::atomic_int exit_code, exit_required_pid; + +inline constexpr int SIGNAL_EXIT_CODE_BASE = 128; + +void signal_init(); +handler_t *Signal(int signum, handler_t *handler); +void sigchld_handler(int sig); +void sigint_handler(int sig); +void sigtstp_handler(int sig); +void sigquit_handler(int sig); + +int block_all(sigset_t *prev); +int block_handler(sigset_t *prev); + +} -- cgit v1.3.1-4-g156e