projects
/
psensor-pkg-debian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Upstream version 1.2.0
[psensor-pkg-debian.git]
/
src
/
lib
/
hdd_atasmart.c
diff --git
a/src/lib/hdd_atasmart.c
b/src/lib/hdd_atasmart.c
index
0fd7d5d
..
402c92e
100644
(file)
--- a/
src/lib/hdd_atasmart.c
+++ b/
src/lib/hdd_atasmart.c
@@
-25,6
+25,7
@@
#include <errno.h>
#include <fcntl.h>
#include <errno.h>
#include <fcntl.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
@@
-46,6
+47,16
@@
static int filter_sd(const char *p)
return strlen(p) == 8 && !strncmp(p, "/dev/sd", 7);
}
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)
{
static struct psensor *
create_sensor(char *id, char *name, SkDisk *disk, int values_max_length)
{
@@
-60,7
+71,8
@@
create_sensor(char *id, char *name, SkDisk *disk, int values_max_length)
t,
values_max_length);
t,
values_max_length);
- s->disk = disk;
+ s->provider_data = disk;
+ s->provider_data_free_fct = &provider_data_free;
return s;
}
return s;
}
@@
-158,16
+170,22
@@
void atasmart_psensor_list_update(struct psensor **sensors)
uint64_t kelvin;
int ret;
double c;
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) {
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) {
if (!ret) {
- ret = sk_disk_smart_get_temperature(
s->
disk,
+ ret = sk_disk_smart_get_temperature(disk,
&kelvin);
if (!ret) {
&kelvin);
if (!ret) {