X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils%2Fcommon%2Fcommon.c;h=6ee4e081fb3f765b652406bd9c4f7fdb8d5ed045;hb=c3716ec215af04261b03cb6804dd561574e5d40d;hp=d15f9b7c771c708d5e30b00f90d253ffc1e58e08;hpb=6378ec288f34ff250b2971a1452338a2b34c240a;p=collectd.git diff --git a/src/utils/common/common.c b/src/utils/common/common.c index d15f9b7c..6ee4e081 100644 --- a/src/utils/common/common.c +++ b/src/utils/common/common.c @@ -25,7 +25,7 @@ * Niki W. Waibel * Sebastian Harl * Michał Mirosław -**/ + **/ #include "collectd.h" @@ -89,6 +89,22 @@ 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. */ +int ssnprintf(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 */ + char *ssnprintf_alloc(char const *format, ...) /* {{{ */ { char static_buffer[1024] = ""; @@ -721,9 +737,8 @@ long long get_kstat_value(kstat_t *ksp, char *name) { else if (kn->data_type == KSTAT_DATA_UINT32) retval = (long long)kn->value.ui32; else if (kn->data_type == KSTAT_DATA_INT64) - retval = - (long long)kn->value.i64; /* According to ANSI C99 `long long' must hold - at least 64 bits */ + retval = (long long)kn->value.i64; /* According to ANSI C99 `long long' must + hold at least 64 bits */ else if (kn->data_type == KSTAT_DATA_UINT64) retval = (long long)kn->value.ui64; /* XXX: Might overflow! */ else