Code

src/plugin.c: Move the perl and python "global" magic to plugin_load().
authorFlorian Forster <octo@collectd.org>
Sat, 25 May 2013 08:31:54 +0000 (10:31 +0200)
committerFlorian Forster <octo@collectd.org>
Sat, 25 May 2013 08:31:54 +0000 (10:31 +0200)
The config file handling is really not the best place to have this. Also,
the feature I'm working on would have to copy this magic if left in the
config code, and I *really* don't want that.

src/configfile.c
src/plugin.c

index ac5e8edcb94f2bfda66c5eefab67dfab3c66e6db..e680aba771bf13b3b0bf76582f0019e1a78779f2 100644 (file)
@@ -277,21 +277,6 @@ static int dispatch_loadplugin (const oconfig_item_t *ci)
        memset (&ctx, 0, sizeof (ctx));
        ctx.interval = cf_get_default_interval ();
 
-       /*
-        * XXX: Magic at work:
-        *
-        * Some of the language bindings, for example the Python and Perl
-        * plugins, need to be able to export symbols to the scripts they run.
-        * For this to happen, the "Globals" flag needs to be set.
-        * Unfortunately, this technical detail is hard to explain to the
-        * average user and she shouldn't have to worry about this, ideally.
-        * So in order to save everyone's sanity use a different default for a
-        * handful of special plugins. --octo
-        */
-       if ((strcasecmp ("Perl", name) == 0)
-                       || (strcasecmp ("Python", name) == 0))
-               flags |= PLUGIN_FLAGS_GLOBAL;
-
        for (i = 0; i < ci->children_num; ++i) {
                if (strcasecmp("Globals", ci->children[i].key) == 0)
                        cf_util_get_flag (ci->children + i, &flags, PLUGIN_FLAGS_GLOBAL);
index 386be3262e029f1f1e2734aba154031cf8df0cf7..894b0e51d72731ba1f7faab5c032a122063e85be 100644 (file)
@@ -901,6 +901,21 @@ int plugin_load (char const *plugin_name, uint32_t flags)
        dir = plugin_get_dir ();
        ret = 1;
 
+       /*
+        * XXX: Magic at work:
+        *
+        * Some of the language bindings, for example the Python and Perl
+        * plugins, need to be able to export symbols to the scripts they run.
+        * For this to happen, the "Globals" flag needs to be set.
+        * Unfortunately, this technical detail is hard to explain to the
+        * average user and she shouldn't have to worry about this, ideally.
+        * So in order to save everyone's sanity use a different default for a
+        * handful of special plugins. --octo
+        */
+       if ((strcasecmp ("perl", plugin_name) == 0)
+                       || (strcasecmp ("python", plugin_name) == 0))
+               flags |= PLUGIN_FLAGS_GLOBAL;
+
        /* `cpu' should not match `cpufreq'. To solve this we add `.so' to the
         * type when matching the filename */
        status = ssnprintf (typename, sizeof (typename), "%s.so", plugin_name);