X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Futils%2Fcommon%2Fcommon.c;h=2711c9ddf2cf517e7c97c85f7920b3530551e36f;hp=6a0ac28fe62b95c03db984ad92409c1e8e9113af;hb=1b5a6b8698a4c42f2024b49099acb510fc4bc529;hpb=092982db106bfcab3f8affb8e7fc6e2cd9535ea6 diff --git a/src/utils/common/common.c b/src/utils/common/common.c index 6a0ac28f..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); @@ -102,6 +101,22 @@ int ssnprintf(char *str, size_t sz, const char *format, ...) { 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 ssnprintf2 */ + char *ssnprintf_alloc(char const *format, ...) /* {{{ */ { char static_buffer[1024] = "";