From: Jean-Philippe Orsini Date: Mon, 9 Jan 2012 08:30:43 +0000 (+0000) Subject: work on libata support X-Git-Tag: v0.8.0.5~491 X-Git-Url: https://git.wpitchoune.net/gitweb/?p=psensor.git;a=commitdiff_plain;h=e98cd07e815b1fd4c2772c42f046ad26d64988ac work on libata support --- diff --git a/src/lib/hdd_atasmart.c b/src/lib/hdd_atasmart.c index 592fcbd..cb5200f 100644 --- a/src/lib/hdd_atasmart.c +++ b/src/lib/hdd_atasmart.c @@ -21,18 +21,67 @@ #define _(str) gettext(str) #include +#include + #include +#include "pio.h" #include "hdd.h" #include "log.h" +static int filter_sd(const char *p) +{ + return strlen(p) == 8 && !strncmp(p, "/dev/sd", 7); +} + +static struct psensor * +create_sensor(char *id, char *name, int values_max_length) +{ + return psensor_create(id, + strdup(name), + SENSOR_TYPE_HDD_TEMP, + values_max_length); +} + struct psensor **hdd_psensor_list_add(struct psensor **sensors, int values_max_length) { + char **paths, **tmp; + SkDisk *disk; + struct psensor *sensor, **tmp_sensors, **result; log_debug("hdd_psensor_list_add"); - return sensors; + paths = dir_list("/dev", filter_sd); + + result = sensors; + tmp = paths; + while (*tmp) { + log_debug("hdd_psensor_list_add open %s", tmp); + + if (!sk_disk_open(*tmp, &disk)) { + char *id = malloc(strlen("hdd at") + strlen(*tmp) + 1); + strcpy(id, "hdd at"); + strcat(id, *tmp); + + sensor = create_sensor(id, *tmp, values_max_length); + + tmp_sensors = psensor_list_add(result, sensor); + + if (result != sensors) + free(result); + + result = tmp_sensors; + } else { + log_err("Failed to open %s", *tmp); + } + + tmp++; + } + + paths_free(paths); + + return result; } void hdd_psensor_list_update(struct psensor **sensors) diff --git a/src/lib/psensor.h b/src/lib/psensor.h index a750bb1..968b4d4 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -22,6 +22,10 @@ #include "config.h" #include +#ifdef HAVE_ATASMART +#include +#endif + #include "color.h" #include "log.h" #include "measure.h" @@ -102,6 +106,9 @@ struct psensor { /* AMD id for the aticonfig */ int amd_id; #endif +#ifdef HAVE_ATASMART + SkDisk *disk; +#endif char *url; };