diff --git a/src/sensors.c b/src/sensors.c
index 4dd826e2907fdb94cc941a713e955591de83a40b..7cf787c7a8b155b9a74f1398a2e4c550f42372bc 100644 (file)
--- a/src/sensors.c
+++ b/src/sensors.c
#include "common.h"
#include "plugin.h"
#include "configfile.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 char **sensor_list = NULL;
-static int sensor_list_num = 0;
-/*
- * sensor_list_action:
- * 0 => default is to collect selected sensors
- * 1 => ignore selected sensors
- */
-static int sensor_list_action = 0;
+static ignorelist_t *sensor_list;
+
/*
* sensor_extended_naming:
* 0 => default is to create chip-feature
static int sensors_config (char *key, char *value)
{
- char **temp;
+ if (sensor_list == NULL)
+ sensor_list = ignorelist_create (1);
if (strcasecmp (key, "Sensor") == 0)
{
- temp = (char **) realloc (sensor_list, (sensor_list_num + 1) * sizeof (char *));
- if (temp == NULL)
+ if (ignorelist_add (sensor_list, value))
{
- syslog (LOG_EMERG, "Cannot allocate more memory.");
+ syslog (LOG_EMERG, "Cannot add value to ignorelist.");
return (1);
}
- sensor_list = temp;
-
- if ((sensor_list[sensor_list_num] = strdup (value)) == NULL)
- {
- syslog (LOG_EMERG, "Cannot allocate memory.");
- return (1);
- }
- sensor_list_num++;
}
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))
- sensor_list_action = 1;
- else
- sensor_list_action = 0;
+ ignorelist_set_invert (sensor_list, 0);
}
else if (strcasecmp (key, "ExtendedSensorNaming") == 0)
{
return (0);
}
-/*
- * Check if this feature should be ignored. This is called from
- * both, `submit' and `write' to give client and server
- * the ability to ignore certain stuff...
- */
-static int config_get_ignored (const char *inst)
-{
- int i;
-
- /* If no ignored are given collect all features. */
- if (sensor_list_num < 1)
- return (0);
-
- for (i = 0; i < sensor_list_num; i++)
- if (strcasecmp (inst, sensor_list[i]) == 0)
- return (sensor_list_action);
- return (1 - sensor_list_action);
-}
-
static void collectd_sensors_init (void)
{
#ifdef HAVE_LIBSENSORS
int status;
/* skip ignored in our config */
- if (config_get_ignored (inst))
+ if (ignorelist_match (sensor_list, inst))
return;
/* extended sensor naming */
int status;
/* skip ignored in our config */
- if (config_get_ignored (inst))
+ if (ignorelist_match (sensor_list, inst))
return;
/* extended sensor naming */
return;
/* skip ignored in our config */
- if (config_get_ignored (inst))
+ if (ignorelist_match (sensor_list, inst))
return;
if (snprintf (buf, BUFSIZE, "%u:%.3f", (unsigned int) curtime,