$NetBSD: patch-af,v 1.1 2007/06/30 19:18:47 joerg Exp $

--- process_scan_bsd.cc.orig	2007-06-30 18:48:04.000000000 +0000
+++ process_scan_bsd.cc
@@ -42,7 +42,13 @@ extern "C" {
 #include <sys/param.h>
 #include <sys/sysctl.h> // KERN_PROC_ALL
 #include <sys/types.h>
+#ifdef __DragonFly__
+#define template
+#endif
 #include <sys/user.h>
+#ifdef __DragonFly__
+#undef template
+#endif
 #include <fcntl.h>
 #include <kvm.h>
 #include <unistd.h>
@@ -78,7 +84,11 @@ public:
 	virtual void life(process_model *pm);
 
 	virtual int cur_pid() { return int(cur_kp_->kp_proc.p_pid); }
+#ifdef __DragonFly__
+	virtual int cur_uid() { return int(cur_kp_->kp_eproc.e_ucred.cr_ruid); }
+#else
 	virtual int cur_uid() { return int(cur_kp_->kp_eproc.e_pcred.p_ruid); }
+#endif
 };
 
 
@@ -256,7 +266,11 @@ process_scan_bsd::birth()
 {
 	process_model *pm = new process_model(int(cur_kp_->kp_proc.p_pid));
 	// fill in init-time only bits:
+#ifdef __DragonFly__
+	pm->set_uid(int(cur_kp_->kp_eproc.e_ucred.cr_ruid));
+#else
 	pm->set_uid(int(cur_kp_->kp_eproc.e_pcred.p_ruid));
+#endif
 	pm->set_nice(cur_kp_->kp_proc.p_nice);
 	pm->set_start_time(0);  // xxx: not in bsd?
 	life(pm);
@@ -267,8 +281,13 @@ void
 process_scan_bsd::life(process_model *pm)
 {
 	// OS-specific bits:
+#ifdef __DragonFly__
+	pm->set_utime(ticks_to_msec(cur_kp_->kp_eproc.e_uticks));
+	pm->set_stime(ticks_to_msec(cur_kp_->kp_eproc.e_sticks));
+#else
 	pm->set_utime(ticks_to_msec(cur_kp_->kp_proc.p_uticks));
 	pm->set_stime(ticks_to_msec(cur_kp_->kp_proc.p_sticks));
+#endif
 	// xxx: skip p_iticks
 
 	int size, resident;
