X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fwrite_sensu.c;h=67c04969227302c4f7f81dc0bafa2016587bd32a;hb=06efe4f50bbdfbade922b8a3ee4576eb2cc4562c;hp=7a3e4f402f1689adda73492e3632ba57d22451c3;hpb=711a4a302936537f6487a99d0ed8f292a8135817;p=collectd.git diff --git a/src/write_sensu.c b/src/write_sensu.c index 7a3e4f40..67c04969 100644 --- a/src/write_sensu.c +++ b/src/write_sensu.c @@ -29,7 +29,6 @@ #include "common.h" #include "configfile.h" #include "utils_cache.h" -#include #include #include #include @@ -113,8 +112,8 @@ struct sensu_host { int reference_count; }; -static char *sensu_tags; -static char **sensu_attrs; +static char *sensu_tags = NULL; +static char **sensu_attrs = NULL; static size_t sensu_attrs_num; static int add_str_to_list(struct str_list *strs, @@ -329,7 +328,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */ { char name_buffer[5 * DATA_MAX_NAME_LEN]; char service_buffer[6 * DATA_MAX_NAME_LEN]; - int i; + size_t i; char *ret_str; char *temp_str; char *value_str; @@ -558,7 +557,7 @@ char *replace_str(const char *str, const char *old, /* {{{ */ const char *p, *q; size_t oldlen = strlen(old); size_t count = strlen(new); - size_t retlen = count; + size_t retlen; size_t newlen = count; int samesize = (oldlen == newlen); @@ -641,7 +640,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */ char *ret_str; char *temp_str; int status; - int i; + size_t i; int res; // add the severity/status switch (n->severity) { @@ -883,7 +882,7 @@ static int sensu_write(const data_set_t *ds, /* {{{ */ int statuses[vl->values_len]; struct sensu_host *host = ud->data; gauge_t *rates = NULL; - int i; + size_t i; char *msg; pthread_mutex_lock(&host->lock); @@ -897,7 +896,7 @@ static int sensu_write(const data_set_t *ds, /* {{{ */ return -1; } } - for (i = 0; i < (size_t) vl->values_len; i++) { + for (i = 0; i < vl->values_len; i++) { msg = sensu_value_to_json(host, ds, vl, (int) i, rates, statuses[i]); if (msg == NULL) { sfree(rates); @@ -1160,12 +1159,6 @@ static int sensu_config(oconfig_item_t *ci) /* {{{ */ sensu_tags_arr.nb_strs = 0; sensu_tags_arr.strs = NULL; - sensu_tags = malloc(sizeof(char)); - if (sensu_tags == NULL) { - ERROR("write_sensu plugin: Unable to alloc memory"); - return -1; - } - sensu_tags[0] = '\0'; for (i = 0; i < ci->children_num; i++) { child = &ci->children[i]; @@ -1173,36 +1166,22 @@ static int sensu_config(oconfig_item_t *ci) /* {{{ */ if (strcasecmp("Node", child->key) == 0) { sensu_config_node(child); } else if (strcasecmp(child->key, "attribute") == 0) { - char *key = NULL; - char *val = NULL; - if (child->values_num != 2) { WARNING("sensu attributes need both a key and a value."); - free(sensu_tags); - return -1; + continue; } if (child->values[0].type != OCONFIG_TYPE_STRING || - child->values[1].type != OCONFIG_TYPE_STRING) { + child->values[1].type != OCONFIG_TYPE_STRING) { WARNING("sensu attribute needs string arguments."); - free(sensu_tags); - return -1; - } - if ((key = strdup(child->values[0].value.string)) == NULL) { - ERROR("write_sensu plugin: Unable to alloc memory"); - free(sensu_tags); - return -1; - } - if ((val = strdup(child->values[1].value.string)) == NULL) { - free(sensu_tags); - free(key); - ERROR("write_sensu plugin: Unable to alloc memory"); - return -1; + continue; } - strarray_add(&sensu_attrs, &sensu_attrs_num, key); - strarray_add(&sensu_attrs, &sensu_attrs_num, val); - DEBUG("write_sensu: got attr: %s => %s", key, val); - sfree(key); - sfree(val); + + strarray_add(&sensu_attrs, &sensu_attrs_num, child->values[0].value.string); + strarray_add(&sensu_attrs, &sensu_attrs_num, child->values[1].value.string); + + DEBUG("write_sensu plugin: New attribute: %s => %s", + child->values[0].value.string, + child->values[1].value.string); } else if (strcasecmp(child->key, "tag") == 0) { char *tmp = NULL; status = cf_util_get_string(child, &tmp); @@ -1221,7 +1200,7 @@ static int sensu_config(oconfig_item_t *ci) /* {{{ */ } } if (sensu_tags_arr.nb_strs > 0) { - free(sensu_tags); + sfree (sensu_tags); sensu_tags = build_json_str_list("tags", &sensu_tags_arr); free_str_list(&sensu_tags_arr); if (sensu_tags == NULL) {