Merge branch 'collectd-5.5'
[collectd.git] / src / daemon / plugin.c
index 0ef6273..51cc425 100644 (file)
@@ -889,7 +889,7 @@ static void start_write_threads (size_t num) /* {{{ */
 static void stop_write_threads (void) /* {{{ */
 {
        write_queue_t *q;
-       int i;
+       size_t i;
 
        if (write_threads == NULL)
                return;
@@ -930,7 +930,7 @@ static void stop_write_threads (void) /* {{{ */
 
        if (i > 0)
        {
-               WARNING ("plugin: %i value list%s left after shutting down "
+               WARNING ("plugin: %zu value list%s left after shutting down "
                                "the write threads.",
                                i, (i == 1) ? " was" : "s were");
        }
@@ -1318,6 +1318,29 @@ static void plugin_flush_timeout_callback_free (void *data)
        sfree(cb);
 } /* static void plugin_flush_callback_free */
 
+static char *plugin_flush_callback_name (const char *name)
+{
+       char *flush_prefix = "flush/";
+       size_t prefix_size;
+       char *flush_name;
+       size_t name_size;
+
+       prefix_size = strlen(flush_prefix);
+       name_size = strlen(name);
+
+       flush_name = malloc (sizeof(char) * (name_size + prefix_size + 1));
+       if (flush_name == NULL)
+       {
+               ERROR ("plugin_flush_callback_name: malloc failed.");
+               return (NULL);
+       }
+
+       sstrncpy (flush_name, flush_prefix, prefix_size + 1);
+       sstrncpy (flush_name + prefix_size, name, name_size + 1);
+
+       return flush_name;
+} /* static char *plugin_flush_callback_name */
+
 int plugin_register_flush (const char *name,
                plugin_flush_cb callback, user_data_t *ud)
 {
@@ -1331,34 +1354,19 @@ int plugin_register_flush (const char *name,
 
        if (ctx.flush_interval != 0)
        {
-               char *flush_prefix = "flush/";
-               size_t prefix_size;
                char *flush_name;
-               size_t name_size;
                user_data_t ud;
                flush_callback_t *cb;
 
-               prefix_size = strlen(flush_prefix);
-               name_size = strlen(name);
-
-               flush_name = (char *) malloc (sizeof (char) *
-                       (name_size + prefix_size + 1));
+               flush_name = plugin_flush_callback_name (name);
                if (flush_name == NULL)
-               {
-                       ERROR ("plugin_register_flush: malloc failed.");
-                       plugin_unregister (list_flush, name);
                        return (-1);
-               }
 
-               sstrncpy (flush_name, flush_prefix, prefix_size + 1);
-               sstrncpy (flush_name + prefix_size, name, name_size + 1);
-
-               cb = (flush_callback_t *)malloc(sizeof(flush_callback_t));
+               cb = malloc(sizeof(flush_callback_t));
                if (cb == NULL)
                {
                        ERROR ("plugin_register_flush: malloc failed.");
                        sfree(flush_name);
-                       plugin_unregister (list_flush, name);
                        return (-1);
                }
 
@@ -1368,7 +1376,6 @@ int plugin_register_flush (const char *name,
                        ERROR ("plugin_register_flush: strdup failed.");
                        sfree(cb);
                        sfree(flush_name);
-                       plugin_unregister (list_flush, name);
                        return (-1);
                }
                cb->timeout = ctx.flush_timeout;
@@ -1388,7 +1395,6 @@ int plugin_register_flush (const char *name,
                {
                        sfree(cb->name);
                        sfree(cb);
-                       plugin_unregister (list_flush, name);
                        return status;
                }
        }
@@ -1434,7 +1440,7 @@ static void plugin_free_data_sets (void)
 int plugin_register_data_set (const data_set_t *ds)
 {
        data_set_t *ds_copy;
-       int i;
+       size_t i;
 
        if ((data_sets != NULL)
                        && (c_avl_get (data_sets, ds->type, NULL) == 0))
@@ -1615,28 +1621,15 @@ int plugin_unregister_flush (const char *name)
        plugin_ctx_t ctx = plugin_get_ctx ();
 
        if (ctx.flush_interval != 0)
-        {
-               char *flush_prefix = "flush/";
-               size_t prefix_size;
+       {
                char *flush_name;
-               size_t name_size;
-
-               prefix_size = strlen(flush_prefix);
-               name_size = strlen(name);
 
-               flush_name = (char *) malloc (sizeof (char) *
-                       (name_size + prefix_size + 1));
-               if (flush_name == NULL)
+               flush_name = plugin_flush_callback_name (name);
+               if (flush_name != NULL)
                {
-                       ERROR ("plugin_unregister_flush: malloc failed.");
-                       return (-1);
+                       plugin_unregister_read(flush_name);
+                       sfree(flush_name);
                }
-
-               sstrncpy (flush_name, flush_prefix, prefix_size + 1);
-               sstrncpy (flush_name + prefix_size, name, name_size + 1);
-
-               plugin_unregister_read(flush_name);
-               sfree(flush_name);
        }
 
        return plugin_unregister (list_flush, name);
@@ -2144,8 +2137,8 @@ static int plugin_dispatch_values_internal (value_list_t *vl)
        if (ds->ds_num != vl->values_len)
        {
                ERROR ("plugin_dispatch_values: ds->type = %s: "
-                               "(ds->ds_num = %i) != "
-                               "(vl->values_len = %i)",
+                               "(ds->ds_num = %zu) != "
+                               "(vl->values_len = %zu)",
                                ds->type, ds->ds_num, vl->values_len);
                return (-1);
        }