lmsensor init/cleanup moved from main.c to lmsensor.c and called in psensor.c
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 16 Jul 2011 22:05:23 +0000 (22:05 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 16 Jul 2011 22:05:23 +0000 (22:05 +0000)
src/lib/lmsensor.c
src/lib/lmsensor.h
src/lib/psensor.c
src/lib/psensor.h
src/main.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();
+}
index 5472db3..dce95a3 100644 (file)
@@ -25,7 +25,6 @@
 struct psensor *lmsensor_psensor_create(const sensors_chip_name *chip,
                                        const sensors_feature *feature,
                                        int values_max_length);
-int lmsensor_init();
 void lmsensor_psensor_list_update(struct psensor **sensors);
 
 /*
@@ -37,6 +36,7 @@ void lmsensor_psensor_list_update(struct psensor **sensors);
 struct psensor **lmsensor_psensor_list_add(struct psensor **sensors,
                                           int values_max_length);
 
-
+void lmsensor_init();
+void lmsensor_cleanup();
 
 #endif
index 7dcb85d..128dc02 100644 (file)
@@ -428,3 +428,13 @@ void psensor_list_update_measures(struct psensor **sensors)
        if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDD_TEMP))
                hdd_psensor_list_update(sensors);
 }
+
+void psensor_init()
+{
+       lmsensor_init();
+}
+
+void psensor_cleanup()
+{
+       lmsensor_cleanup();
+}
index 65a0b59..06df8cf 100644 (file)
@@ -159,4 +159,8 @@ const char *psensor_type_to_unit_str(unsigned int type);
 
 void psensor_list_update_measures(struct psensor **sensors);
 
+void psensor_init();
+
+void psensor_cleanup();
+
 #endif
index 51b4a1b..da7fdef 100644 (file)
@@ -27,9 +27,6 @@
 
 #include <gtk/gtk.h>
 
-#include <sensors/sensors.h>
-#include <sensors/error.h>
-
 #include "config.h"
 
 #include "cfg.h"
@@ -287,7 +284,7 @@ int main(int argc, char **argv)
        struct ui_psensor ui;
        GError *error;
        GThread *thread;
-       int err, optc;
+       int optc;
        char *url = NULL;
        int cmdok = 1;
 
@@ -341,12 +338,7 @@ int main(int argc, char **argv)
 
        ui.config = config_load();
 
-       err = lmsensor_init();
-       if (!err) {
-               fprintf(stderr, _("ERROR: lmsensor init failure: %s\n"),
-                       sensors_strerror(err));
-               exit(EXIT_FAILURE);
-       }
+       psensor_init();
 
        if (url) {
 #ifdef HAVE_REMOTE_SUPPORT
@@ -397,7 +389,7 @@ int main(int argc, char **argv)
        /* main loop */
        gtk_main();
 
-       sensors_cleanup();
+       psensor_cleanup();
 
        psensor_list_free(ui.sensors);