$NetBSD: patch-am,v 1.3 2003/12/13 20:27:42 xtraeme Exp $

--- sysdeps/freebsd/procstate.c.orig	Fri Sep  5 23:39:12 2003
+++ sysdeps/freebsd/procstate.c	Fri Sep  5 23:45:03 2003
@@ -37,11 +37,7 @@
 (1L << GLIBTOP_PROC_STATE_GID);
 
 static const unsigned long _glibtop_sysdeps_proc_state_new =
-#if LIBGTOP_VERSION_CODE >= 1001000
-(1L << GLIBTOP_PROC_STATE_RUID) + (1L << GLIBTOP_PROC_STATE_RGID);
-#else
 0;
-#endif
 
 /* Init function. */
 
@@ -76,32 +72,47 @@
 		return;
 	}
 
-	strncpy (buf->cmd, pinfo [0].kp_proc.p_comm, sizeof (buf->cmd)-1);
-	buf->cmd [sizeof (buf->cmd)-1] = 0;
+#if defined(__FreeBSD__) && (__FreeBSD_version >= 500013)
+#define	XXX_P_COMM	ki_comm
+#define	XXX_P_SVUID	ki_svuid
+#define	XXX_P_SVGID	ki_svgid
+#define	XXX_P_RUID	ki_ruid
+#define	XXX_P_RGID	ki_rgid
+#define XXX_P_STAT	ki_stat
 
-	buf->uid = pinfo [0].kp_eproc.e_pcred.p_svuid;
-	buf->gid = pinfo [0].kp_eproc.e_pcred.p_svgid;
+#else
+#define	XXX_P_COMM	kp_proc.p_comm
+#define	XXX_P_SVUID	kp_eproc.e_pcred.p_svuid
+#define	XXX_P_SVGID	kp_eproc.e_pcred.p_svgid
+#define	XXX_P_RUID	kp_eproc.e_pcred.p_ruid
+#define	XXX_P_RGID	kp_eproc.e_pcred.p_rgid
+#define	XXX_P_STAT	kp_proc.p_stat
 
-#if LIBGTOP_VERSION_CODE >= 1001000
-	buf->ruid = pinfo [0].kp_eproc.e_pcred.p_ruid;
-	buf->rgid = pinfo [0].kp_eproc.e_pcred.p_rgid;
 #endif
 
+	strncpy (buf->cmd, pinfo [0].XXX_P_COMM, sizeof (buf->cmd)-1);
+	buf->cmd [sizeof (buf->cmd)-1] = 0;
+
+	buf->uid = pinfo [0].XXX_P_SVUID;
+	buf->gid = pinfo [0].XXX_P_SVGID;
+
 	/* Set the flags for the data we're about to return*/
 	buf->flags = _glibtop_sysdeps_proc_state |
 		_glibtop_sysdeps_proc_state_new;
 
 #if LIBGTOP_VERSION_CODE >= 1001000
-	switch (pinfo [0].kp_proc.p_stat) {
+	switch (pinfo [0].XXX_P_STAT) {
 	case SIDL:
 		buf->state = 0;
 		break;
 	case SRUN:
 		buf->state = GLIBTOP_PROCESS_RUNNING;
 		break;
+#ifdef SSLEEP
 	case SSLEEP:
 		buf->state = GLIBTOP_PROCESS_INTERRUPTIBLE;
 		break;
+#endif
 	case SSTOP:
 		buf->state = GLIBTOP_PROCESS_STOPPED;
 		break;
@@ -112,16 +123,18 @@
 		return;
 	}
 #else
-	switch (pinfo [0].kp_proc.p_stat) {
+	switch (pinfo [0].XXX_P_STAT) {
 	case SIDL:
 		buf->state = 'S';
 		break;
 	case SRUN:
 		buf->state = 'R';
 		break;
+#ifdef SSLEEP
 	case SSLEEP:
 		buf->state = 'S';
 		break;
+#endif
 	case SSTOP:
 		buf->state = 'T';
 		break;
