diff options
author | François Andriot <francois.andriot@free.fr> | 2014-10-12 20:06:46 +0200 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2014-10-12 20:06:46 +0200 |
commit | a501cd747c2f34db196be4bfd60de36060f4d439 (patch) | |
tree | e157af0da4d1e4d6bbdc40139b94299bc8683a57 | |
parent | 180cd2fc18a958f0297fdcc2697cf6d500e69a3f (diff) | |
download | tdebase-a501cd747c2f34db196be4bfd60de36060f4d439.tar.gz tdebase-a501cd747c2f34db196be4bfd60de36060f4d439.zip |
Fix process pid detection in tdefontinst on openbsd
-rw-r--r-- | kcontrol/tdefontinst/tdefontinst/GetPid.c | 18 |
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); |