aboutsummaryrefslogtreecommitdiff
path: root/devel/corrade/files/patch-src_Corrade_Utility_Path.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'devel/corrade/files/patch-src_Corrade_Utility_Path.cpp')
-rw-r--r--devel/corrade/files/patch-src_Corrade_Utility_Path.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/devel/corrade/files/patch-src_Corrade_Utility_Path.cpp b/devel/corrade/files/patch-src_Corrade_Utility_Path.cpp
new file mode 100644
index 000000000000..a60703fdb2b6
--- /dev/null
+++ b/devel/corrade/files/patch-src_Corrade_Utility_Path.cpp
@@ -0,0 +1,33 @@
+--- src/Corrade/Utility/Path.cpp.orig 2023-01-12 11:52:02 UTC
++++ src/Corrade/Utility/Path.cpp
+@@ -89,6 +89,11 @@
+ #include <io.h>
+ #endif
+
++#ifdef __FreeBSD__
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif
++
+ #include "Corrade/configure.h"
+ #include "Corrade/Containers/Array.h"
+ #include "Corrade/Containers/GrowableArray.h"
+@@ -540,6 +545,18 @@ Containers::Optional<Containers::String> executableLoc
+ /* hardcoded for Emscripten */
+ #elif defined(CORRADE_TARGET_EMSCRIPTEN)
+ return Containers::String{"/app.js"_s};
++
++ #elif defined(__FreeBSD__)
++ Containers::Array<char> path;
++ size_t size;
++ const int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
++
++ sysctl(mib, 4, nullptr, &size, NULL, 0);
++ arrayResize(path, NoInit, size + 1);
++ sysctl(mib, 4, path, &size, NULL, 0);
++ path[size] = '\0';
++ const auto deleter = path.deleter();
++ return Containers::String{path.release(), size, deleter};
+
+ /* Not implemented */
+ #else