X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdisk.c;h=cfda63513ba75fa70e7753c482e4a36553afb2ef;hb=6ce52f70cc1e6450df3454f19743a29295b84050;hp=e01e15069b27c1e23aaa27ba545172a9b0e45a21;hpb=55ffaf9ad7c8b180ac0192adb1a6ff6adc72c5a3;p=collectd.git diff --git a/src/disk.c b/src/disk.c index e01e1506..cfda6351 100644 --- a/src/disk.c +++ b/src/disk.c @@ -695,7 +695,9 @@ static int disk_read(void) { numfields = strsplit(buffer, fields, 32); - if ((numfields != (14 + fieldshift)) && (numfields != 7)) + /* need either 7 fields (partition) + * or at least 14 fields (15 on Linux 2.4) */ + if ((numfields != 7) && (numfields < (14 + fieldshift))) continue; minor = atoll(fields[1]); @@ -729,7 +731,8 @@ static int disk_read(void) { read_sectors = atoll(fields[4]); write_ops = atoll(fields[5]); write_sectors = atoll(fields[6]); - } else if (numfields == (14 + fieldshift)) { + } else { + assert(numfields >= (14 + fieldshift)); read_ops = atoll(fields[3 + fieldshift]); write_ops = atoll(fields[7 + fieldshift]); @@ -748,9 +751,6 @@ static int disk_read(void) { io_time = atof(fields[12 + fieldshift]); weighted_time = atof(fields[13 + fieldshift]); } - } else { - DEBUG("numfields = %i; => unknown file format.", numfields); - continue; } {