Updating branch refs/heads/master to 0984dd8aa312507354db838054a3af39730b95dd (commit) from cb00cbcd3faef7670adf2ddf57b8c7cc18caf508 (commit)
commit 0984dd8aa312507354db838054a3af39730b95dd Author: Landry Breuil <lan...@xfce.org> Date: Mon Apr 23 10:47:49 2012 +0200 OpemBSD removed KERN_PROC2/KINFO_PROC2 some months ago, do the #ifdef dance Effectively merges http://www.openbsd.org/cgi-bin/cvsweb/ports/x11/xfce4/xfce4-taskmanager/patches/patch-src_task-manager-bsd_c?rev=1.1 Keep the old code for NetBSD/DragonflyBSD. src/task-manager-bsd.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-) diff --git a/src/task-manager-bsd.c b/src/task-manager-bsd.c index 30e3301..2bdfd70 100644 --- a/src/task-manager-bsd.c +++ b/src/task-manager-bsd.c @@ -41,7 +41,11 @@ gboolean get_task_list (GArray *task_list) { int mib[6]; size_t size; +#ifdef __OpenBSD__ + struct kinfo_proc *kp; +#else struct kinfo_proc2 *kp; +#endif Task t; struct passwd *passwdp; char **args, **ptr; @@ -49,23 +53,48 @@ gboolean get_task_list (GArray *task_list) int nproc, i; mib[0] = CTL_KERN; +#ifdef __OpenBSD__ + mib[1] = KERN_PROC; +#else mib[1] = KERN_PROC2; +#endif mib[2] = KERN_PROC_ALL; mib[3] = 0; +#ifdef __OpenBSD__ + mib[4] = sizeof(struct kinfo_proc); +#else mib[4] = sizeof(struct kinfo_proc2); +#endif mib[5] = 0; if (sysctl(mib, 6, NULL, &size, NULL, 0) < 0) +#ifdef __OpenBSD__ + errx(1, "could not get kern.proc size"); +#else errx(1, "could not get kern.proc2 size"); +#endif size = 5 * size / 4; /* extra slop */ if ((kp = malloc(size)) == NULL) errx(1,"failed to allocate memory for proc structures"); +#ifdef __OpenBSD__ + mib[5] = (int)(size / sizeof(struct kinfo_proc)); +#else mib[5] = (int)(size / sizeof(struct kinfo_proc2)); +#endif if (sysctl(mib, 6, kp, &size, NULL, 0) < 0) +#ifdef __OpenBSD__ + errx(1, "could not read kern.proc"); + nproc = (int)(size / sizeof(struct kinfo_proc)); +#else errx(1, "could not read kern.proc2"); nproc = (int)(size / sizeof(struct kinfo_proc2)); +#endif for (i=0 ; i < nproc ; i++) { +#ifdef __OpenBSD__ + struct kinfo_proc p = kp[i]; +#else struct kinfo_proc2 p = kp[i]; +#endif t.pid = p.p_pid; t.ppid = p.p_ppid; t.uid = p.p_uid; @@ -117,17 +146,34 @@ gboolean pid_is_sleeping (guint pid) { int mib[6]; +#ifdef __OpenBSD__ + struct kinfo_proc kp; + size_t size = sizeof(struct kinfo_proc); +#else struct kinfo_proc2 kp; size_t size = sizeof(struct kinfo_proc2); +#endif mib[0] = CTL_KERN; +#ifdef __OpenBSD__ + mib[1] = KERN_PROC; +#else mib[1] = KERN_PROC2; +#endif mib[2] = KERN_PROC_PID; mib[3] = pid; +#ifdef __OpenBSD__ + mib[4] = sizeof(struct kinfo_proc); +#else mib[4] = sizeof(struct kinfo_proc2); +#endif mib[5] = 1; if (sysctl(mib, 6, &kp, &size, NULL, 0) < 0) +#ifdef __OpenBSD__ + errx(1, "could not read kern.proc for pid %d", pid); +#else errx(1, "could not read kern.proc2 for pid %d", pid); +#endif return (kp.p_stat == SSLEEP ? TRUE : FALSE); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits