=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/systat/sensors.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- src/usr.bin/systat/sensors.c 2010/04/20 19:44:07 1.20 +++ src/usr.bin/systat/sensors.c 2010/04/20 20:49:35 1.21 @@ -1,4 +1,4 @@ -/* $OpenBSD: sensors.c,v 1.20 2010/04/20 19:44:07 oga Exp $ */ +/* $OpenBSD: sensors.c,v 1.21 2010/04/20 20:49:35 deraadt Exp $ */ /* * Copyright (c) 2007 Deanna Phillips @@ -43,7 +43,8 @@ #define sn_status sn_sensor.status #define sn_value sn_sensor.value -char *devnames[MAXSENSORDEVICES]; +#define SYSTAT_MAXSENSORDEVICES 1024 +char *devnames[SYSTAT_MAXSENSORDEVICES]; #define ADD_ALLOC 100 static size_t sensor_cnt = 0; @@ -134,13 +135,15 @@ sensor_cnt = 0; - for (dev = 0; dev < MAXSENSORDEVICES; dev++) { + for (dev = 0; dev < SYSTAT_MAXSENSORDEVICES; dev++) { mib[2] = dev; sdlen = sizeof(struct sensordev); if (sysctl(mib, 3, &sensordev, &sdlen, NULL, 0) == -1) { - if (errno != ENOENT) - error("sysctl: %s", strerror(errno)); - continue; + if (errno == ENOENT) + break; + if (errno == ENXIO) + continue; + error("sysctl: %s", strerror(errno)); } if (devnames[dev] && strcmp(devnames[dev], sensordev.xname)) {