summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrançois Andriot <francois.andriot@free.fr>2014-10-12 20:06:46 +0200
committerSlávek Banko <slavek.banko@axis.cz>2014-10-12 20:06:46 +0200
commita501cd747c2f34db196be4bfd60de36060f4d439 (patch)
treee157af0da4d1e4d6bbdc40139b94299bc8683a57
parent180cd2fc18a958f0297fdcc2697cf6d500e69a3f (diff)
downloadtdebase-a501cd747c2f34db196be4bfd60de36060f4d439.tar.gz
tdebase-a501cd747c2f34db196be4bfd60de36060f4d439.zip
Fix process pid detection in tdefontinst on openbsd
-rw-r--r--kcontrol/tdefontinst/tdefontinst/GetPid.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/kcontrol/tdefontinst/tdefontinst/GetPid.c b/kcontrol/tdefontinst/tdefontinst/GetPid.c
index 015ea7ce9..37aba65c3 100644
--- a/kcontrol/tdefontinst/tdefontinst/GetPid.c
+++ b/kcontrol/tdefontinst/tdefontinst/GetPid.c
@@ -55,6 +55,7 @@
Linux Tested on Linux 2.4
FreeBSD Tested on FreeBSD 5.1 by Brian Ledbetter <brian@shadowcom.net>
NetBSD
+ OpenBSD
Irix
Solaris Tested on Solaris 8 x86 by Torsten Kasch <tk@Genetik.Uni-Bielefeld.DE>
HP-UX Tested on HP-UX B.11.11 U 9000/800
@@ -160,7 +161,7 @@ unsigned int kfi_getPid(const char *proc, unsigned int ppid)
return error ? 0 : pid;
}
-#elif defined OS_FreeBSD || defined OS_NetBSD || defined __FreeBSD__ || defined __NetBSD__ || defined OS_Darwin
+#elif defined OS_FreeBSD || defined OS_NetBSD || defined __FreeBSD__ || defined __NetBSD__ || defined OS_Darwin || defined OS_OpenBSD || defined __OpenBSD__
#include <ctype.h>
#include <dirent.h>
@@ -202,6 +203,8 @@ unsigned int kfi_getPid(const char *proc, unsigned int ppid)
mib[3] = p[num].ki_pid;
#elif defined(__DragonFly__) && __DragonFly_version >= 190000
mib[3] = p[num].kp_pid;
+#elif defined(__OpenBSD__)
+ mib[3] = p[num].p_pid;
#else
mib[3] = p[num].kp_proc.p_pid;
#endif
@@ -225,15 +228,22 @@ unsigned int kfi_getPid(const char *proc, unsigned int ppid)
pid=p[num].kp_pid;
#else
#if defined(__DragonFly__)
- if(proc_p.kp_eproc.e_ppid==ppid && p[num].kp_thread.td_comm && 0==strcmp(p[num].kp_thread.td_comm, proc))
+ if(proc_p.kp_eproc.e_ppid==ppid && p[num].kp_thread.td_comm && 0==strcmp(p[num].kp_thread.td_comm, proc))
+#elif defined(__OpenBSD__)
+ if(proc_p.p_ppid==ppid && p[num].p_comm && 0==strcmp(p[num].p_comm, proc))
#else
if(proc_p.kp_eproc.e_ppid==ppid && p[num].kp_proc.p_comm && 0==strcmp(p[num].kp_proc.p_comm, proc))
#endif
- if(pid)
+ if(pid) {
error=true;
- else
+ } else {
+#if defined(__OpenBSD__)
+ pid=p[num].p_pid;
+#else
pid=p[num].kp_proc.p_pid;
#endif
+ }
+#endif
}
}
free(p);