Now that MAXSENSORDEVICES is gone, x11/e17/e doesn't build any
longer.  The existing sensor code also doesn't look quite right to
me, because it doesn't handle the case where hw.sensors.cpu0 doesn't
exist.

Does the code below look reasonable?

Can any Enlightenment users who actually use this give it a try?


Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/e17/e/Makefile,v
retrieving revision 1.17
diff -u -p -r1.17 Makefile
--- Makefile    24 Jan 2010 11:52:36 -0000      1.17
+++ Makefile    23 Apr 2010 14:51:48 -0000
@@ -2,7 +2,7 @@
 
 COMMENT =              the enlightened window manager
 DISTNAME =             enlightenment-0.16.999.061
-PKGNAME =              ${DISTNAME}p0v0
+PKGNAME =              ${DISTNAME}p1v0
 
 # BSD
 PERMIT_PACKAGE_CDROM = Yes
Index: patches/patch-src_modules_temperature_tempget_c
===================================================================
RCS file: /cvs/ports/x11/e17/e/patches/patch-src_modules_temperature_tempget_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_modules_temperature_tempget_c
--- patches/patch-src_modules_temperature_tempget_c     11 Jan 2010 14:59:25 
-0000      1.1
+++ patches/patch-src_modules_temperature_tempget_c     23 Apr 2010 21:22:30 
-0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-src_modules_temperature_tempget_c,v 1.1 2010/01/11 14:59:25 
jasper Exp $
 --- src/modules/temperature/tempget.c.orig     Thu Feb 26 04:13:48 2009
-+++ src/modules/temperature/tempget.c  Sun Jul 26 23:19:49 2009
++++ src/modules/temperature/tempget.c  Fri Apr 23 23:19:13 2010
 @@ -3,21 +3,35 @@
   */
  #include "e.h"
@@ -24,50 +24,47 @@ $OpenBSD: patch-src_modules_temperature_
  
  static char *sensor_path = NULL;
 -#ifdef __FreeBSD__
--static int mib[5];
 +
 +#if defined (__FreeBSD__) || defined (__OpenBSD__)
-+int mib[5];
+ static int mib[5];
  #endif
 +
 +#ifdef __OpenBSD__
-+int dev, numt;
-+struct sensordev snsrdev;
-+size_t sdlen = sizeof(snsrdev);
-+struct sensor snsr;
-+size_t slen = sizeof(snsr);
++static int dev, numt;
++static struct sensordev snsrdev;
++static size_t sdlen = sizeof(snsrdev);
++static struct sensor snsr;
++static size_t slen = sizeof(snsr);
 +#endif
  static Ecore_Poller *poller = NULL;
  static int ptemp = 0;
  
-@@ -77,6 +91,7 @@ init(void)
-    int len;
- #endif
- 
-+
-    if ((!sensor_type) || ((!sensor_name) || (sensor_name[0] == 0)))
-      {
-       if (sensor_name) free(sensor_name);
-@@ -86,6 +101,18 @@ init(void)
+@@ -86,6 +100,24 @@ init(void)
        /* TODO: FreeBSD can also have more temperature sensors! */
        sensor_type = SENSOR_TYPE_FREEBSD;
        sensor_name = strdup("tz0");
 +#elif __OpenBSD__
-+      sensor_type = SENSOR_TYPE_OPENBSD;
-+      sensor_name = strdup("cpu0");
-+
 +      mib[0] = CTL_HW;
 +      mib[1] = HW_SENSORS;    
 +
-+      for (dev = 0; dev < MAXSENSORDEVICES && (strcmp(snsrdev.xname, "cpu0") 
!= 0); dev++) {
++      for (dev = 0; ; dev++) {
 +              mib[2] = dev;
-+              if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
-+                      continue;
++              if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1) {
++                      if (errno == ENOENT)    /* no further sensors */
++                              break;
++                      else
++                              continue;
++              }
++              if (strcmp(snsrdev.xname, "cpu0") == 0) {
++                      sensor_type = SENSOR_TYPE_OPENBSD;
++                      sensor_name = strdup("cpu0");
++                      break;
++              }
 +      }
  #else
        therms = ecore_file_ls("/proc/acpi/thermal_zone");
        if (therms)
-@@ -201,6 +228,21 @@ init(void)
+@@ -201,6 +233,21 @@ init(void)
             sysctlnametomib(sensor_path, mib, &len);
  #endif
             break;
@@ -89,7 +86,7 @@ $OpenBSD: patch-src_modules_temperature_
           case SENSOR_TYPE_OMNIBOOK:
             sensor_path = strdup("/proc/omnibook/temperature");
             break;
-@@ -290,6 +332,16 @@ check(void)
+@@ -290,6 +337,16 @@ check(void)
          goto error;
  #endif
        break;
-- 
Christian "naddy" Weisgerber                          [email protected]

Reply via email to