diff options
author | David Young <dyoung@hdfgroup.org> | 2020-05-06 19:44:59 (GMT) |
---|---|---|
committer | David Young <dyoung@hdfgroup.org> | 2020-05-06 19:44:59 (GMT) |
commit | 696173c28488d13ab85464531c9c52fd12d7ae89 (patch) | |
tree | 368c33997a2e84bee1eee4deed6024978d959c4e | |
parent | c07a958e1d047bbe33e544a322720843ae3cfce4 (diff) | |
download | hdf5-696173c28488d13ab85464531c9c52fd12d7ae89.zip hdf5-696173c28488d13ab85464531c9c52fd12d7ae89.tar.gz hdf5-696173c28488d13ab85464531c9c52fd12d7ae89.tar.bz2 |
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.
-rw-r--r-- | test/vfd_swmr_common.c | 16 | ||||
-rw-r--r-- | test/vfd_swmr_common.h | 2 |
2 files changed, 18 insertions, 0 deletions
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 *); |