X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_cmd_putval.c;h=be09185ee1c3cb6ee14fa2bde688af23a942b17b;hb=aec55dfa7f94fd4ff99cec0767e6ffed93a21339;hp=5bd6ec738fd2e188b4b253e3e7ce51937383690a;hpb=d54dfab9b049de396e6a38d690d5f18917e093ea;p=collectd.git diff --git a/src/utils_cmd_putval.c b/src/utils_cmd_putval.c index 5bd6ec73..be09185e 100644 --- a/src/utils_cmd_putval.c +++ b/src/utils_cmd_putval.c @@ -33,7 +33,7 @@ return -1; \ } -static int parse_value (const data_set_t *ds, value_list_t *vl, +static int dispatch_values (const data_set_t *ds, value_list_t *vl, FILE *fh, char *buffer) { char *dummy; @@ -65,12 +65,13 @@ static int parse_value (const data_set_t *ds, value_list_t *vl, break; } - if (strcmp (ptr, "U") == 0) + if ((strcmp (ptr, "U") == 0) && (ds->ds[i].type == DS_TYPE_GAUGE)) vl->values[i].gauge = NAN; - else if (ds->ds[i].type == DS_TYPE_COUNTER) - vl->values[i].counter = atoll (ptr); - else if (ds->ds[i].type == DS_TYPE_GAUGE) - vl->values[i].gauge = atof (ptr); + else if (0 != parse_value (ptr, &vl->values[i], ds->ds[i])) + { + print_to_socket (fh, "-1 Failed to parse value `%s'.", ptr); + return (-1); + } i++; } /* while (strtok_r) */ @@ -79,7 +80,7 @@ static int parse_value (const data_set_t *ds, value_list_t *vl, { char identifier[128]; FORMAT_VL (identifier, sizeof (identifier), vl, ds); - ERROR ("cmd putval: parse_value: " + ERROR ("cmd putval: dispatch_values: " "Number of values incorrect: " "Got %i, expected %i. Identifier is `%s'.", i, vl->values_len, identifier); @@ -91,7 +92,7 @@ static int parse_value (const data_set_t *ds, value_list_t *vl, plugin_dispatch_values (vl); return (0); -} /* int parse_value */ +} /* int dispatch_values */ static int set_option (value_list_t *vl, const char *key, const char *value) { @@ -252,7 +253,7 @@ int handle_putval (FILE *fh, char *buffer) } assert (string != NULL); - status = parse_value (ds, &vl, fh, string); + status = dispatch_values (ds, &vl, fh, string); if (status != 0) { /* An error has already been printed. */