diff --git a/lib/access.c b/lib/access.c index b4605663..96b8195a 100644 --- a/lib/access.c +++ b/lib/access.c @@ -256,7 +256,7 @@ int sensors_get_value(const sensors_chip_name *name, int subfeat_nr, } } - if (sensors_read_sysfs_attr(name, subfeat_nr, &val)) + if (sensors_read_sysfs_attr(name, subfeature, &val)) return -SENSORS_ERR_PROC; if (!expr) *result = val; @@ -306,7 +306,7 @@ int sensors_set_value(const sensors_chip_name *name, int subfeat_nr, if (expr) if ((res = sensors_eval_expr(name, expr, value, &to_write))) return res; - if (sensors_write_sysfs_attr(name, subfeat_nr, to_write)) + if (sensors_write_sysfs_attr(name, subfeature, to_write)) return -SENSORS_ERR_PROC; return 0; } diff --git a/lib/sysfs.c b/lib/sysfs.c index f96cee95..a700bea0 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -541,16 +541,13 @@ exit0: return ret; } -int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_read_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double *value) { - const sensors_subfeature *subfeature; char n[NAME_MAX]; FILE *f; - if (!(subfeature = sensors_lookup_subfeature_nr(name, subfeat_nr))) - return -SENSORS_ERR_NO_ENTRY; - snprintf(n, NAME_MAX, "%s/%s", name->path, subfeature->name); if ((f = fopen(n, "r"))) { int res = fscanf(f, "%lf", value); @@ -564,16 +561,13 @@ int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, return 0; } -int sensors_write_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_write_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double value) { - const sensors_subfeature *subfeature; char n[NAME_MAX]; FILE *f; - if (!(subfeature = sensors_lookup_subfeature_nr(name, subfeat_nr))) - return -SENSORS_ERR_NO_ENTRY; - snprintf(n, NAME_MAX, "%s/%s", name->path, subfeature->name); if ((f = fopen(n, "w"))) { value *= get_type_scaling(subfeature->type); diff --git a/lib/sysfs.h b/lib/sysfs.h index f90a7ae5..f547bd7d 100644 --- a/lib/sysfs.h +++ b/lib/sysfs.h @@ -29,11 +29,13 @@ int sensors_read_sysfs_chips(void); int sensors_read_sysfs_bus(void); /* Read a value out of a sysfs attribute file */ -int sensors_read_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_read_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double *value); /* Write a value to a sysfs attribute file */ -int sensors_write_sysfs_attr(const sensors_chip_name *name, int subfeat_nr, +int sensors_write_sysfs_attr(const sensors_chip_name *name, + const sensors_subfeature *subfeature, double value); #endif /* !SENSORS_LIB_SYSFS_H */