aboutsummaryrefslogtreecommitdiffstats
path: root/x11/waycheck/files/patch-src_window.cpp
diff options
context:
space:
mode:
authorLexi Winter <ivy@FreeBSD.org>2025-10-05 09:19:31 +0100
committerLexi Winter <ivy@FreeBSD.org>2025-10-05 09:19:31 +0100
commitf85f2b2d6e5b7ed869376eb4b180c3a74a5c5da9 (patch)
treead799ccacfb459b809b02b9c115ed4befb93b4c1 /x11/waycheck/files/patch-src_window.cpp
parent0b1510fe1f98f82da6f3481cb6c58957022d9211 (diff)
parentb057c68280a2f2a7b3d1fbac36f7b034e1fdf593 (diff)
Merge remote-tracking branch 'freebsd/main' into lf/main
Diffstat (limited to 'x11/waycheck/files/patch-src_window.cpp')
-rw-r--r--x11/waycheck/files/patch-src_window.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/x11/waycheck/files/patch-src_window.cpp b/x11/waycheck/files/patch-src_window.cpp
new file mode 100644
index 000000000000..6e976a9c5ffb
--- /dev/null
+++ b/x11/waycheck/files/patch-src_window.cpp
@@ -0,0 +1,56 @@
+--- src/window.cpp.orig 2025-06-27 19:43:51 UTC
++++ src/window.cpp
+@@ -13,7 +13,24 @@
+ #include <unistd.h>
+ #include <wayland-client-protocol.h>
+
++#if defined(__FreeBSD__)
++#include <sys/types.h>
++#include <sys/ucred.h>
++#include <sys/un.h>
++#include <sys/user.h>
++#include <libutil.h>
++#endif
++
+ static pid_t pid_from_fd(const int fd) {
++#if defined(__FreeBSD__)
++ xucred cred{};
++ socklen_t len = sizeof(struct xucred);
++ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERCRED, &cred, &len) == -1) {
++ perror("getsockopt failed");
++ exit(1);
++ }
++ return cred.cr_pid;
++#else
+ ucred cred{};
+ socklen_t len = sizeof(struct ucred);
+ if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1) {
+@@ -21,9 +38,19 @@ static pid_t pid_from_fd(const int fd) {
+ exit(1);
+ }
+ return cred.pid;
++#endif
+ }
+
+ static std::string process_name_from_pid(const pid_t pid) {
++#if defined(__FreeBSD__)
++ struct kinfo_proc *proc = kinfo_getproc(pid);
++
++ if (proc) {
++ std::string out = proc->ki_comm;
++ free(proc);
++ return out;
++ }
++#else
+ const std::string procpath = QString::asprintf("/proc/%d/comm", pid).toStdString();
+
+ std::ifstream infile(procpath);
+@@ -38,7 +65,7 @@ static std::string process_name_from_pid(const pid_t p
+ // running in a flatpak or a snap, most likely
+ return "Unknown (Sandboxed)";
+ }
+-
++#endif
+ return "Unknown";
+ }
+