From: Manuel Luis SanmartĂ­n Rozada Date: Wed, 20 May 2015 18:52:58 +0000 (+0200) Subject: Plugin tail_csv: the manual says that you can use multiple times the X-Git-Tag: collectd-5.5.1~116^2~13 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=f02fb0e530acdeec827d2016e58bcdedd1837046;p=collectd.git Plugin tail_csv: the manual says that you can use multiple times the Collect option but the code expecs t"Collect n1 n2 n3 n4", fix to allow to put the option Collect multiple times. --- diff --git a/src/tail_csv.c b/src/tail_csv.c index 6c3d5f73..4794f82e 100644 --- a/src/tail_csv.c +++ b/src/tail_csv.c @@ -379,7 +379,8 @@ static void tcsv_instance_definition_destroy(void *arg){ static int tcsv_config_add_instance_collect(instance_definition_t *id, oconfig_item_t *ci){ metric_definition_t *metric; - int i; + metric_definition_t **metric_list; + int i,j,n; if (ci->values_num < 1){ WARNING("tail_csv plugin: The `Collect' config option needs at least one argument."); @@ -393,17 +394,20 @@ static int tcsv_config_add_instance_collect(instance_definition_t *id, oconfig_i return (-1); } - id->metric_list = (metric_definition_t **)malloc(sizeof(metric_definition_t *) * ci->values_num); - if (id->metric_list == NULL) + n = id->metric_list_len + ci->values_num; + metric_list = (metric_definition_t **)realloc(id->metric_list, sizeof(metric_definition_t *) * n); + if (metric_list == NULL) return (-1); - for (i = 0; i < ci->values_num; ++i){ + id->metric_list = metric_list; + + for (i = id->metric_list_len, j=0; i < n; ++i, ++j){ for (metric = metric_head; metric != NULL; metric = metric->next) - if (strcasecmp(ci->values[i].value.string, metric->name) == 0) + if (strcasecmp(ci->values[j].value.string, metric->name) == 0) break; if (metric == NULL){ - WARNING("tail_csv plugin: `Collect' argument not found `%s'.", ci->values[i].value.string); + WARNING("tail_csv plugin: `Collect' argument not found `%s'.", ci->values[j].value.string); return (-1); }