diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/glibtop.h libgtop-2.0.2/glibtop.h
--- libgtop-2.0.2.orig/glibtop.h	1999-02-23 03:42:35.000000000 -0800
+++ libgtop-2.0.2/glibtop.h	2003-07-17 20:32:29.701316000 -0700
@@ -24,6 +24,10 @@
 #ifndef __GLIBTOP_H__
 #define __GLIBTOP_H__
 
+#ifndef u_int64_t
+#define u_int64_t unsigned long long int
+#endif
+
 #include <glibtop/global.h>
 
 #include <glibtop_server.h>
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/include/glibtop/cpu.h libgtop-2.0.2/include/glibtop/cpu.h
--- libgtop-2.0.2.orig/include/glibtop/cpu.h	1999-02-23 03:42:50.000000000 -0800
+++ libgtop-2.0.2/include/glibtop/cpu.h	2003-07-17 20:23:28.192439000 -0700
@@ -41,8 +41,9 @@
 #define GLIBTOP_XCPU_NICE	8
 #define GLIBTOP_XCPU_SYS	9
 #define GLIBTOP_XCPU_IDLE	10
+#define GLIBTOP_XCPU_FLAGS  11
 
-#define GLIBTOP_MAX_CPU		11
+#define GLIBTOP_MAX_CPU		12
 
 /* Nobody should really be using more than 4 processors. */
 #define GLIBTOP_NCPU		4
@@ -62,7 +63,8 @@
 		xcpu_user [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_USER		*/
 		xcpu_nice [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_NICE		*/
 		xcpu_sys  [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_SYS		*/
-		xcpu_idle [GLIBTOP_NCPU];	/* GLIBTOP_XCPU_IDLE		*/
+		xcpu_idle [GLIBTOP_NCPU],	/* GLIBTOP_XCPU_IDLE		*/
+		xcpu_flags;	                /* GLIBTOP_XCPU_IDLE		*/
 };
 
 #define glibtop_get_cpu(cpu)	glibtop_get_cpu_l(glibtop_global_server, cpu)
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/include/glibtop/procstate.h libgtop-2.0.2/include/glibtop/procstate.h
--- libgtop-2.0.2.orig/include/glibtop/procstate.h	1999-02-23 03:43:11.000000000 -0800
+++ libgtop-2.0.2/include/glibtop/procstate.h	2003-07-17 20:23:28.216288000 -0700
@@ -33,8 +33,20 @@
 #define GLIBTOP_PROC_STATE_STATE	1
 #define GLIBTOP_PROC_STATE_UID		2
 #define GLIBTOP_PROC_STATE_GID		3
+#define GLIBTOP_PROC_STATE_RUID     4
+#define GLIBTOP_PROC_STATE_RGID     5
+#define GLIBTOP_PROC_STATE_HAS_CPU  6
+#define GLIBTOP_PROC_STATE_PROCESSOR 7
+#define GLIBTOP_PROC_STATE_LAST_PROCESSOR 8
 
-#define GLIBTOP_MAX_PROC_STATE		4
+#define GLIBTOP_MAX_PROC_STATE		9
+
+#define GLIBTOP_PROCESS_RUNNING                 1
+#define GLIBTOP_PROCESS_INTERRUPTIBLE           2
+#define GLIBTOP_PROCESS_UNINTERRUPTIBLE         4
+#define GLIBTOP_PROCESS_ZOMBIE                  8
+#define GLIBTOP_PROCESS_STOPPED                 16
+#define GLIBTOP_PROCESS_SWAPPING                32
 
 typedef struct _glibtop_proc_state	glibtop_proc_state;
 
@@ -43,9 +55,9 @@
 struct _glibtop_proc_state
 {
 	u_int64_t flags;
-	char cmd[40],		/* basename of executable file in 
+	char cmd[40];		/* basename of executable file in 
 				 * call to exec(2) */
-		state;		/* single-char code for process state
+	unsigned state;		/* single-char code for process state
 				 * (S=sleeping) */
 	/* NOTE: when porting the library, TRY HARD to implement the
 	 *       following two fields. */
@@ -53,7 +65,12 @@
 	 *                   only to set the flags value for those two
 	 *                   fields if their values are corrent ! */
 	int uid,		/* UID of process */
-		gid;		/* GID of process */
+		gid,		/* GID of process */
+        ruid,
+        rgid;
+    int has_cpu,
+        processor,
+        last_processor;
 };
 
 #define glibtop_get_proc_state(p1, p2)	glibtop_get_proc_state_l(glibtop_global_server, p1, p2)
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/include/glibtop/procuid.h libgtop-2.0.2/include/glibtop/procuid.h
--- libgtop-2.0.2.orig/include/glibtop/procuid.h	1999-02-23 03:43:13.000000000 -0800
+++ libgtop-2.0.2/include/glibtop/procuid.h	2003-07-17 20:23:28.240274000 -0700
@@ -33,19 +33,27 @@
 #define GLIBTOP_PROC_UID_EUID		1
 #define GLIBTOP_PROC_UID_GID		2
 #define GLIBTOP_PROC_UID_EGID		3
-#define GLIBTOP_PROC_UID_PID		4
-#define GLIBTOP_PROC_UID_PPID		5
-#define GLIBTOP_PROC_UID_PGRP		6
-#define GLIBTOP_PROC_UID_SESSION	7
-#define GLIBTOP_PROC_UID_TTY		8
-#define GLIBTOP_PROC_UID_TPGID		9
-#define GLIBTOP_PROC_UID_PRIORITY	10
-#define GLIBTOP_PROC_UID_NICE		11
+#define GLIBTOP_PROC_UID_SUID		4
+#define GLIBTOP_PROC_UID_SGID		5
+#define GLIBTOP_PROC_UID_FSUID		6
+#define GLIBTOP_PROC_UID_FSGID		7
+#define GLIBTOP_PROC_UID_PID		8
+#define GLIBTOP_PROC_UID_PPID		9
+#define GLIBTOP_PROC_UID_PGRP		10
+#define GLIBTOP_PROC_UID_SESSION	11
+#define GLIBTOP_PROC_UID_TTY		12
+#define GLIBTOP_PROC_UID_TPGID		13
+#define GLIBTOP_PROC_UID_PRIORITY	14
+#define GLIBTOP_PROC_UID_NICE		15
+#define GLIBTOP_PROC_UID_NGROUPS    16
+#define GLIBTOP_PROC_UID_GROUPS     17
 
-#define GLIBTOP_MAX_PROC_UID		12
+#define GLIBTOP_MAX_PROC_UID		18
 
 typedef struct _glibtop_proc_uid	glibtop_proc_uid;
 
+#define GLIBTOP_MAX_GROUPS          64
+
 /* User, Group, Terminal and session */
 
 struct _glibtop_proc_uid
@@ -55,6 +63,10 @@
 		euid,		/* effective user id */
 		gid,		/* group id */
 		egid,		/* effective group id */
+        suid,       /* set user id */
+        sgid,       /* set group id */
+        fsuid,      /* ??? user id */
+        fsgid,      /* ??? group id */
 		pid,		/* process id */
 		ppid,		/* pid of parent process */
 		pgrp,		/* process group id */
@@ -62,7 +74,10 @@
 		tty,		/* full device number of controlling terminal */
 		tpgid,		/* terminal process group id */
 		priority,	/* kernel scheduling priority */
-		nice;		/* standard unix nice level of process */
+		nice,		/* standard unix nice level of process */
+		ngroups,
+        groups [GLIBTOP_MAX_GROUPS];
+
 };
 
 #define glibtop_get_proc_uid(p1, p2)	glibtop_get_proc_uid_l(glibtop_global_server, p1, p2)
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/include/glibtop/uptime.h libgtop-2.0.2/include/glibtop/uptime.h
--- libgtop-2.0.2.orig/include/glibtop/uptime.h	1999-02-23 03:43:24.000000000 -0800
+++ libgtop-2.0.2/include/glibtop/uptime.h	2003-07-17 20:23:28.264052000 -0700
@@ -31,8 +31,9 @@
 
 #define GLIBTOP_UPTIME_UPTIME		0
 #define GLIBTOP_UPTIME_IDLETIME		1
+#define GLIBTOP_UPTIME_BOOT_TIME    2
 
-#define GLIBTOP_MAX_UPTIME		2
+#define GLIBTOP_MAX_UPTIME		3
 
 typedef struct _glibtop_uptime	glibtop_uptime;
 
@@ -41,6 +42,7 @@
 	u_int64_t flags;
 	double uptime,		/* GLIBTOP_UPTIME_UPTIME	*/
 		idletime;	/* GLIBTOP_UPTIME_IDLETIME	*/
+    u_int64_t boot_time;
 };
 
 #define glibtop_get_uptime(uptime)	glibtop_get_uptime_l(glibtop_global_server, uptime)
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/lib/sysdeps.c libgtop-2.0.2/lib/sysdeps.c
--- libgtop-2.0.2.orig/lib/sysdeps.c	1999-05-27 14:23:18.000000000 -0700
+++ libgtop-2.0.2/lib/sysdeps.c	2003-07-17 20:28:10.780145000 -0700
@@ -109,6 +109,70 @@
 	NULL
 };
 
+glibtop_init_func_t _glibtop_init_hook_p [] = {
+#if GLIBTOP_SUID_CPU
+	glibtop_init_cpu_p,
+#endif
+#if GLIBTOP_SUID_MEM
+	glibtop_init_mem_p,
+#endif
+#if GLIBTOP_SUID_SWAP
+	glibtop_init_swap_p,
+#endif
+#if GLIBTOP_SUID_UPTIME
+	glibtop_init_uptime_p,
+#endif
+#if GLIBTOP_SUID_LOADAVG
+	glibtop_init_loadavg_p,
+#endif
+#if GLIBTOP_SUID_SHM_LIMITS
+	glibtop_init_shm_limits_p,
+#endif
+#if GLIBTOP_SUID_MSG_LIMITS
+	glibtop_init_msg_limits_p,
+#endif
+#if GLIBTOP_SUID_SEM_LIMITS
+	glibtop_init_sem_limits_p,
+#endif
+#if GLIBTOP_SUID_PROCLIST
+	glibtop_init_proclist_p,
+#endif
+#if GLIBTOP_SUID_PROC_STATE
+	glibtop_init_proc_state_p,
+#endif
+#if GLIBTOP_SUID_PROC_UID
+	glibtop_init_proc_uid_p,
+#endif
+#if GLIBTOP_SUID_PROC_MEM
+	glibtop_init_proc_mem_p,
+#endif
+#if GLIBTOP_SUID_PROC_TIME
+	glibtop_init_proc_time_p,
+#endif
+#if GLIBTOP_SUID_PROC_SIGNAL
+	glibtop_init_proc_signal_p,
+#endif
+#if GLIBTOP_SUID_PROC_KERNEL
+	glibtop_init_proc_kernel_p,
+#endif
+#if GLIBTOP_SUID_PROC_SEGMENT
+	glibtop_init_proc_segment_p,
+#endif
+#if GLIBTOP_SUID_PROC_ARGS
+	glibtop_init_proc_args_p,
+#endif
+#if GLIBTOP_SUID_PROC_MAP
+	glibtop_init_proc_map_p,
+#endif
+#if GLIBTOP_SUID_NETLOAD
+	glibtop_init_netload_p,
+#endif
+#if GLIBTOP_SUID_PPP
+	glibtop_init_ppp_p,
+#endif
+	NULL
+};
+
 /* Checks which features are implemented. */
 
 void
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/names/cpu.c libgtop-2.0.2/sysdeps/names/cpu.c
--- libgtop-2.0.2.orig/sysdeps/names/cpu.c	1999-02-23 03:45:20.000000000 -0800
+++ libgtop-2.0.2/sysdeps/names/cpu.c	2003-07-17 20:23:28.288794000 -0700
@@ -27,7 +27,7 @@
 {
 	"total", "user", "nice", "sys", "idle", "frequency",
 	"xcpu_total", "xcpu_user", "xcpu_nice", "xcpu_sys",
-	"xcpu_idle"
+	"xcpu_idle", "xcpu_flags"
 };
 
 const unsigned glibtop_types_cpu [GLIBTOP_MAX_CPU] =
@@ -35,7 +35,7 @@
 	GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG,
 	GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG,
 	GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG,
-	GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG
+	GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG, GLIBTOP_TYPE_ULONG
 };
 
 const char *glibtop_labels_cpu [GLIBTOP_MAX_CPU] =
@@ -50,7 +50,8 @@
 	N_("SMP CPU Time in User Mode"),
 	N_("SMP CPU Time in User Mode (nice)"),
 	N_("SMP CPU Time in System Mode"),
-	N_("SMP CPU Time in the Idle Task")
+	N_("SMP CPU Time in the Idle Task"),
+    N_("SMP CPU Flags")
 };
 
 const char *glibtop_descriptions_cpu [GLIBTOP_MAX_CPU] =
@@ -66,4 +67,5 @@
 	N_("Number of clock ticks the system spent in user mode (nice)"),
 	N_("Number of clock ticks the system spent in system mode"),
 	N_("Number of clock ticks the system spent in the idle task"),
+    N_("Bit field indicating which CPU is currently running"),
 };
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/names/procstate.c libgtop-2.0.2/sysdeps/names/procstate.c
--- libgtop-2.0.2.orig/sysdeps/names/procstate.c	1999-02-23 03:45:35.000000000 -0800
+++ libgtop-2.0.2/sysdeps/names/procstate.c	2003-07-17 20:23:28.312684000 -0700
@@ -26,18 +26,21 @@
 
 const char *glibtop_names_proc_state [GLIBTOP_MAX_PROC_STATE] =
 {
-	"cmd", "state", "uid", "gid"
+	"cmd", "state", "uid", "gid", "ruid", "rgid",
+    "has_cpu", "processor", "last_processor"
 };
 
 const unsigned glibtop_types_proc_state [GLIBTOP_MAX_PROC_STATE] =
 {
-	GLIBTOP_TYPE_STRING, GLIBTOP_TYPE_CHAR,
-	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT
+	GLIBTOP_TYPE_STRING, GLIBTOP_TYPE_CHAR, GLIBTOP_TYPE_INT,
+    GLIBTOP_TYPE_INT,    GLIBTOP_TYPE_INT,  GLIBTOP_TYPE_INT,
+    GLIBTOP_TYPE_INT,    GLIBTOP_TYPE_INT,  GLIBTOP_TYPE_INT
 };
 
 const char *glibtop_labels_proc_state [GLIBTOP_MAX_PROC_STATE] =
 {
-	N_("Cmd"), N_("State"), N_("UID"), N_("GID")
+	N_("Cmd"), N_("State"), N_("UID"), N_("GID"),
+    N_("RGid"), N_("RUid"), N_("HasCPU"), N_("Proc"), N_("LProc")
 };
 
 const char *glibtop_descriptions_proc_state [GLIBTOP_MAX_PROC_STATE] =
@@ -45,5 +48,10 @@
 	N_("Basename of executable file in call to exec()"),
 	N_("Single-Char code for process state (S=sleeping)"),
 	N_("UID of process"),
-	N_("GID of process")
+	N_("GID of process"),
+	N_("Real UID of process"),
+	N_("Real GID of process"),
+	N_("Has CPU"),
+	N_("Processor"),
+	N_("Last Processor"),
 };
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/names/procuid.c libgtop-2.0.2/sysdeps/names/procuid.c
--- libgtop-2.0.2.orig/sysdeps/names/procuid.c	1999-02-23 03:45:37.000000000 -0800
+++ libgtop-2.0.2/sysdeps/names/procuid.c	2003-07-17 20:23:28.336567000 -0700
@@ -24,23 +24,12 @@
 #include <glibtop.h>
 #include <glibtop/procuid.h>
 
-#define GLIBTOP_PROC_UID_UID		0
-#define GLIBTOP_PROC_UID_EUID		1
-#define GLIBTOP_PROC_UID_GID		2
-#define GLIBTOP_PROC_UID_EGID		3
-#define GLIBTOP_PROC_UID_PID		4
-#define GLIBTOP_PROC_UID_PPID		5
-#define GLIBTOP_PROC_UID_PGRP		6
-#define GLIBTOP_PROC_UID_SESSION	7
-#define GLIBTOP_PROC_UID_TTY		8
-#define GLIBTOP_PROC_UID_TPGID		9
-#define GLIBTOP_PROC_UID_PRIORITY	10
-#define GLIBTOP_PROC_UID_NICE		11
-
 const char *glibtop_names_proc_uid [GLIBTOP_MAX_PROC_UID] =
 {
-	"uid", "euid", "gid", "egid", "pid", "ppid", "pgrp",
-	"session", "tty", "tpgid", "priority", "nice"
+	"uid", "euid", "gid", "egid", "suid", "sgid", 
+    "fsuid", "fsgid", "pid", "ppid", "pgrp",
+	"session", "tty", "tpgid", "priority", "nice",
+    "ngroups", "groups"
 };
 
 const unsigned glibtop_types_proc_uid [GLIBTOP_MAX_PROC_UID] =
@@ -48,14 +37,17 @@
 	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT,
 	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT,
 	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT,
+	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT,
+	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT,
 	GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT, GLIBTOP_TYPE_INT
 };
 
 const char *glibtop_labels_proc_uid [GLIBTOP_MAX_PROC_UID] =
 {
-	N_("Uid"), N_("EUid"), N_("Gid"), N_("EGid"), N_("Pid"),
+	N_("Uid"), N_("EUid"), N_("Gid"), N_("EGid"), N_("SUid"),
+    N_("SGid"), N_("FSUid"), N_("FSGid"), N_("Pid"),
 	N_("PPid"), N_("PGrp"), N_("Session"), N_("Tty"),
-	N_("TPGid"), N_("Priority"), N_("Nice")
+	N_("TPGid"), N_("Priority"), N_("Nice"), N_("NGroups"), N_("Groups")
 };
 
 const char *glibtop_descriptions_proc_uid [GLIBTOP_MAX_PROC_UID] =
@@ -64,6 +56,10 @@
 	N_("Effective User ID"),
 	N_("Group ID"),
 	N_("Effective Group ID"),
+    N_("Set User ID"),
+    N_("Set Group ID"),
+    N_("Filesystem User ID"),
+    N_("Filesystem Group ID"),
 	N_("Process ID"),
 	N_("PID of parent process"),
 	N_("Process group ID"),
@@ -71,5 +67,7 @@
 	N_("Full device number of controlling terminal"),
 	N_("Terminal process group ID"),
 	N_("Kernel scheduling priority"),
-	N_("Standard unix nice level of process")
+	N_("Standard unix nice level of process"),
+    N_("Number of additional process groups"),
+    N_("Array of additional process groups")
 };
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/names/uptime.c libgtop-2.0.2/sysdeps/names/uptime.c
--- libgtop-2.0.2.orig/sysdeps/names/uptime.c	1999-02-23 03:45:42.000000000 -0800
+++ libgtop-2.0.2/sysdeps/names/uptime.c	2003-07-17 20:23:28.360455000 -0700
@@ -25,22 +25,24 @@
 
 const char *glibtop_names_uptime [GLIBTOP_MAX_UPTIME] =
 {
-	"uptime", "idletime"
+	"uptime", "idletime", "boot_time"
 };
 
 const unsigned glibtop_types_uptime [GLIBTOP_MAX_UPTIME] =
 {
-	GLIBTOP_TYPE_DOUBLE, GLIBTOP_TYPE_DOUBLE
+	GLIBTOP_TYPE_DOUBLE, GLIBTOP_TYPE_DOUBLE, GLIBTOP_TYPE_ULONG
 };
 
 const char *glibtop_labels_uptime [GLIBTOP_MAX_UPTIME] =
 {
 	N_("Uptime"),
-	N_("Idletime")
+	N_("Idletime"),
+    N_("BootTime")
 };
 
 const char *glibtop_descriptions_uptime [GLIBTOP_MAX_UPTIME] =
 {
 	N_("Time in seconds since system boot"),
-	N_("Time in seconds the system spent in the idle task since system boot")
+	N_("Time in seconds the system spent in the idle task since system boot"),
+    N_("Time of last system boot in seconds since the epoch"),
 };
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/solaris/open.c libgtop-2.0.2/sysdeps/solaris/open.c
--- libgtop-2.0.2.orig/sysdeps/solaris/open.c	2001-02-14 15:07:41.000000000 -0800
+++ libgtop-2.0.2/sysdeps/solaris/open.c	2003-07-17 20:31:42.176142000 -0700
@@ -73,7 +73,7 @@
 	   life time of a process, but let's hope that's just an error in
 	   the documentation. */
 
-	if((nproc_same = new_ncpu) == server->ncpu)
+	if(nproc_same = new_ncpu == server->ncpu)
 	{
 	    int checked, i;
 	    char cpu[20];
diff --speed-large-files --minimal -Nru libgtop-2.0.2.orig/sysdeps/solaris/shm_limits.c libgtop-2.0.2/sysdeps/solaris/shm_limits.c
--- libgtop-2.0.2.orig/sysdeps/solaris/shm_limits.c	2001-02-14 15:07:41.000000000 -0800
+++ libgtop-2.0.2/sysdeps/solaris/shm_limits.c	2003-07-17 20:30:36.293553000 -0700
@@ -60,9 +60,11 @@
 	if(kvm_read(kd, nlst[0].n_value, (void *)&sinfo,
 		    sizeof(struct shminfo)) != sizeof(struct shminfo))
 	        return;
-        buf->shmmax = sinfo.shmmax;
-	buf->shmmin = sinfo.shmmin;
+    buf->shmmax = sinfo.shmmax;
 	buf->shmmni = sinfo.shmmni;
+#if GLIBTOP_SOLARIS_RELEASE < 590
+	buf->shmmin = sinfo.shmmin;
 	buf->shmseg = sinfo.shmseg;
+#endif
 	buf->flags = _glibtop_sysdeps_shm_limits;
 }
