summaryrefslogtreecommitdiff
path: root/src/debug/crash/SignalSafe.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-12-03 16:01:45 +0000
committerGitHub <noreply@github.com>2025-12-03 16:01:45 +0000
commit93e5e92b0ae7809ee0f64d94d51e210c476ee823 (patch)
tree096ff92094b899ee6ed138951caf9e735a148378 /src/debug/crash/SignalSafe.cpp
parent3cf0280b11f370c11e6839275e547779a33f4a19 (diff)
crashReporter: cleanup code (#12534)
various code cleanups, reorders, move off of global NS
Diffstat (limited to 'src/debug/crash/SignalSafe.cpp')
-rw-r--r--src/debug/crash/SignalSafe.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/debug/crash/SignalSafe.cpp b/src/debug/crash/SignalSafe.cpp
new file mode 100644
index 00000000..22717f1b
--- /dev/null
+++ b/src/debug/crash/SignalSafe.cpp
@@ -0,0 +1,34 @@
+#include "SignalSafe.hpp"
+
+#ifndef __GLIBC__
+#include <signal.h>
+#endif
+#include <fcntl.h>
+#include <unistd.h>
+#include <cstring>
+
+using namespace SignalSafe;
+
+// NOLINTNEXTLINE
+extern "C" char** environ;
+
+//
+char const* SignalSafe::getenv(char const* name) {
+ const size_t len = strlen(name);
+ for (char** var = environ; *var != nullptr; var++) {
+ if (strncmp(*var, name, len) == 0 && (*var)[len] == '=') {
+ return (*var) + len + 1;
+ }
+ }
+ return nullptr;
+}
+
+char const* SignalSafe::strsignal(int sig) {
+#ifdef __GLIBC__
+ return sigabbrev_np(sig);
+#elif defined(__DragonFly__) || defined(__FreeBSD__)
+ return sys_signame[sig];
+#else
+ return "unknown";
+#endif
+}