Merge branch 'collectd-5.0'
[collectd.git] / src / rrdcached.c
index a392715..11c1c6a 100644 (file)
@@ -49,6 +49,14 @@ static rrdcreate_config_t rrdcreate_config =
        /* consolidation_functions_num = */ 0
 };
 
+/*
+ * Prototypes.
+ */
+static int rc_write (const data_set_t *ds, const value_list_t *vl,
+    user_data_t __attribute__((unused)) *user_data);
+static int rc_flush (__attribute__((unused)) cdtime_t timeout,
+    const char *identifier, __attribute__((unused)) user_data_t *ud);
+
 static int value_list_to_string (char *buffer, int buffer_len,
     const data_set_t *ds, const value_list_t *vl)
 {
@@ -156,13 +164,20 @@ static int value_list_to_filename (char *buffer, int buffer_len,
 static const char *config_get_string (oconfig_item_t *ci)
 {
   if ((ci->children_num != 0) || (ci->values_num != 1)
-      || (ci->values[0].type != OCONFIG_TYPE_STRING))
+      || ((ci->values[0].type != OCONFIG_TYPE_STRING)
+        && (ci->values[0].type != OCONFIG_TYPE_BOOLEAN)))
   {
     ERROR ("rrdcached plugin: %s expects a single string argument.",
         ci->key);
     return (NULL);
   }
 
+  if (ci->values[0].type == OCONFIG_TYPE_BOOLEAN) {
+    if (ci->values[0].value.boolean)
+      return "true";
+    else
+      return "false";
+  }
   return (ci->values[0].value.string);
 } /* const char *config_get_string */
 
@@ -227,6 +242,11 @@ static int rc_config (oconfig_item_t *ci)
       continue;
     }
   }
+
+  if (daemon_address != NULL) {
+    plugin_register_write ("rrdcached", rc_write, /* user_data = */ NULL);
+    plugin_register_flush ("rrdcached", rc_flush, /* user_data = */ NULL);
+  }
   return (0);
 } /* int rc_config */
 
@@ -466,8 +486,6 @@ void module_register (void)
 {
   plugin_register_complex_config ("rrdcached", rc_config);
   plugin_register_init ("rrdcached", rc_init);
-  plugin_register_write ("rrdcached", rc_write, /* user_data = */ NULL);
-  plugin_register_flush ("rrdcached", rc_flush, /* user_data = */ NULL);
   plugin_register_shutdown ("rrdcached", rc_shutdown);
 } /* void module_register */