X-Git-Url: https://git.wpitchoune.net/gitweb/?p=psensor.git;a=blobdiff_plain;f=src%2Flib%2Flmsensor.c;h=6f3845d95bcd798e74bb5f3f1ff3ebfd8585676a;hp=32785b677adeeb204d9fb5631a9faa51293b5a34;hb=c1e20f2631a1249720e9c75d753eacfcb0f6c7b9;hpb=39897615ff371e114e74dea464737df98c0684c6 diff --git a/src/lib/lmsensor.c b/src/lib/lmsensor.c index 32785b6..6f3845d 100644 --- a/src/lib/lmsensor.c +++ b/src/lib/lmsensor.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 jeanfi@gmail.com + * Copyright (C) 2010-2016 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -124,7 +124,7 @@ void lmsensor_psensor_list_update(struct psensor **sensors) struct psensor *s; double v; - if (!init_done) + if (!init_done || !sensors) return; while (*sensors) { @@ -156,15 +156,20 @@ lmsensor_psensor_create(const sensors_chip_name *chip, int type; char *id, *label, *cname; struct psensor *psensor; - sensors_subfeature_type fault_subfeature; + sensors_subfeature_type fault_subfeature, min_subfeature, + max_subfeature; if (sensors_snprintf_chip_name(name, 200, chip) < 0) return NULL; if (feature->type == SENSORS_FEATURE_TEMP) { fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT; + max_subfeature = SENSORS_SUBFEATURE_TEMP_MAX; + min_subfeature = SENSORS_SUBFEATURE_TEMP_MIN; } else if (feature->type == SENSORS_FEATURE_FAN) { fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT; + max_subfeature = SENSORS_SUBFEATURE_FAN_MAX; + min_subfeature = SENSORS_SUBFEATURE_FAN_MIN; } else { log_err(_("%s: Wrong feature type."), PROVIDER_NAME); return NULL; @@ -211,12 +216,11 @@ lmsensor_psensor_create(const sensors_chip_name *chip, psensor = psensor_create(id, label, cname, type, values_max_length); - - sf = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_MAX); + sf = sensors_get_subfeature(chip, feature, max_subfeature); if (sf) psensor->max = get_value(chip, sf); - sf = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_MIN); + sf = sensors_get_subfeature(chip, feature, min_subfeature); if (sf) psensor->min = get_value(chip, sf);