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]