X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_cmd_putval.c;h=ec2b5f876795b53f2faec5c5ddc6104d7c0679a3;hb=7de4b3692af84751fab5ac46a5da7414346ea50b;hp=91b70160f063590e477cd415253e38d1099abc1b;hpb=d3fc6d0831a63af2e96300f488a9f8f5fc3183fb;p=collectd.git diff --git a/src/utils_cmd_putval.c b/src/utils_cmd_putval.c index 91b70160..ec2b5f87 100644 --- a/src/utils_cmd_putval.c +++ b/src/utils_cmd_putval.c @@ -1,6 +1,6 @@ /** * collectd - src/utils_cms_putval.c - * Copyright (C) 2007,2008 Florian octo Forster + * Copyright (C) 2007-2009 Florian octo Forster * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -33,67 +33,21 @@ 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; - char *ptr; - char *saveptr; - int i; - - char *time_str = buffer; - char *value_str = strchr (time_str, ':'); - if (value_str == NULL) - { - print_to_socket (fh, "-1 No time found.\n"); - return (-1); - } - *value_str = '\0'; value_str++; - - vl->time = (time_t) atoi (time_str); - if (vl->time == 0) - vl->time = time (NULL); - - i = 0; - dummy = value_str; - saveptr = NULL; - while ((ptr = strtok_r (dummy, ":", &saveptr)) != NULL) - { - dummy = NULL; + int status; - if (i >= vl->values_len) - { - i = vl->values_len + 1; - break; - } - - if (strcmp (ptr, "U") == 0) - 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); - - i++; - } /* while (strtok_r) */ - - if (i != vl->values_len) + status = parse_values (buffer, vl, ds); + if (status != 0) { - char identifier[128]; - FORMAT_VL (identifier, sizeof (identifier), vl, ds); - ERROR ("cmd putval: parse_value: " - "Number of values incorrect: " - "Got %i, expected %i. Identifier is `%s'.", - i, vl->values_len, identifier); - print_to_socket (fh, "-1 Number of values incorrect: " - "Got %i, expected %i.\n", - i, vl->values_len); + print_to_socket (fh, "-1 Parsing the values string failed.\n"); return (-1); } 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) { @@ -254,7 +208,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. */