--- a/src/ubi.c +++ b/src/ubi.c @@ -84,9 +84,8 @@ static void ubi_submit(const char *dev_n plugin_dispatch_values(&vl); } /* void ubi_submit */ -static int ubi_read_dev_attr(const char *dev_name, const char *attr) { +static int ubi_read_dev_attr(const char *dev_name, const char *attr, int *value) { FILE *f; - int val; char str[sizeof(SYS_PATH) + strlen(dev_name) + sizeof("/") + strlen(attr) + 1]; int n; @@ -98,7 +97,7 @@ static int ubi_read_dev_attr(const char return -1; } - n = fscanf(f, "%d", &val); + n = fscanf(f, "%d", value); fclose(f); if (n != 1) { @@ -106,17 +105,39 @@ static int ubi_read_dev_attr(const char return -1; } - ubi_submit(dev_name, attr, (gauge_t)val); - return 0; } /* int ubi_read_dev_attr */ static inline int ubi_read_dev_bad_count(const char *dev_name) { - return ubi_read_dev_attr(dev_name, DEV_BAD_COUNT); + int ret; + int value; + + ret = ubi_read_dev_attr(dev_name, DEV_BAD_COUNT, &value); + + if (ret != 0) { + ERROR(PLUGIN_NAME " : Unable to read bat_peb_count"); + return -1; + } + + ubi_submit(dev_name, DEV_BAD_COUNT, (gauge_t)value); + + return 0; } /* int ubi_read_dev_bad_count */ static inline int ubi_read_max_ec(const char *dev_name) { - return ubi_read_dev_attr(dev_name, MAXIMUM_ERASE); + int ret; + int value; + + ret = ubi_read_dev_attr(dev_name, MAXIMUM_ERASE, &value); + + if (ret != 0) { + ERROR(PLUGIN_NAME " : Unable to read max_ec"); + return -1; + } + + ubi_submit(dev_name, MAXIMUM_ERASE, (gauge_t)value); + + return 0; } /* int ubi_read_max_ec */ static int ubi_read(void) {