Merge remote-tracking branch 'github/pr/2058'
[collectd.git] / src / utils_cmd_putval.c
index af6b484..691f1f8 100644 (file)
@@ -69,7 +69,8 @@ static int set_option (value_list_t *vl, const char *key, const char *value)
  */
 
 cmd_status_t cmd_parse_putval (size_t argc, char **argv,
-               cmd_putval_t *ret_putval, cmd_error_handler_t *err)
+               cmd_putval_t *ret_putval, const cmd_options_t *opts,
+               cmd_error_handler_t *err)
 {
        cmd_status_t result;
 
@@ -85,7 +86,13 @@ cmd_status_t cmd_parse_putval (size_t argc, char **argv,
 
        const data_set_t *ds;
        value_list_t vl = VALUE_LIST_INIT;
-       size_t i;
+
+       if ((ret_putval == NULL) || (opts == NULL))
+       {
+               errno = EINVAL;
+               cmd_error (CMD_ERROR, err, "Invalid arguments to cmd_parse_putval.");
+               return (CMD_ERROR);
+       }
 
        if (argc < 2)
        {
@@ -102,7 +109,8 @@ cmd_status_t cmd_parse_putval (size_t argc, char **argv,
 
        status = parse_identifier (identifier, &hostname,
                        &plugin, &plugin_instance,
-                       &type, &type_instance);
+                       &type, &type_instance,
+                       opts->identifier_default_host);
        if (status != 0)
        {
                DEBUG ("cmd_handle_putval: Cannot parse identifier `%s'.",
@@ -165,7 +173,7 @@ cmd_status_t cmd_parse_putval (size_t argc, char **argv,
 
        /* All the remaining fields are part of the option list. */
        result = CMD_OK;
-       for (i = 1; i < argc; ++i)
+       for (size_t i = 1; i < argc; ++i)
        {
                value_list_t *tmp;
 
@@ -226,14 +234,12 @@ cmd_status_t cmd_parse_putval (size_t argc, char **argv,
 
 void cmd_destroy_putval (cmd_putval_t *putval)
 {
-       size_t i;
-
        if (putval == NULL)
                return;
 
        sfree (putval->raw_identifier);
 
-       for (i = 0; i < putval->vl_num; ++i)
+       for (size_t i = 0; i < putval->vl_num; ++i)
        {
                if (i == 0) /* values is shared between all entries */
                        sfree (putval->vl[i].values);
@@ -249,14 +255,13 @@ cmd_status_t cmd_handle_putval (FILE *fh, char *buffer)
 {
        cmd_error_handler_t err = { cmd_error_fh, fh };
        cmd_t cmd;
-       size_t i;
 
        int status;
 
        DEBUG ("utils_cmd_putval: cmd_handle_putval (fh = %p, buffer = %s);",
                        (void *) fh, buffer);
 
-       if ((status = cmd_parse (buffer, &cmd, &err)) != CMD_OK)
+       if ((status = cmd_parse (buffer, &cmd, NULL, &err)) != CMD_OK)
                return (status);
        if (cmd.type != CMD_PUTVAL)
        {
@@ -266,7 +271,7 @@ cmd_status_t cmd_handle_putval (FILE *fh, char *buffer)
                return (CMD_UNKNOWN_COMMAND);
        }
 
-       for (i = 0; i < cmd.cmd.putval.vl_num; ++i)
+       for (size_t i = 0; i < cmd.cmd.putval.vl_num; ++i)
                plugin_dispatch_values (&cmd.cmd.putval.vl[i]);
 
        if (fh != stdout)