On Thu, 6 May 2010 14:20:56 +0200, Jean Delvare wrote: > I have a patch ready, I'll give it some testing to make sure I got it > right, and then I'll post it here. Andre, can you please comment on the patch below? Sergey, any chance you could test it? It works for me on two different machines, but I may not have covered all possible cases. --- prog/sensord/rrd.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) --- lm-sensors.orig/prog/sensord/rrd.c 2009-11-05 10:18:11.000000000 +0100 +++ lm-sensors/prog/sensord/rrd.c 2010-05-06 17:54:06.000000000 +0200 @@ -137,9 +137,11 @@ static void rrdCheckLabel(const char *ra } } +/* Returns the number of features processed, or -1 on error */ static int _applyToFeatures(FeatureFN fn, void *data, const sensors_chip_name *chip, - const ChipDescriptor *desc) + const ChipDescriptor *desc, + int labelOffset) { int i; const FeatureDescriptor *features = desc->features; @@ -147,7 +149,7 @@ static int _applyToFeatures(FeatureFN fn const char *rawLabel; char *label; - for (i = 0; i < MAX_RRD_SENSORS && features[i].format; ++i) { + for (i = 0; labelOffset + i < MAX_RRD_SENSORS && features[i].format; ++i) { feature = features + i; rawLabel = feature->feature->name; @@ -158,11 +160,11 @@ static int _applyToFeatures(FeatureFN fn return -1; } - rrdCheckLabel(rawLabel, i); - fn(data, rrdLabels[i], label, feature); + rrdCheckLabel(rawLabel, labelOffset + i); + fn(data, rrdLabels[labelOffset + i], label, feature); free(label); } - return 0; + return i; } static ChipDescriptor *lookup_known_chips(const sensors_chip_name *chip) @@ -184,7 +186,7 @@ static ChipDescriptor *lookup_known_chip static int applyToFeatures(FeatureFN fn, void *data) { - int i, i_detected, ret; + int i, i_detected, ret, labelOffset = 0; const sensors_chip_name *chip, *chip_arg; ChipDescriptor *desc; @@ -197,9 +199,10 @@ static int applyToFeatures(FeatureFN fn, if (!desc) continue; - ret = _applyToFeatures(fn, data, chip, desc); - if (ret) + ret = _applyToFeatures(fn, data, chip, desc, labelOffset); + if (ret < 0) return ret; + labelOffset += ret; } } return 0; -- Jean Delvare _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors