projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
modbus plugin: Make sure variable is initialized.
[collectd.git]
/
src
/
daemon
/
configfile.c
diff --git
a/src/daemon/configfile.c
b/src/daemon/configfile.c
index
02fd96f
..
765a23c
100644
(file)
--- a/
src/daemon/configfile.c
+++ b/
src/daemon/configfile.c
@@
-73,7
+73,7
@@
typedef struct cf_complex_callback_s
typedef struct cf_value_map_s
{
char *key;
typedef struct cf_value_map_s
{
char *key;
- int (*func) (
const
oconfig_item_t *);
+ int (*func) (oconfig_item_t *);
} cf_value_map_t;
typedef struct cf_global_option_s
} cf_value_map_t;
typedef struct cf_global_option_s
@@
-86,9
+86,10
@@
typedef struct cf_global_option_s
/*
* Prototypes of callback functions
*/
/*
* Prototypes of callback functions
*/
-static int dispatch_value_typesdb (const oconfig_item_t *ci);
-static int dispatch_value_plugindir (const oconfig_item_t *ci);
-static int dispatch_loadplugin (const oconfig_item_t *ci);
+static int dispatch_value_typesdb (oconfig_item_t *ci);
+static int dispatch_value_plugindir (oconfig_item_t *ci);
+static int dispatch_loadplugin (oconfig_item_t *ci);
+static int dispatch_block_plugin (oconfig_item_t *ci);
/*
* Private variables
/*
* Private variables
@@
-100,7
+101,8
@@
static cf_value_map_t cf_value_map[] =
{
{"TypesDB", dispatch_value_typesdb},
{"PluginDir", dispatch_value_plugindir},
{
{"TypesDB", dispatch_value_typesdb},
{"PluginDir", dispatch_value_plugindir},
- {"LoadPlugin", dispatch_loadplugin}
+ {"LoadPlugin", dispatch_loadplugin},
+ {"Plugin", dispatch_block_plugin}
};
static int cf_value_map_num = STATIC_ARRAY_SIZE (cf_value_map);
};
static int cf_value_map_num = STATIC_ARRAY_SIZE (cf_value_map);
@@
-225,7
+227,7
@@
static int dispatch_global_option (const oconfig_item_t *ci)
return (-1);
} /* int dispatch_global_option */
return (-1);
} /* int dispatch_global_option */
-static int dispatch_value_typesdb (
const
oconfig_item_t *ci)
+static int dispatch_value_typesdb (oconfig_item_t *ci)
{
int i = 0;
{
int i = 0;
@@
-251,7
+253,7
@@
static int dispatch_value_typesdb (const oconfig_item_t *ci)
return (0);
} /* int dispatch_value_typesdb */
return (0);
} /* int dispatch_value_typesdb */
-static int dispatch_value_plugindir (
const
oconfig_item_t *ci)
+static int dispatch_value_plugindir (oconfig_item_t *ci)
{
assert (strcasecmp (ci->key, "PluginDir") == 0);
{
assert (strcasecmp (ci->key, "PluginDir") == 0);
@@
-264,7
+266,7
@@
static int dispatch_value_plugindir (const oconfig_item_t *ci)
return (0);
}
return (0);
}
-static int dispatch_loadplugin (
const
oconfig_item_t *ci)
+static int dispatch_loadplugin (oconfig_item_t *ci)
{
int i;
const char *name;
{
int i;
const char *name;
@@
-348,7
+350,7
@@
static int dispatch_value_plugin (const char *plugin, oconfig_item_t *ci)
return (cf_dispatch (plugin, ci->key, buffer_ptr));
} /* int dispatch_value_plugin */
return (cf_dispatch (plugin, ci->key, buffer_ptr));
} /* int dispatch_value_plugin */
-static int dispatch_value (
const
oconfig_item_t *ci)
+static int dispatch_value (oconfig_item_t *ci)
{
int ret = -2;
int i;
{
int ret = -2;
int i;
@@
-397,9
+399,19
@@
static int dispatch_block_plugin (oconfig_item_t *ci)
if (IS_TRUE (global_option_get ("AutoLoadPlugin")))
{
if (IS_TRUE (global_option_get ("AutoLoadPlugin")))
{
+ plugin_ctx_t ctx;
+ plugin_ctx_t old_ctx;
int status;
int status;
+ /* default to the global interval set before loading this plugin */
+ memset (&ctx, 0, sizeof (ctx));
+ ctx.interval = cf_get_default_interval ();
+
+ old_ctx = plugin_set_ctx (ctx);
status = plugin_load (name, /* flags = */ 0);
status = plugin_load (name, /* flags = */ 0);
+ /* reset to the "global" context */
+ plugin_set_ctx (old_ctx);
+
if (status != 0)
{
ERROR ("Automatically loading plugin \"%s\" failed "
if (status != 0)
{
ERROR ("Automatically loading plugin \"%s\" failed "