From 696173c28488d13ab85464531c9c52fd12d7ae89 Mon Sep 17 00:00:00 2001 From: David Young Date: Wed, 6 May 2020 14:44:59 -0500 Subject: Add esnprintf that prints to the given buffer, observing the given buffer size, using vsnprintf(3), but exits with err(3)/errx(3) if the buffer is too small or if vsnprintf returns < 0. --- test/vfd_swmr_common.c | 16 ++++++++++++++++ test/vfd_swmr_common.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/test/vfd_swmr_common.c b/test/vfd_swmr_common.c index 7db2bba..252d6d7 100644 --- a/test/vfd_swmr_common.c +++ b/test/vfd_swmr_common.c @@ -34,6 +34,22 @@ static const hid_t badhid = H5I_INVALID_HID; int verbosity = 2; void +esnprintf(char *buf, size_t bufsz, const char *fmt, ...) +{ + int rc; + va_list ap; + + va_start(ap, fmt); + rc = vsnprintf(buf, bufsz, fmt, ap); + va_end(ap); + + if (rc < 0) + err(EXIT_FAILURE, "%s: vsnprintf", __func__); + else if (rc >= bufsz) + errx(EXIT_FAILURE, "%s: buffer too small", __func__); +} + +void dbgf(int level, const char *fmt, ...) { va_list ap; diff --git a/test/vfd_swmr_common.h b/test/vfd_swmr_common.h index cd36cc3..c6916e6 100644 --- a/test/vfd_swmr_common.h +++ b/test/vfd_swmr_common.h @@ -97,6 +97,8 @@ H5TEST_DLL void await_signal(hid_t); H5TEST_DLL hid_t vfd_swmr_create_fapl(bool, bool, bool); H5TEST_DLL void dbgf(int, const char *, ...) H5_ATTR_FORMAT(printf, 2, 3); +H5TEST_DLL void esnprintf(char *, size_t, const char *, ...) + H5_ATTR_FORMAT(printf, 3, 4); H5TEST_DLL int fetch_env_ulong(const char *, unsigned long, unsigned long *); -- cgit v0.12