X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Futils%2Fcommon%2Fcommon.c;h=2711c9ddf2cf517e7c97c85f7920b3530551e36f;hp=6ee4e081fb3f765b652406bd9c4f7fdb8d5ed045;hb=1b5a6b8698a4c42f2024b49099acb510fc4bc529;hpb=a03a24fe9c268251326d46e7224b4277e47a3603 diff --git a/src/utils/common/common.c b/src/utils/common/common.c index 6ee4e081..2711c9dd 100644 --- a/src/utils/common/common.c +++ b/src/utils/common/common.c @@ -89,8 +89,7 @@ char *sstrncpy(char *dest, const char *src, size_t n) { return dest; } /* char *sstrncpy */ -/* ssnprintf returns zero on success, one if truncation occurred - and a negative integer onerror. */ +/* ssnprintf returns result from vsnprintf conistent with snprintf */ int ssnprintf(char *str, size_t sz, const char *format, ...) { va_list ap; va_start(ap, format); @@ -99,11 +98,24 @@ int ssnprintf(char *str, size_t sz, const char *format, ...) { va_end(ap); + return ret; +} /* int ssnprintf */ + +/* ssnprintf2 returns zero on success, one if truncation occurred + and a negative integer on error. */ +int ssnprintf2(char *str, size_t sz, const char *format, ...) { + va_list ap; + va_start(ap, format); + + int ret = vsnprintf(str, sz, format, ap); + + va_end(ap); + if (ret < 0) { return ret; } return (size_t)ret >= sz; -} /* int ssnprintf */ +} /* int ssnprintf2 */ char *ssnprintf_alloc(char const *format, ...) /* {{{ */ { @@ -181,7 +193,7 @@ char *sstrerror(int errnum, char *buf, size_t buflen) { pthread_mutex_unlock(&strerror_r_lock); } -/* #endif !HAVE_STRERROR_R */ + /* #endif !HAVE_STRERROR_R */ #elif STRERROR_R_CHAR_P { @@ -191,17 +203,19 @@ char *sstrerror(int errnum, char *buf, size_t buflen) { if ((temp != NULL) && (temp != buf) && (temp[0] != '\0')) sstrncpy(buf, temp, buflen); else - sstrncpy(buf, "strerror_r did not return " - "an error message", + sstrncpy(buf, + "strerror_r did not return " + "an error message", buflen); } } -/* #endif STRERROR_R_CHAR_P */ + /* #endif STRERROR_R_CHAR_P */ #else if (strerror_r(errnum, buf, buflen) != 0) { - snprintf(buf, buflen, "Error #%i; " - "Additionally, strerror_r failed.", + snprintf(buf, buflen, + "Error #%i; " + "Additionally, strerror_r failed.", errnum); } #endif /* STRERROR_R_CHAR_P */ @@ -767,8 +781,8 @@ unsigned long long htonll(unsigned long long n) { #endif /* HAVE_HTONLL */ #if FP_LAYOUT_NEED_NOTHING -/* Well, we need nothing.. */ -/* #endif FP_LAYOUT_NEED_NOTHING */ + /* Well, we need nothing.. */ + /* #endif FP_LAYOUT_NEED_NOTHING */ #elif FP_LAYOUT_NEED_ENDIANFLIP || FP_LAYOUT_NEED_INTSWAP #if FP_LAYOUT_NEED_ENDIANFLIP @@ -1454,13 +1468,13 @@ int service_name_to_port_number(const char *service_name) { service_number = (int)ntohs(sa->sin6_port); } - if ((service_number > 0) && (service_number <= 65535)) + if (service_number > 0) break; } freeaddrinfo(ai_list); - if ((service_number > 0) && (service_number <= 65535)) + if (service_number > 0) return service_number; return -1; } /* int service_name_to_port_number */