diff options
author | Jan Beich <[email protected]> | 2023-03-31 19:39:04 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2023-03-31 20:39:04 +0100 |
commit | 16bc5997bb764a69433def368169a9f41a077dc6 (patch) | |
tree | b460009ffbf5d8781513e76fae82ba71a13289c0 | |
parent | 7680cd549c73c0bf57606d31fd6e5fd027458b72 (diff) | |
download | Hyprland-16bc5997bb764a69433def368169a9f41a077dc6.tar.gz Hyprland-16bc5997bb764a69433def368169a9f41a077dc6.zip |
Misc FreeBSD fixes (#1926)
* helpers: drop incomplete GNU/kFreeBSD bits
Debian with FreeBSD kernel lacks Wayland-related packages and is not
officially supported since Jessie.
* KeybindManager: check VT ioctl availability instead of hardcoding
* plugins: add missing header for libc++ after 430778293e4c
src/plugins/PluginAPI.cpp:299:33: error: implicit instantiation of undefined template 'std::basic_istringstream<char>'
std::istringstream inStream(SYMBOLS);
^
/usr/include/c++/v1/iosfwd:140:32: note: template is declared here
class _LIBCPP_TEMPLATE_VIS basic_istringstream;
^
* plugins: prefer llvm-nm with Clang after 430778293e4c
nm: invalid option -- j
-rw-r--r-- | src/helpers/MiscFunctions.cpp | 6 | ||||
-rw-r--r-- | src/managers/KeybindManager.cpp | 4 | ||||
-rw-r--r-- | src/plugins/PluginAPI.cpp | 7 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp index de385e9b..ecbfa308 100644 --- a/src/helpers/MiscFunctions.cpp +++ b/src/helpers/MiscFunctions.cpp @@ -6,11 +6,11 @@ #include <iomanip> #include <sstream> -#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #include <sys/sysctl.h> #if defined(__DragonFly__) #include <sys/kinfo.h> // struct kinfo_proc -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#elif defined(__FreeBSD__) #include <sys/user.h> // struct kinfo_proc #endif @@ -23,7 +23,7 @@ #endif #if defined(__DragonFly__) #define KP_PPID(kp) kp.kp_ppid -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#elif defined(__FreeBSD__) #define KP_PPID(kp) kp.ki_ppid #else #define KP_PPID(kp) kp.p_ppid diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index ce3bf563..8730fa45 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -469,11 +469,11 @@ bool CKeybindManager::handleVT(xkb_keysym_t keysym) { // vtnr is bugged for some reason. unsigned int ttynum = 0; -#if defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(VT_GETSTATE) struct vt_stat st; if (!ioctl(0, VT_GETSTATE, &st)) ttynum = st.v_active; -#elif defined(__DragonFly__) || defined(__FreeBSD__) +#elif defined(VT_GETACTIVE) int vt; if (!ioctl(0, VT_GETACTIVE, &vt)) ttynum = vt; diff --git a/src/plugins/PluginAPI.cpp b/src/plugins/PluginAPI.cpp index 8a7e2565..f26c7b9d 100644 --- a/src/plugins/PluginAPI.cpp +++ b/src/plugins/PluginAPI.cpp @@ -7,6 +7,8 @@ #include <sys/sysctl.h> #endif +#include <sstream> + APICALL bool HyprlandAPI::registerCallbackStatic(HANDLE handle, const std::string& event, HOOK_CALLBACK_FN* fn) { auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle); @@ -277,8 +279,13 @@ APICALL std::vector<SFunctionMatch> HyprlandAPI::findFunctionsByName(HANDLE hand const auto FPATH = std::filesystem::canonical("/proc/self/exe"); #endif +#ifdef __clang__ + const auto SYMBOLS = execAndGet(("llvm-nm -D -j " + FPATH.string()).c_str()); + const auto SYMBOLSDEMANGLED = execAndGet(("llvm-nm -D -j --demangle " + FPATH.string()).c_str()); +#else const auto SYMBOLS = execAndGet(("nm -D -j " + FPATH.string()).c_str()); const auto SYMBOLSDEMANGLED = execAndGet(("nm -D -j --demangle=auto " + FPATH.string()).c_str()); +#endif auto demangledFromID = [&](size_t id) -> std::string { size_t pos = 0; |