diff --git a/src/sensors.c b/src/sensors.c
index c60f2914e1d32e793c314aaf0909a8907d5feea6..ff8b580de0a688e51bf6e02c6541de1d636b54ca 100644 (file)
--- a/src/sensors.c
+++ b/src/sensors.c
#include "common.h"
#include "plugin.h"
#include "configfile.h"
-#include "config_list.h"
+#include "utils_ignorelist.h"
#include "utils_debug.h"
#define MODULE_NAME "sensors"
#define SENSOR_TYPE_FANSPEED 2
#define SENSOR_TYPE_TEMPERATURE 3
+#if SENSORS_HAVE_READ
static char *sensor_type_prefix[] =
{
"unknown",
"temperature",
NULL
};
+#endif
typedef struct sensors_labeltypes {
char *label;
/*
* finite list of known labels extracted from lm_sensors
*/
+#if SENSORS_HAVE_READ
static sensors_labeltypes known_features[] =
{
{ "fan1", SENSOR_TYPE_FANSPEED },
{ "12V", SENSOR_TYPE_VOLTAGE },
{ 0, -1 }
};
+#endif
/* end new naming */
static char *config_keys[] =
};
static int config_keys_num = 3;
-static configlist_t *sensor_list;
+static ignorelist_t *sensor_list;
/*
* sensor_extended_naming:
*/
static int sensor_extended_naming = 0;
-#ifdef HAVE_LIBSENSORS
+#if SENSORS_HAVE_READ
typedef struct featurelist
{
const sensors_chip_name *chip;
} featurelist_t;
featurelist_t *first_feature = NULL;
-#endif /* defined (HAVE_LIBSENSORS) */
+#endif /* if SENSORS_HAVE_READ */
static int sensors_config (char *key, char *value)
{
if (sensor_list == NULL)
- sensor_list = configlist_init();
+ sensor_list = ignorelist_create (1);
if (strcasecmp (key, "Sensor") == 0)
{
- if (!configlist_add (sensor_list, value))
+ if (ignorelist_add (sensor_list, value))
{
- syslog (LOG_EMERG, "Cannot add value.");
+ syslog (LOG_EMERG, "Cannot add value to ignorelist.");
return (1);
}
}
else if (strcasecmp (key, "IgnoreSelected") == 0)
{
+ ignorelist_set_invert (sensor_list, 1);
if ((strcasecmp (value, "True") == 0)
|| (strcasecmp (value, "Yes") == 0)
|| (strcasecmp (value, "On") == 0))
- configlist_ignore (sensor_list, 1);
+ ignorelist_set_invert (sensor_list, 0);
}
else if (strcasecmp (key, "ExtendedSensorNaming") == 0)
{
static void collectd_sensors_init (void)
{
-#ifdef HAVE_LIBSENSORS
+#if SENSORS_HAVE_READ
FILE *fh;
featurelist_t *last_feature = NULL;
featurelist_t *new_feature;
if (first_feature == NULL)
sensors_cleanup ();
-#endif /* defined(HAVE_LIBSENSORS) */
+#endif /* if SENSORS_HAVE_READ */
return;
}
+static void sensors_shutdown (void)
+{
+#if SENSORS_HAVE_READ
+ featurelist_t *thisft = first_feature;
+ featurelist_t *nextft;
+
+ while (thisft != NULL)
+ {
+ nextft = thisft->next;
+ sfree (thisft);
+ thisft = nextft;
+ }
+
+ sensors_cleanup ();
+#endif /* if SENSORS_HAVE_READ */
+
+ ignorelist_free (sensor_list);
+}
+
static void sensors_voltage_write (char *host, char *inst, char *val)
{
char file[BUFSIZE];
int status;
/* skip ignored in our config */
- if (configlist_ignored (sensor_list, inst))
+ if (ignorelist_match (sensor_list, inst))
return;
/* extended sensor naming */
int status;
/* skip ignored in our config */
- if (configlist_ignored (sensor_list, inst))
+ if (ignorelist_match (sensor_list, inst))
return;
/* extended sensor naming */
return;
/* skip ignored in our config */
- if (configlist_ignored (sensor_list, inst))
+ if (ignorelist_match (sensor_list, inst))
return;
if (snprintf (buf, BUFSIZE, "%u:%.3f", (unsigned int) curtime,
{
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);
}