$OpenBSD: patch-src_core_utilities_cpp,v 1.1.1.1 2013/02/05 14:00:16 zhuk Exp $
Add support for OpenBSD sensors framework when checking if this PC is a laptop.
--- src/core/utilities.cpp.orig	Wed Nov 28 19:53:29 2012
+++ src/core/utilities.cpp	Wed Nov 28 20:07:07 2012
@@ -59,6 +59,14 @@
 #  include "IOKit/ps/IOPSKeys.h"
 #endif
 
+#ifdef Q_OS_OPENBSD
+#  include <sys/param.h>
+#  include <sys/sensors.h>
+#  include <sys/sysctl.h>
+#  include <errno.h>
+#  include <string.h>
+#endif
+
 #include <boost/scoped_array.hpp>
 
 namespace Utilities {
@@ -538,6 +546,24 @@ bool IsLaptop() {
     if (CFDictionaryContainsKey(description, CFSTR(kIOPSBatteryHealthKey))) {
       return true;
     }
+  }
+  return false;
+#endif
+
+#ifdef Q_OS_OPENBSD
+  struct sensordev snsrdev;
+  size_t sdlen = sizeof(snsrdev);
+  int mib[3] = { CTL_HW, HW_SENSORS, 0 };
+  for (int i = 0; ; ++i) {
+    mib[2] = i;
+    if (::sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1) {
+      if (errno == ENXIO)
+        continue;
+      if (errno == ENOENT)
+        break;
+    }
+    if (::memcmp("acpibat", snsrdev.xname, 7) == 0)
+      return true;
   }
   return false;
 #endif
