[prev in list] [next in list] [prev in thread] [next in thread]
List: collectd
Subject: [collectd] [PATCH] configfile: Added the "env" configuration option.
From: Sebastian Harl <sh () tokkee ! org>
Date: 2008-05-20 9:04:25
Message-ID: 20080520090425.GJ10932 () albany ! tokkee ! org
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
This option adds or modifies environment variables. This might be useful
e.g. when using the "dektop_notification" plugin to set DISPLAY and
XAUTHORITY so that collectd can access the X server.
Signed-off-by: Sebastian Harl <sh@tokkee.org>
---
src/collectd.conf.in | 2 ++
src/collectd.conf.pod | 4 ++++
src/configfile.c | 29 +++++++++++++++++++++++++++++
3 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/collectd.conf.in b/src/collectd.conf.in
index eaa3de1..d5cb81a 100644
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
@@ -4,6 +4,8 @@
# http://collectd.org/
#
+#env "DISPLAY" "localhost:0.0"
+
#Hostname "localhost"
FQDNLookup true
#BaseDir "@prefix@/var/lib/@PACKAGE_NAME@"
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index 2c4ff46..5e9db9e 100644
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
@@ -42,6 +42,10 @@ B<before> the C<E<lt>Plugin ...E<gt>> block.
=over 4
+=item B<env> I<name> I<value>
+
+Add or modify the environment variable I<name>. The value is set to I<value>.
+
=item B<BaseDir> I<Directory>
Sets the base directory. This is the directory beneath all RRD-files are
diff --git a/src/configfile.c b/src/configfile.c
index 2afef4f..cf67196 100644
--- a/src/configfile.c
+++ b/src/configfile.c
@@ -72,6 +72,7 @@ typedef struct cf_global_option_s
/*
* Prototypes of callback functions
*/
+static int dispatch_value_env (const oconfig_item_t *ci);
static int dispatch_value_typesdb (const oconfig_item_t *ci);
static int dispatch_value_plugindir (const oconfig_item_t *ci);
static int dispatch_value_loadplugin (const oconfig_item_t *ci);
@@ -84,6 +85,7 @@ static cf_complex_callback_t *complex_callback_head = NULL;
static cf_value_map_t cf_value_map[] =
{
+ {"env", dispatch_value_env},
{"TypesDB", dispatch_value_typesdb},
{"PluginDir", dispatch_value_plugindir},
{"LoadPlugin", dispatch_value_loadplugin}
@@ -196,6 +198,33 @@ static int dispatch_global_option (const oconfig_item_t *ci)
return (-1);
} /* int dispatch_global_option */
+static int dispatch_value_env (const oconfig_item_t *ci)
+{
+ char *name = NULL;
+ char *value = NULL;
+
+ assert (strcasecmp (ci->key, "env") == 0);
+
+ if ((ci->values_num != 2)
+ || (ci->values[0].type != OCONFIG_TYPE_STRING)
+ || (ci->values[1].type != OCONFIG_TYPE_STRING)) {
+ ERROR ("configfile: `env' needs exactly two string arguments.");
+ return (-1);
+ }
+
+ name = ci->values[0].value.string;
+ value = ci->values[1].value.string;
+
+ if (setenv (name, value, 1 /* overwrite */) != 0)
+ {
+ char errbuf[1024];
+ ERROR ("configfile: Failed to set environment variable `%s': %s",
+ name, sstrerror (errno, errbuf, sizeof (errbuf)));
+ return (-1);
+ }
+ return (0);
+} /* int dispatch_value_env */
+
static int dispatch_value_typesdb (const oconfig_item_t *ci)
{
int i = 0;
--
1.5.5.1.316.g377d9
["signature.asc" (application/pgp-signature)]
_______________________________________________
collectd mailing list
collectd@verplant.org
http://mailman.verplant.org/listinfo/collectd
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic