lmsensor init/cleanup moved from main.c to lmsensor.c and called in psensor.c
[psensor.git] / src / lib / lmsensor.c
index 65c41d1..df788f6 100644 (file)
@@ -30,6 +30,8 @@
 
 #include "psensor.h"
 
+static int init_done;
+
 static double get_value(const sensors_chip_name *name,
                        const sensors_subfeature *sub)
 {
@@ -80,6 +82,9 @@ void lmsensor_psensor_list_update(struct psensor **sensors)
 {
        struct psensor **s_ptr = sensors;
 
+       if (!init_done)
+               return ;
+
        while (*s_ptr) {
                struct psensor *sensor = *s_ptr;
 
@@ -156,20 +161,6 @@ lmsensor_psensor_create(const sensors_chip_name *chip,
        return psensor;
 }
 
-int lmsensor_init()
-{
-       int err = sensors_init(NULL);
-
-       if (err) {
-               fprintf(stderr,
-                       _("ERROR: lm-sensors initialization failure: %s\n"),
-                       sensors_strerror(err));
-               return 0;
-       } else {
-               return 1;
-       }
-}
-
 struct psensor **lmsensor_psensor_list_add(struct psensor **sensors,
                                           int vn)
 {
@@ -180,6 +171,9 @@ struct psensor **lmsensor_psensor_list_add(struct psensor **sensors,
        struct psensor *s;
        int i;
 
+       if (!init_done)
+               return ;
+
        result = sensors;
        while ((chip = sensors_get_detected_chips(NULL, &chip_nr))) {
 
@@ -205,3 +199,23 @@ struct psensor **lmsensor_psensor_list_add(struct psensor **sensors,
 
        return result;
 }
+
+void lmsensor_init()
+{
+       int err = sensors_init(NULL);
+
+       if (err) {
+               fprintf(stderr,
+                       _("ERROR: lm-sensors initialization failure: %s\n"),
+                       sensors_strerror(err));
+               init_done = 0;
+       } else {
+               init_done = 1;
+       }
+}
+
+void lmsensor_cleanup()
+{
+       if (init_done)
+               sensors_cleanup();
+}