Merge branch 'ls/shutdown'
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 5 Dec 2006 17:08:15 +0000 (18:08 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 5 Dec 2006 17:08:15 +0000 (18:08 +0100)
src/sensors.c

index 7cf787c..352ecf7 100644 (file)
@@ -178,7 +178,7 @@ static ignorelist_t *sensor_list;
  */
 static int sensor_extended_naming = 0;
 
-#ifdef HAVE_LIBSENSORS
+#if SENSORS_HAVE_READ
 typedef struct featurelist
 {
        const sensors_chip_name    *chip;
@@ -188,7 +188,7 @@ typedef struct featurelist
 } featurelist_t;
 
 featurelist_t *first_feature = NULL;
-#endif /* defined (HAVE_LIBSENSORS) */
+#endif /* if SENSORS_HAVE_READ */
 
 static int sensors_config (char *key, char *value)
 {
@@ -230,7 +230,7 @@ static int sensors_config (char *key, char *value)
 
 static void collectd_sensors_init (void)
 {
-#ifdef HAVE_LIBSENSORS
+#if SENSORS_HAVE_READ
        FILE *fh;
        featurelist_t *last_feature = NULL;
        featurelist_t *new_feature;
@@ -330,11 +330,30 @@ static void collectd_sensors_init (void)
 
        if (first_feature == NULL)
                sensors_cleanup ();
-#endif /* defined(HAVE_LIBSENSORS) */
+#endif /* if SENSORS_HAVE_READ */
 
        return;
 }
 
+static void sensors_shutdown (void)
+{
+       featurelist_t *thisft = first_feature;
+       featurelist_t *nextft;
+
+       ignorelist_free (sensor_list);
+
+#if SENSORS_HAVE_READ
+       while (thisft != NULL)
+       {
+               nextft = thisft->next;
+               sfree (thisft);
+               thisft = nextft;
+       }
+
+       sensors_cleanup ();
+#endif /* if SENSORS_HAVE_READ */
+}
+
 static void sensors_voltage_write (char *host, char *inst, char *val)
 {
        char file[BUFSIZE];
@@ -474,6 +493,7 @@ void module_register (void)
 {
        plugin_register (MODULE_NAME, collectd_sensors_init, sensors_read, sensors_write);
        plugin_register (MODULE_NAME_VOLTAGE, NULL, NULL, sensors_voltage_write);
+       plugin_register_shutdown (MODULE_NAME, sensors_shutdown);
        cf_register (MODULE_NAME, sensors_config, config_keys, config_keys_num);
 }