static void update(struct psensor **sensors, struct hdd_info *info)
{
- struct psensor **sensor_cur = sensors;
-
- while (*sensor_cur) {
- if (!((*sensor_cur)->type & SENSOR_TYPE_REMOTE)
- && (*sensor_cur)->type & SENSOR_TYPE_HDDTEMP
- && !strcmp((*sensor_cur)->id + 8, info->name))
- psensor_set_current_value(*sensor_cur,
+ while (*sensors) {
+ if (!((*sensors)->type & SENSOR_TYPE_REMOTE)
+ && (*sensors)->type & SENSOR_TYPE_HDDTEMP
+ && !strcmp((*sensors)->id + 8, info->name))
+ psensor_set_current_value(*sensors,
(double)info->temp);
- sensor_cur++;
+ sensors++;
+ }
+}
+
+static bool contains_hddtemp_sensor(struct psensor **sensors)
+{
+ struct psensor *s;
+
+ if (!sensors)
+ return false;
+
+ while (*sensors) {
+ s = *sensors;
+ if (!(s->type & SENSOR_TYPE_REMOTE)
+ && (s->type & SENSOR_TYPE_HDDTEMP))
+ return true;
+ sensors++;
}
+
+ return false;
}
void hddtemp_psensor_list_update(struct psensor **sensors)
{
char *hddtemp_output;
+ if (!contains_hddtemp_sensor(sensors))
+ return;
+
hddtemp_output = fetch();
if (!hddtemp_output)