aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-09-15 02:07:05 +0000
committer_ov4 <ov4@ov4.org>2026-09-15 02:07:05 +0000
commit3980d30d28951edcc34d16758d549bc4d4ab193e (patch)
treee61209c44cf875e59598782c41c9d35083124bc2 /include
parentaf69219a7229ccf524987123b2ecd70ff0456c9f (diff)
add safe_logger, and prepare for logical operators
Diffstat (limited to 'include')
-rw-r--r--include/handler.h3
-rw-r--r--include/util/io.h16
2 files changed, 19 insertions, 0 deletions
diff --git a/include/handler.h b/include/handler.h
index 100c548..8878eec 100644
--- a/include/handler.h
+++ b/include/handler.h
@@ -9,6 +9,7 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
+#include <atomic>
#include "all.h"
@@ -22,6 +23,8 @@ extern sigset_t
block_job,
block_io;
+inline std::atomic_int exit_code, exit_required_pid;
+
void signal_init();
handler_t *Signal(int signum, handler_t *handler);
void sigchld_handler(int sig);
diff --git a/include/util/io.h b/include/util/io.h
index e995af5..5c0a129 100644
--- a/include/util/io.h
+++ b/include/util/io.h
@@ -99,6 +99,22 @@ void safe_output(T x, T_arg ...arg)
errno = errno_old;
}
+// async-signal-safe output function
+// example:
+// safe_output("string", 123, variable);
+template <typename ...T_arg>
+void safe_logger(T_arg ...arg)
+{
+ int errno_old = errno;
+
+ if (GLOBAL_DEBUG && verbose)
+ {
+ safe_output(arg...);
+ }
+
+ errno = errno_old;
+}
+
void unix_error(const char *msg);
void app_error(const char *msg);