$NetBSD: patch-ag,v 1.3 2006/05/09 12:48:13 joerg Exp $

--- superkaramba/src/memsensor.cpp.orig	2006-05-09 10:25:07.000000000 +0000
+++ superkaramba/src/memsensor.cpp
@@ -32,6 +32,8 @@
 #include <sys/swap.h>
 #endif
 
+#include <kprocio.h>
+
 #if defined Q_OS_FREEBSD || defined(Q_OS_NETBSD)
 /* define pagetok in terms of pageshift */
 #define pagetok(size) ((size) << pageshift)
@@ -51,7 +53,9 @@ MemSensor::MemSensor(int msec) : Sensor(
 
     /* we only need the amount of log(2)1024 for our conversion */
     pageshift -= 10;
-# if (defined(Q_OS_FREEBSD) && __FreeBSD_version < 500018)
+# if defined(Q_OS_FREEBSD) && defined(__FreeBSD_version) && __FreeBSD_version >= 500018
+    kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY, "kvm_open");
+# elif defined Q_OS_FREEBSD
     connect(&ksp, SIGNAL(receivedStdout(KProcess *, char *, int )),
             this,SLOT(receivedStdout(KProcess *, char *, int )));
     connect(&ksp, SIGNAL(processExited(KProcess *)),
@@ -62,8 +66,6 @@ MemSensor::MemSensor(int msec) : Sensor(
     MaxSet = false;
 
     readValues();
-# elif defined Q_OS_FREEBSD
-    kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY, "kvm_open");
 # endif
 #else
     readValues();
@@ -180,9 +182,7 @@ int MemSensor::getCached()
 int MemSensor::getSwapTotal()
 {
 #ifdef Q_OS_FREEBSD
-# if __FreeBSD_version < 500018
-    return(swapTotal);
-# else
+# if defined(__FreeBSD_version) && __FreeBSD_version >= 500018
     int n = -1;
     int pagesize = getpagesize();
     int retavail = 0;
@@ -196,6 +196,8 @@ int MemSensor::getSwapTotal()
     retavail = swapinfo.ksw_total * pagesize / 1024;
 
     return(retavail);
+#else
+    return(swapTotal);
 # endif
 #elif defined(Q_OS_NETBSD)
     struct uvmexp_sysctl uvmexp;
@@ -222,9 +224,7 @@ int MemSensor::getSwapTotal()
 int MemSensor::getSwapFree()
 {
 #ifdef Q_OS_FREEBSD
-# if __FreeBSD_version < 500018
-    return(swapTotal - swapUsed);
-# else
+# if defined(__FreeBSD_version) && __FreeBSD_version >= 500018
     int n = -1;
     int pagesize = getpagesize();
     int retfree = 0;
@@ -237,6 +237,8 @@ int MemSensor::getSwapFree()
     retfree = (swapinfo.ksw_total - swapinfo.ksw_used) * pagesize / 1024;
 
     return(retfree);
+# else
+    return(swapTotal - swapUsed);
 # endif
 #elif defined(Q_OS_NETBSD)
     struct uvmexp_sysctl uvmexp;
@@ -267,7 +269,7 @@ int MemSensor::getSwapFree()
 void MemSensor::readValues()
 {
 #if defined Q_OS_FREEBSD || defined(Q_OS_NETBSD)
-# if (defined(Q_OS_FREEBSD) && __FreeBSD_version < 500018)
+# if defined(Q_OS_FREEBSD) && !(defined(__FreeBSD_version) && __FreeBSD_version >= 500018)
     ksp.clearArguments();
     ksp << "swapinfo";
     ksp.start( KProcess::NotifyOnExit,KProcIO::Stdout);
@@ -291,7 +293,7 @@ void MemSensor::update()
     SensorParams *sp;
     Meter *meter;
     QObjectListIt it( *objList );
-#if (defined(Q_OS_FREEBSD) && __FreeBSD_version < 500018)
+#if defined(Q_OS_FREEBSD) && !(defined(__FreeBSD_version) && __FreeBSD_version >= 500018)
     bool set = false;
 #endif
     int totalMem = getMemTotal();
@@ -303,7 +305,7 @@ void MemSensor::update()
     while (it != 0)
     {
         sp = (SensorParams*)(*it);
-#if (defined(Q_OS_FREEBSD) && __FreeBSD_version < 500018)
+#if defined(Q_OS_FREEBSD) && !(defined(__FreeBSD_version) && __FreeBSD_version >= 500018)
         if ( (!MaxSet) && (totalSwap > 0) ) {
            setMaxValue(sp);
            bool set = true;
@@ -331,7 +333,7 @@ void MemSensor::update()
         meter->setValue(format);
         ++it;
     }
-#if (defined(Q_OS_FREEBSD) && __FreeBSD_version < 500018)
+#if defined(Q_OS_FREEBSD) && !(defined(__FreeBSD_version) && __FreeBSD_version >= 500018)
     if (set)
         MaxSet = true;
 #endif
