From: Zebity Spring Date: Wed, 18 Sep 2019 11:49:34 +0000 (+1000) Subject: Add second wrapper ssnprintf2 to allow introduction of error handling on truncation... X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=1b5a6b8698a4c42f2024b49099acb510fc4bc529;p=collectd.git Add second wrapper ssnprintf2 to allow introduction of error handling on truncation in future --- 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] = "";