summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dwm.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/dwm.c b/dwm.c
index f3a0705..2e43282 100644
--- a/dwm.c
+++ b/dwm.c
@@ -2412,18 +2412,25 @@ getparentprocess(pid_t p)
{
unsigned int v = 0;
-#ifdef __linux__
+#if defined(__linux__)
FILE *f;
char buf[256];
snprintf(buf, sizeof(buf) - 1, "/proc/%u/stat", (unsigned)p);
if (!(f = fopen(buf, "r")))
- return 0;
+ return (pid_t)0;
- fscanf(f, "%*u %*s %*c %u", &v);
+ if (fscanf(f, "%*u %*s %*c %u", (unsigned *)&v) != 1)
+ v = (pid_t)0;
fclose(f);
-#endif /* __linux__ */
+#elif defined(__FreeBSD__)
+ struct kinfo_proc *proc = kinfo_getproc(p);
+ if (!proc)
+ return (pid_t)0;
+ v = proc->ki_ppid;
+ free(proc);
+#endif
return (pid_t)v;
}