diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-12-03 16:01:45 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-03 16:01:45 +0000 |
| commit | 93e5e92b0ae7809ee0f64d94d51e210c476ee823 (patch) | |
| tree | 096ff92094b899ee6ed138951caf9e735a148378 /src/debug/crash/SignalSafe.cpp | |
| parent | 3cf0280b11f370c11e6839275e547779a33f4a19 (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.cpp | 34 |
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 +} |
