--- fireapplet/fireapplet.cpp.orig	Sun Sep 29 00:37:10 2002
+++ fireapplet/fireapplet.cpp	Fri May  2 01:14:29 2003
@@ -30,6 +30,16 @@
 #include <qslider.h>
 #include <qpushbutton.h>
 
+#define KWANTUS
+#ifdef KWANTUS
+#include <sys/param.h>  /* for sys/sysctl.h */
+#include <sys/sysctl.h>
+#include <sys/sched.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#endif
+
 #include "fireapplet.h"
 #include "fireapplet.moc"
 
@@ -125,6 +135,34 @@
 
 void FireApplet::updateCPULoad()
 {
+  int load;
+#ifdef KWANTUS
+	static int mib[]={CTL_KERN,KERN_CP_TIME};
+	u_int64_t curr[CPUSTATES];
+	static u_int64_t prev[CPUSTATES];
+	size_t currsiz = sizeof(curr);
+	long ticks;
+	int i;
+	
+	sysctl(mib, 2, curr, &currsiz, 0, 0);
+
+	ticks = 0;	
+	for (i=CPUSTATES; i--;)
+		ticks += curr[i]-prev[i];
+
+	load = 0;
+	if (ticks>10) {
+		if(showUserLoad)
+			load += curr[CP_USER]-prev[CP_USER];
+		if(showSystemLoad)
+			load += curr[CP_SYS]-prev[CP_SYS];
+		if(showNiceLoad)
+			load += curr[CP_NICE]-prev[CP_NICE];
+		load = 100*load/ticks;
+		for (i=CPUSTATES; i--;)
+			prev[i] = curr[i];
+	}
+#else
 	static unsigned long oldUser = 0;
 	static unsigned long oldSystem = 0;
 	static unsigned long oldNice = 0;
@@ -134,7 +172,6 @@
 	unsigned long currentNice;
 	unsigned long currentIdle;
 	unsigned long totalTicks;
-  int load;
 
   QFile statFile("/proc/stat");
 	char lineBuf[256];
@@ -169,7 +206,7 @@
 	oldSystem = currentSystem;
 	oldNice = currentNice;
 	oldIdle = currentIdle;
-
+#endif
 	emit cpuLoad(load);
 }
 
