#include <errno.h>
#include <fcntl.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
return strlen(p) == 8 && !strncmp(p, "/dev/sd", 7);
}
+static void provider_data_free(void *data)
+{
+ sk_disk_free((SkDisk *)data);
+}
+
+static SkDisk *get_disk(struct psensor *s)
+{
+ return (SkDisk *)s->provider_data;
+}
+
static struct psensor *
create_sensor(char *id, char *name, SkDisk *disk, int values_max_length)
{
t,
values_max_length);
- s->disk = disk;
+ s->provider_data = disk;
+ s->provider_data_free_fct = &provider_data_free;
return s;
}
uint64_t kelvin;
int ret;
double c;
+ SkDisk *disk;
+
+ if (!sensors)
+ return;
cur = sensors;
while (*cur) {
s = *cur;
if (!(s->type & SENSOR_TYPE_REMOTE)
&& s->type & SENSOR_TYPE_ATASMART) {
- ret = sk_disk_smart_read_data(s->disk);
+ disk = get_disk(s);
+
+ ret = sk_disk_smart_read_data(disk);
if (!ret) {
- ret = sk_disk_smart_get_temperature(s->disk,
+ ret = sk_disk_smart_get_temperature(disk,
&kelvin);
if (!ret) {