X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fwrite_sensu.c;h=475354c83bb0110c89b81dde3e85cb33a3203953;hb=c6557cb8950f50a41a1decfb34439b060e2fd371;hp=b09dcc86424d7c3a0cbab39b5bea41c5d847c2f5;hpb=00f9279d9711c9882b65d54fd72c2f25a3f403fc;p=collectd.git diff --git a/src/write_sensu.c b/src/write_sensu.c index b09dcc86..475354c8 100644 --- a/src/write_sensu.c +++ b/src/write_sensu.c @@ -24,6 +24,8 @@ * Fabrice A. Marie */ +#define _GNU_SOURCE + #include "collectd.h" #include "plugin.h" #include "common.h" @@ -37,53 +39,6 @@ #include #include -#ifndef HAVE_ASPRINTF -/* - * Uses asprintf() portable implementation from - * https://github.com/littlstar/asprintf.c/blob/master/ - * copyright (c) 2014 joseph werle under MIT license. - */ -#include -#include - -int vasprintf(char **str, const char *fmt, va_list args) { - int size = 0; - va_list tmpa; - // copy - va_copy(tmpa, args); - // apply variadic arguments to - // sprintf with format to get size - size = vsnprintf(NULL, size, fmt, tmpa); - // toss args - va_end(tmpa); - // return -1 to be compliant if - // size is less than 0 - if (size < 0) { return -1; } - // alloc with size plus 1 for `\0' - *str = (char *) malloc(size + 1); - // return -1 to be compliant - // if pointer is `NULL' - if (NULL == *str) { return -1; } - // format string with original - // variadic arguments and set new size - size = vsprintf(*str, fmt, args); - return size; -} - -int asprintf(char **str, const char *fmt, ...) { - int size = 0; - va_list args; - // init variadic argumens - va_start(args, fmt); - // format and get size - size = vasprintf(str, fmt, args); - // toss args - va_end(args); - return size; -} - -#endif - #define SENSU_HOST "localhost" #define SENSU_PORT "3030" @@ -222,7 +177,7 @@ static void sensu_close_socket(struct sensu_host *host) /* {{{ */ static char *build_json_str_list(const char *tag, struct str_list const *list) /* {{{ */ { int res; - char *ret_str; + char *ret_str = NULL; char *temp_str; int i; if (list->nb_strs == 0) { @@ -237,6 +192,7 @@ static char *build_json_str_list(const char *tag, struct str_list const *list) / res = asprintf(&temp_str, "\"%s\": [\"%s\"", tag, list->strs[0]); if (res == -1) { ERROR("write_sensu plugin: Unable to alloc memory"); + free(ret_str); return NULL; } for (i=1; inb_strs; i++) { @@ -258,7 +214,7 @@ static char *build_json_str_list(const char *tag, struct str_list const *list) / return ret_str; } /* }}} char *build_json_str_list*/ -int sensu_format_name2(char *ret, int ret_len, +static int sensu_format_name2(char *ret, int ret_len, const char *hostname, const char *plugin, const char *plugin_instance, const char *type, const char *type_instance, @@ -550,7 +506,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */ * http://creativeandcritical.net/str-replace-c/ * copyright (c) Laird Shaw, under public domain. */ -char *replace_str(const char *str, const char *old, /* {{{ */ +static char *replace_str(const char *str, const char *old, /* {{{ */ const char *new) { char *ret, *r; @@ -569,11 +525,10 @@ char *replace_str(const char *str, const char *old, /* {{{ */ } else retlen = strlen(str); - ret = malloc(retlen + 1); + ret = calloc(1, retlen + 1); if (ret == NULL) return NULL; // added to original: not optimized, but keeps valgrind happy. - memset(ret, 0, retlen + 1); r = ret; p = str;