From 24db3832cf2d74fe5425de379d10dc73d141c2f9 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sun, 17 Feb 2008 20:22:49 +0100 Subject: [PATCH] hddtemp plugin, collectd.conf(5): Added "TranslateDevicename" config option. If enabled, translate the disk names to major/minor device numbers. For backwards compatibility this defaults to true but it it recommended to disable it as it will probably be removed in the next major version. Any other parts of collectd have changed in a similar way with version 4.0, so hddtemp should do so as well. This option is disabled in new versions of the config file. Signed-off-by: Sebastian Harl Signed-off-by: Florian Forster --- src/collectd.conf.in | 5 +++-- src/collectd.conf.pod | 7 +++++++ src/hddtemp.c | 27 +++++++++++++++++++-------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/collectd.conf.in b/src/collectd.conf.in index 93b97be3..2554d60a 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -102,10 +102,11 @@ FQDNLookup true # Exec "user:group" "/path/to/exec" # -# +@BUILD_PLUGIN_HDDTEMP_TRUE@ # Host "127.0.0.1" # Port "7634" -# +@BUILD_PLUGIN_HDDTEMP_TRUE@ TranslateDevicename false +@BUILD_PLUGIN_HDDTEMP_TRUE@ # # Interface "eth0" diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 7e05bdbe..ac85e477 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -342,6 +342,13 @@ Hostname to connect to. Defaults to B<127.0.0.1>. TCP-Port to connect to. Defaults to B<7634>. +=item B I|I + +If enabled, translate the disk names to major/minor device numbers +(e.Eg. "8-0" for /dev/sda). For backwards compatibility this defaults to +I but it's recommended to disable it as it will probably be removed in +the next major version. + =back =head2 Plugin C diff --git a/src/hddtemp.c b/src/hddtemp.c index 0a93920b..8c4bc4aa 100644 --- a/src/hddtemp.c +++ b/src/hddtemp.c @@ -48,9 +48,9 @@ static const char *config_keys[] = { "Host", "Port", - NULL + "TranslateDevicename" }; -static int config_keys_num = 2; +static int config_keys_num = STATIC_ARRAY_SIZE (config_keys); typedef struct hddname { @@ -63,6 +63,7 @@ typedef struct hddname static hddname_t *first_hddname = NULL; static char *hddtemp_host = NULL; static char hddtemp_port[16]; +static int translate_devicename = 1; /* * NAME @@ -223,6 +224,15 @@ static int hddtemp_config (const char *key, const char *value) strncpy (hddtemp_port, value, sizeof (hddtemp_port)); hddtemp_port[sizeof (hddtemp_port) - 1] = '\0'; } + else if (strcasecmp (key, "TranslateDevicename") == 0) + { + if ((strcasecmp ("true", value) == 0) + || (strcasecmp ("yes", value) == 0) + || (strcasecmp ("on", value) == 0)) + translate_devicename = 1; + else + translate_devicename = 0; + } else { return (-1); @@ -388,14 +398,14 @@ static int hddtemp_init (void) } /* int hddtemp_init */ /* - * hddtemp_get_name + * hddtemp_get_major_minor * * Description: * Try to "cook" a bit the drive name as returned * by the hddtemp daemon. The intend is to transform disk * names into - when possible. */ -static char *hddtemp_get_name (char *drive) +static char *hddtemp_get_major_minor (char *drive) { hddname_t *list; char *ret; @@ -470,7 +480,7 @@ static int hddtemp_read (void) for (i = 0; i < num_disks; i++) { - char *name, *submit_name; + char *name, *major_minor; double temperature; char *mode; @@ -487,10 +497,11 @@ static int hddtemp_read (void) if (mode[0] == 'F') temperature = (temperature - 32.0) * 5.0 / 9.0; - if ((submit_name = hddtemp_get_name (name)) != NULL) + if (translate_devicename + && (major_minor = hddtemp_get_major_minor (name)) != NULL) { - hddtemp_submit (submit_name, temperature); - free (submit_name); + hddtemp_submit (major_minor, temperature); + free (major_minor); } else { -- 2.30.2