X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Faggregation.c;h=0ed97ae1d4ccd8d35d799d715611f052ae89ac51;hp=4e20d0cff57073462c24981e0e647f8ac93cb46f;hb=1159cb5d383c55a80a0db100b8f7aadcf44740a5;hpb=ffaf9b893b6042a76e1c0dadd83ce06904fcc89a diff --git a/src/aggregation.c b/src/aggregation.c index 4e20d0cf..0ed97ae1 100644 --- a/src/aggregation.c +++ b/src/aggregation.c @@ -93,16 +93,16 @@ static _Bool agg_is_regex(char const *str) /* {{{ */ size_t len; if (str == NULL) - return (0); + return 0; len = strlen(str); if (len < 3) - return (0); + return 0; if ((str[0] == '/') && (str[len - 1] == '/')) - return (1); + return 1; else - return (0); + return 0; } /* }}} _Bool agg_is_regex */ static void agg_destroy(aggregation_t *agg) /* {{{ */ @@ -200,17 +200,15 @@ static int agg_instance_create_name(agg_instance_t *inst, /* {{{ */ sstrncpy(inst->ident.plugin_instance, AGG_FUNC_PLACEHOLDER, sizeof(inst->ident.plugin_instance)); else if (strcmp("", tmp_plugin) != 0) - ssnprintf(inst->ident.plugin_instance, - sizeof(inst->ident.plugin_instance), "%s-%s", tmp_plugin, - AGG_FUNC_PLACEHOLDER); + snprintf(inst->ident.plugin_instance, sizeof(inst->ident.plugin_instance), + "%s-%s", tmp_plugin, AGG_FUNC_PLACEHOLDER); else if (strcmp("", tmp_plugin_instance) != 0) - ssnprintf(inst->ident.plugin_instance, - sizeof(inst->ident.plugin_instance), "%s-%s", - tmp_plugin_instance, AGG_FUNC_PLACEHOLDER); + snprintf(inst->ident.plugin_instance, sizeof(inst->ident.plugin_instance), + "%s-%s", tmp_plugin_instance, AGG_FUNC_PLACEHOLDER); else - ssnprintf(inst->ident.plugin_instance, - sizeof(inst->ident.plugin_instance), "%s-%s-%s", tmp_plugin, - tmp_plugin_instance, AGG_FUNC_PLACEHOLDER); + snprintf(inst->ident.plugin_instance, sizeof(inst->ident.plugin_instance), + "%s-%s-%s", tmp_plugin, tmp_plugin_instance, + AGG_FUNC_PLACEHOLDER); } /* Type */ @@ -222,7 +220,7 @@ static int agg_instance_create_name(agg_instance_t *inst, /* {{{ */ #undef COPY_FIELD - return (0); + return 0; } /* }}} int agg_instance_create_name */ /* Create a new aggregation instance. */ @@ -236,7 +234,7 @@ static agg_instance_t *agg_instance_create(data_set_t const *ds, /* {{{ */ inst = calloc(1, sizeof(*inst)); if (inst == NULL) { ERROR("aggregation plugin: calloc() failed."); - return (NULL); + return NULL; } pthread_mutex_init(&inst->lock, /* attr = */ NULL); @@ -256,7 +254,7 @@ static agg_instance_t *agg_instance_create(data_set_t const *ds, /* {{{ */ agg_instance_destroy(inst); \ free(inst); \ ERROR("aggregation plugin: calloc() failed."); \ - return (NULL); \ + return NULL; \ } \ } \ } while (0) @@ -275,7 +273,7 @@ static agg_instance_t *agg_instance_create(data_set_t const *ds, /* {{{ */ agg_instance_list_head = inst; pthread_mutex_unlock(&agg_instance_list_lock); - return (inst); + return inst; } /* }}} agg_instance_t *agg_instance_create */ /* Update the num, sum, min, max, ... fields of the aggregation instance, if @@ -291,7 +289,7 @@ static int agg_instance_update(agg_instance_t *inst, /* {{{ */ "data source. This is currently not supported by this plugin. " "Sorry.", ds->type); - return (EINVAL); + return EINVAL; } rate = uc_get_rate(ds, vl); @@ -300,12 +298,12 @@ static int agg_instance_update(agg_instance_t *inst, /* {{{ */ FORMAT_VL(ident, sizeof(ident), vl); ERROR("aggregation plugin: Unable to read the current rate of \"%s\".", ident); - return (ENOENT); + return ENOENT; } if (isnan(rate[0])) { sfree(rate); - return (0); + return 0; } pthread_mutex_lock(&inst->lock); @@ -322,7 +320,7 @@ static int agg_instance_update(agg_instance_t *inst, /* {{{ */ pthread_mutex_unlock(&inst->lock); sfree(rate); - return (0); + return 0; } /* }}} int agg_instance_update */ static int agg_instance_read_func(agg_instance_t *inst, /* {{{ */ @@ -345,10 +343,10 @@ static int agg_instance_read_func(agg_instance_t *inst, /* {{{ */ * COUNTER or a DERIVE, it will return EAGAIN. Catch this and handle * gracefully. */ if (status == EAGAIN) - return (0); + return 0; WARNING("aggregation plugin: rate_to_value failed with status %i.", status); - return (-1); + return -1; } vl->values = &v; @@ -359,7 +357,7 @@ static int agg_instance_read_func(agg_instance_t *inst, /* {{{ */ vl->values = NULL; vl->values_len = 0; - return (0); + return 0; } /* }}} int agg_instance_read_func */ static int agg_instance_read(agg_instance_t *inst, cdtime_t t) /* {{{ */ @@ -376,7 +374,7 @@ static int agg_instance_read(agg_instance_t *inst, cdtime_t t) /* {{{ */ vl.meta = meta_data_create(); if (vl.meta == NULL) { ERROR("aggregation plugin: meta_data_create failed."); - return (-1); + return -1; } meta_data_add_boolean(vl.meta, "aggregation:created", 1); @@ -405,9 +403,10 @@ static int agg_instance_read(agg_instance_t *inst, cdtime_t t) /* {{{ */ READ_FUNC(average, (inst->sum / ((gauge_t)inst->num))); READ_FUNC(min, inst->min); READ_FUNC(max, inst->max); - READ_FUNC(stddev, sqrt((((gauge_t)inst->num) * inst->squares_sum) - - (inst->sum * inst->sum)) / - ((gauge_t)inst->num)); + READ_FUNC(stddev, + sqrt((((gauge_t)inst->num) * inst->squares_sum) - + (inst->sum * inst->sum)) / + ((gauge_t)inst->num)); } /* Reset internal state. */ @@ -422,7 +421,7 @@ static int agg_instance_read(agg_instance_t *inst, cdtime_t t) /* {{{ */ meta_data_destroy(vl.meta); vl.meta = NULL; - return (0); + return 0; } /* }}} int agg_instance_read */ /* lookup_class_callback_t for utils_vl_lookup */ @@ -430,7 +429,7 @@ static void *agg_lookup_class_callback(/* {{{ */ data_set_t const *ds, value_list_t const *vl, void *user_class) { - return (agg_instance_create(ds, vl, (aggregation_t *)user_class)); + return agg_instance_create(ds, vl, (aggregation_t *)user_class); } /* }}} void *agg_class_callback */ /* lookup_obj_callback_t for utils_vl_lookup */ @@ -438,7 +437,7 @@ static int agg_lookup_obj_callback(data_set_t const *ds, /* {{{ */ value_list_t const *vl, __attribute__((unused)) void *user_class, void *user_obj) { - return (agg_instance_update((agg_instance_t *)user_obj, ds, vl)); + return agg_instance_update((agg_instance_t *)user_obj, ds, vl); } /* }}} int agg_lookup_obj_callback */ /* lookup_free_class_callback_t for utils_vl_lookup */ @@ -501,19 +500,15 @@ static int agg_config_handle_group_by(oconfig_item_t const *ci, /* {{{ */ value); } /* for (ci->values) */ - return (0); + return 0; } /* }}} int agg_config_handle_group_by */ static int agg_config_aggregation(oconfig_item_t *ci) /* {{{ */ { - aggregation_t *agg; - _Bool is_valid; - int status; - - agg = calloc(1, sizeof(*agg)); + aggregation_t *agg = calloc(1, sizeof(*agg)); if (agg == NULL) { ERROR("aggregation plugin: calloc failed."); - return (-1); + return -1; } sstrncpy(agg->ident.host, "/.*/", sizeof(agg->ident.host)); @@ -525,49 +520,55 @@ static int agg_config_aggregation(oconfig_item_t *ci) /* {{{ */ for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; + int status = 0; if (strcasecmp("Host", child->key) == 0) - cf_util_get_string_buffer(child, agg->ident.host, - sizeof(agg->ident.host)); + status = cf_util_get_string_buffer(child, agg->ident.host, + sizeof(agg->ident.host)); else if (strcasecmp("Plugin", child->key) == 0) - cf_util_get_string_buffer(child, agg->ident.plugin, - sizeof(agg->ident.plugin)); + status = cf_util_get_string_buffer(child, agg->ident.plugin, + sizeof(agg->ident.plugin)); else if (strcasecmp("PluginInstance", child->key) == 0) - cf_util_get_string_buffer(child, agg->ident.plugin_instance, - sizeof(agg->ident.plugin_instance)); + status = cf_util_get_string_buffer(child, agg->ident.plugin_instance, + sizeof(agg->ident.plugin_instance)); else if (strcasecmp("Type", child->key) == 0) - cf_util_get_string_buffer(child, agg->ident.type, - sizeof(agg->ident.type)); + status = cf_util_get_string_buffer(child, agg->ident.type, + sizeof(agg->ident.type)); else if (strcasecmp("TypeInstance", child->key) == 0) - cf_util_get_string_buffer(child, agg->ident.type_instance, - sizeof(agg->ident.type_instance)); + status = cf_util_get_string_buffer(child, agg->ident.type_instance, + sizeof(agg->ident.type_instance)); else if (strcasecmp("SetHost", child->key) == 0) - cf_util_get_string(child, &agg->set_host); + status = cf_util_get_string(child, &agg->set_host); else if (strcasecmp("SetPlugin", child->key) == 0) - cf_util_get_string(child, &agg->set_plugin); + status = cf_util_get_string(child, &agg->set_plugin); else if (strcasecmp("SetPluginInstance", child->key) == 0) - cf_util_get_string(child, &agg->set_plugin_instance); + status = cf_util_get_string(child, &agg->set_plugin_instance); else if (strcasecmp("SetTypeInstance", child->key) == 0) - cf_util_get_string(child, &agg->set_type_instance); + status = cf_util_get_string(child, &agg->set_type_instance); else if (strcasecmp("GroupBy", child->key) == 0) - agg_config_handle_group_by(child, agg); + status = agg_config_handle_group_by(child, agg); else if (strcasecmp("CalculateNum", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_num); + status = cf_util_get_boolean(child, &agg->calc_num); else if (strcasecmp("CalculateSum", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_sum); + status = cf_util_get_boolean(child, &agg->calc_sum); else if (strcasecmp("CalculateAverage", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_average); + status = cf_util_get_boolean(child, &agg->calc_average); else if (strcasecmp("CalculateMinimum", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_min); + status = cf_util_get_boolean(child, &agg->calc_min); else if (strcasecmp("CalculateMaximum", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_max); + status = cf_util_get_boolean(child, &agg->calc_max); else if (strcasecmp("CalculateStddev", child->key) == 0) - cf_util_get_boolean(child, &agg->calc_stddev); + status = cf_util_get_boolean(child, &agg->calc_stddev); else WARNING("aggregation plugin: The \"%s\" key is not allowed inside " " blocks and will be ignored.", child->key); - } + + if (status != 0) { + sfree(agg); + return status; + } + } /* for (int i = 0; i < ci->children_num; i++) */ if (agg_is_regex(agg->ident.host)) agg->regex_fields |= LU_GROUP_BY_HOST; @@ -579,7 +580,7 @@ static int agg_config_aggregation(oconfig_item_t *ci) /* {{{ */ agg->regex_fields |= LU_GROUP_BY_TYPE_INSTANCE; /* Sanity checking */ - is_valid = 1; + _Bool is_valid = 1; if (strcmp("/.*/", agg->ident.type) == 0) /* {{{ */ { ERROR("aggregation plugin: It appears you did not specify the required " @@ -633,17 +634,16 @@ static int agg_config_aggregation(oconfig_item_t *ci) /* {{{ */ is_valid = 0; } /* }}} */ - if (!is_valid) /* {{{ */ - { + if (!is_valid) { /* {{{ */ sfree(agg); - return (-1); + return -1; } /* }}} */ - status = lookup_add(lookup, &agg->ident, agg->group_by, agg); + int status = lookup_add(lookup, &agg->ident, agg->group_by, agg); if (status != 0) { ERROR("aggregation plugin: lookup_add failed with status %i.", status); sfree(agg); - return (-1); + return -1; } DEBUG("aggregation plugin: Successfully added aggregation: " @@ -651,7 +651,7 @@ static int agg_config_aggregation(oconfig_item_t *ci) /* {{{ */ "Type \"%s\", TypeInstance \"%s\")", agg->ident.host, agg->ident.plugin, agg->ident.plugin_instance, agg->ident.type, agg->ident.type_instance); - return (0); + return 0; } /* }}} int agg_config_aggregation */ static int agg_config(oconfig_item_t *ci) /* {{{ */ @@ -665,7 +665,7 @@ static int agg_config(oconfig_item_t *ci) /* {{{ */ if (lookup == NULL) { pthread_mutex_unlock(&agg_instance_list_lock); ERROR("aggregation plugin: lookup_create failed."); - return (-1); + return -1; } } @@ -682,7 +682,7 @@ static int agg_config(oconfig_item_t *ci) /* {{{ */ pthread_mutex_unlock(&agg_instance_list_lock); - return (0); + return 0; } /* }}} int agg_config */ static int agg_read(void) /* {{{ */ @@ -703,7 +703,7 @@ static int agg_read(void) /* {{{ */ * Therefore we need to handle this case separately. */ if (agg_instance_list_head == NULL) { pthread_mutex_unlock(&agg_instance_list_lock); - return (0); + return 0; } for (agg_instance_t *this = agg_instance_list_head; this != NULL; @@ -721,7 +721,7 @@ static int agg_read(void) /* {{{ */ pthread_mutex_unlock(&agg_instance_list_lock); - return ((success > 0) ? 0 : -1); + return (success > 0) ? 0 : -1; } /* }}} int agg_read */ static int agg_write(data_set_t const *ds, value_list_t const *vl, /* {{{ */ @@ -734,7 +734,7 @@ static int agg_write(data_set_t const *ds, value_list_t const *vl, /* {{{ */ (void)meta_data_get_boolean(vl->meta, "aggregation:created", &created_by_aggregation); if (created_by_aggregation) - return (0); + return 0; if (lookup == NULL) status = ENOENT; @@ -744,7 +744,7 @@ static int agg_write(data_set_t const *ds, value_list_t const *vl, /* {{{ */ status = 0; } - return (status); + return status; } /* }}} int agg_write */ void module_register(void) { @@ -752,5 +752,3 @@ void module_register(void) { plugin_register_read("aggregation", agg_read); plugin_register_write("aggregation", agg_write, /* user_data = */ NULL); } - -/* vim: set sw=2 sts=2 tw=78 et fdm=marker : */