Fixed restoration of the panel divider position.
[psensor.git] / src / lib / hdd_hddtemp.c
index e693bf4..68797e1 100644 (file)
@@ -48,15 +48,15 @@ struct hdd_info {
        int temp;
 };
 
-static char *fetch()
+static char *fetch(void)
 {
-       int sockfd;
+       int sockfd, output_length;
        ssize_t n = 1;
-       int output_length = 0;
-       char *pc;
-       char *buffer;
+       char *pc, *buffer;
        struct sockaddr_in address;
 
+       output_length = 0;
+
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if (sockfd == -1) {
                log_err(_("%s: failed to open socket."), PROVIDER_NAME);
@@ -177,8 +177,9 @@ static char *next_hdd_info(char *string, struct hdd_info *info)
 void
 hddtemp_psensor_list_append(struct psensor ***sensors, int values_max_length)
 {
-       char *hddtemp_output, *c;
+       char *hddtemp_output, *c, *id;
        struct hdd_info info;
+       struct psensor *sensor;
 
        hddtemp_output = fetch();
 
@@ -198,9 +199,6 @@ hddtemp_psensor_list_append(struct psensor ***sensors, int values_max_length)
        c = hddtemp_output;
 
        while (c && (c = next_hdd_info(c, &info))) {
-               struct psensor *sensor;
-               char *id;
-
                id = malloc(strlen(PROVIDER_NAME) + 1 + strlen(info.name) + 1);
                sprintf(id, "%s %s", PROVIDER_NAME, info.name);
 
@@ -225,10 +223,31 @@ static void update(struct psensor **sensors, struct hdd_info *info)
        }
 }
 
+static bool contains_hddtemp_sensor(struct psensor **sensors)
+{
+       struct psensor *s;
+
+       if (!sensors)
+               return false;
+
+       while (*sensors) {
+               s = *sensors;
+               if (!(s->type & SENSOR_TYPE_REMOTE)
+                    && (s->type & SENSOR_TYPE_HDDTEMP))
+                       return true;
+               sensors++;
+       }
+
+       return false;
+}
+
 void hddtemp_psensor_list_update(struct psensor **sensors)
 {
        char *hddtemp_output;
 
+       if (!contains_hddtemp_sensor(sensors))
+               return;
+
        hddtemp_output = fetch();
 
        if (!hddtemp_output)