From 19022ee7547839690948a7a9807930a7891f3f15 Mon Sep 17 00:00:00 2001 From: midipix Date: Sat, 10 Feb 2024 02:50:51 +0000 Subject: code base: simplify checks against value returned from snprintf() via wrapper. --- src/internal/slibtool_snprintf_impl.c | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/internal/slibtool_snprintf_impl.c (limited to 'src/internal/slibtool_snprintf_impl.c') diff --git a/src/internal/slibtool_snprintf_impl.c b/src/internal/slibtool_snprintf_impl.c new file mode 100644 index 0000000..d883af6 --- /dev/null +++ b/src/internal/slibtool_snprintf_impl.c @@ -0,0 +1,39 @@ +/*******************************************************************/ +/* slibtool: a skinny libtool implementation, written in C */ +/* Copyright (C) 2016--2021 SysDeer Technologies, LLC */ +/* Released under the Standard MIT License; see COPYING.SLIBTOOL. */ +/*******************************************************************/ + +#include +#include +#include +#include +#include + +#include "slibtool_snprintf_impl.h" + + +/*****************************************************************/ +/* snprintf() wrapper that simplifies usage via the following: */ +/* */ +/* (1) fail (return a negative result) in case the buffer is */ +/* not sufficiently large for the formatted string plus */ +/* the terminating null character. */ +/* */ +/**********************************************************/ + + +int slbt_snprintf(char * buf, size_t buflen, const char * fmt, ...) +{ + va_list ap; + size_t nbytes; + + va_start(ap,fmt); + nbytes = vsnprintf(buf,buflen,fmt,ap); + va_end(ap); + + if (nbytes >= buflen) + return -1; + + return nbytes; +} -- cgit v1.2.3