X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fclient.c;h=f5fe2049334d15c1050a2549fb1492f0d18b70b6;hb=b4c8f3f762d666742c774ab3b45815e5a416e5da;hp=24c989e9c4d3763dd0f51e81ca7ee231e46b9ddf;hpb=d2c4cb59b2b8a52d613e5caac090736d02e90dbf;p=collectd.git diff --git a/src/libcollectdclient/client.c b/src/libcollectdclient/client.c index 24c989e9..f5fe2049 100644 --- a/src/libcollectdclient/client.c +++ b/src/libcollectdclient/client.c @@ -23,11 +23,6 @@ # include "config.h" #endif -/* Set to C99 and POSIX code */ -#if COLLECT_STANDARDS -# include "standards.h" -#endif /* COLLECT_STANDARDS */ - #if !defined(__GNUC__) || !__GNUC__ # define __attribute__(x) /**/ #endif @@ -126,7 +121,7 @@ static char *sstrerror (int errnum, char *buf, size_t buflen) buf[0] = 0; #if !HAVE_STRERROR_R - snprintf (buf, buflen "Error #%i; strerror_r is not available.", errnum); + snprintf (buf, buflen, "Error #%i; strerror_r is not available.", errnum); /* #endif !HAVE_STRERROR_R */ #elif STRERROR_R_CHAR_P @@ -169,27 +164,14 @@ static int lcc_set_errno (lcc_connection_t *c, int err) /* {{{ */ return (0); } /* }}} int lcc_set_errno */ -/* lcc_strdup: Since `strdup' is an XSI extension, we provide our own version - * here. */ -__attribute__((malloc, nonnull (1))) -static char *lcc_strdup (const char *str) /* {{{ */ -{ - size_t strsize; - char *ret; - - strsize = strlen (str) + 1; - ret = (char *) malloc (strsize); - if (ret != NULL) - memcpy (ret, str, strsize); - return (ret); -} /* }}} char *lcc_strdup */ - -__attribute__((nonnull (1, 2))) static char *lcc_strescape (char *dest, const char *src, size_t dest_size) /* {{{ */ { size_t dest_pos; size_t src_pos; + if ((dest == NULL) || (src == NULL)) + return (NULL); + dest_pos = 0; src_pos = 0; @@ -343,7 +325,7 @@ static int lcc_receive (lcc_connection_t *c, /* {{{ */ lcc_chomp (buffer); LCC_DEBUG ("receive: <-- %s\n", buffer); - res.lines[i] = lcc_strdup (buffer); + res.lines[i] = strdup (buffer); if (res.lines[i] == NULL) { lcc_set_errno (c, ENOMEM); @@ -738,7 +720,7 @@ int lcc_getval (lcc_connection_t *c, lcc_identifier_t *ident, /* {{{ */ if (values_names != NULL) { - values_names[i] = lcc_strdup (key); + values_names[i] = strdup (key); if (values_names[i] == NULL) BAIL_OUT (ENOMEM); } @@ -751,6 +733,8 @@ int lcc_getval (lcc_connection_t *c, lcc_identifier_t *ident, /* {{{ */ if (ret_values_names != NULL) *ret_values_names = values_names; + lcc_response_free (&res); + return (0); } /* }}} int lcc_getval */ @@ -782,9 +766,9 @@ int lcc_putval (lcc_connection_t *c, const lcc_value_list_t *vl) /* {{{ */ SSTRCATF (command, " interval=%i", vl->interval); if (vl->time > 0) - SSTRCATF (command, "%u", (unsigned int) vl->time); + SSTRCATF (command, " %u", (unsigned int) vl->time); else - SSTRCAT (command, "N"); + SSTRCAT (command, " N"); for (i = 0; i < vl->values_len; i++) { @@ -793,10 +777,15 @@ int lcc_putval (lcc_connection_t *c, const lcc_value_list_t *vl) /* {{{ */ else if (vl->values_types[i] == LCC_TYPE_GAUGE) { if (isnan (vl->values[i].gauge)) - SSTRCPY (command, ":U"); + SSTRCATF (command, ":U"); else SSTRCATF (command, ":%g", vl->values[i].gauge); } + else if (vl->values_types[i] == LCC_TYPE_DERIVE) + SSTRCATF (command, ":%"PRIu64, vl->values[i].derive); + else if (vl->values_types[i] == LCC_TYPE_ABSOLUTE) + SSTRCATF (command, ":%"PRIu64, vl->values[i].absolute); + } /* for (i = 0; i < vl->values_len; i++) */ status = lcc_sendreceive (c, command, &res); @@ -1013,7 +1002,7 @@ int lcc_string_to_identifier (lcc_connection_t *c, /* {{{ */ char *type; char *type_instance; - string_copy = lcc_strdup (string); + string_copy = strdup (string); if (string_copy == NULL) { lcc_set_errno (c, ENOMEM);