diff options
author | midipix <writeonce@midipix.org> | 2024-02-10 02:50:51 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-02-10 03:01:55 +0000 |
commit | 19022ee7547839690948a7a9807930a7891f3f15 (patch) | |
tree | 782384fd6f5c56272efdfd29533a623937fe9ea6 /src/internal/slibtool_snprintf_impl.c | |
parent | 2f8d3eabcf743d1e398277e7b4e6a03bbdd574ee (diff) | |
download | slibtool-19022ee7547839690948a7a9807930a7891f3f15.tar.bz2 slibtool-19022ee7547839690948a7a9807930a7891f3f15.tar.xz |
code base: simplify checks against value returned from snprintf() via wrapper.
Diffstat (limited to 'src/internal/slibtool_snprintf_impl.c')
-rw-r--r-- | src/internal/slibtool_snprintf_impl.c | 39 |
1 files changed, 39 insertions, 0 deletions
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 <stdio.h> +#include <stdarg.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> + +#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; +} |