From 07e070012bf02294e66fbb89ac8b37d61b790855 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Tue, 30 Apr 2024 13:14:31 +0000 Subject: [PATCH] CrashReporter: unbreak build on FreeBSD (#5786) * CrashReporter: skip Linux field on BSDs after 90a53aed59be In file included from src/debug/CrashReporter.cpp:10: src/debug/signal-safe.hpp:113:17: error: no member named 'sa_restorer' in 'sigaction' act.sa_restorer = NULL; ~~~ ^ * CrashReporter: ensure *argv[] is NULL-terminated after 90a53aed59be execv() may fail with EFAULT otherwise. * hyprpm: add missing header after 335015fe2def hyprpm/src/core/PluginManager.cpp:165:43: error: use of undeclared identifier 'getuid' 165 | const std::string USERNAME = getpwuid(getuid())->pw_name; | ^ hyprpm/src/core/PluginManager.cpp:431:45: error: use of undeclared identifier 'getuid' 431 | const std::string USERNAME = getpwuid(getuid())->pw_name; | ^ hyprpm/src/core/PluginManager.cpp:558:43: error: use of undeclared identifier 'getuid' 558 | const std::string USERNAME = getpwuid(getuid())->pw_name; | ^ --- hyprpm/src/core/PluginManager.cpp | 1 + src/signal-safe.hpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp index 72ec7861..7b454d8d 100644 --- a/hyprpm/src/core/PluginManager.cpp +++ b/hyprpm/src/core/PluginManager.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include diff --git a/src/signal-safe.hpp b/src/signal-safe.hpp index 22c825db..70320ad1 100644 --- a/src/signal-safe.hpp +++ b/src/signal-safe.hpp @@ -109,8 +109,10 @@ class BufFileWriter { struct sigaction act; act.sa_handler = SIG_DFL; sigemptyset(&act.sa_mask); - act.sa_flags = SA_NOCLDWAIT; + act.sa_flags = SA_NOCLDWAIT; +#ifdef SA_RESTORER act.sa_restorer = NULL; +#endif sigaction(SIGCHLD, &act, NULL); } pid_t pid = fork(); @@ -123,7 +125,7 @@ class BufFileWriter { if (pid == 0) { close(pipefd[0]); dup2(pipefd[1], STDOUT_FILENO); - char const* const argv[] = {"/bin/sh", "-c", cmd}; + char const* const argv[] = {"/bin/sh", "-c", cmd, NULL}; execv("/bin/sh", (char* const*)argv); BufFileWriter<64> failmsg(pipefd[1]);