diff -r 6456036bbb37 -r edb9f875b7f9 src/cx/printf.h --- a/src/cx/printf.h Wed Apr 03 21:22:23 2024 +0200 +++ b/src/cx/printf.h Fri Apr 12 21:48:12 2024 +0200 @@ -168,12 +168,12 @@ /** * An \c sprintf like function which reallocates the string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * @param str a pointer to the string buffer - * @param len the current length of the buffer + * @param len a pointer to the length of the buffer * @param fmt the format string * @param ... additional arguments * @return the length of produced string @@ -183,32 +183,32 @@ /** * An \c sprintf like function which reallocates the string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \attention The original buffer MUST have been allocated with the same allocator! * * @param alloc the allocator to use * @param str a pointer to the string buffer - * @param len the current length of the buffer + * @param len a pointer to the length of the buffer * @param fmt the format string * @param ... additional arguments * @return the length of produced string */ -__attribute__((__nonnull__(1, 2, 4), __format__(printf, 4, 5))) -int cx_sprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, ... ); +__attribute__((__nonnull__(1, 2, 3, 4), __format__(printf, 4, 5))) +int cx_sprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, ... ); /** * An \c sprintf like function which reallocates the string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * @param str a pointer to the string buffer - * @param len the current length of the buffer + * @param len a pointer to the length of the buffer * @param fmt the format string * @param ap argument list * @return the length of produced string @@ -218,38 +218,38 @@ /** * An \c sprintf like function which reallocates the string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \attention The original buffer MUST have been allocated with the same allocator! * * @param alloc the allocator to use * @param str a pointer to the string buffer - * @param len the current length of the buffer + * @param len a pointer to the length of the buffer * @param fmt the format string * @param ap argument list * @return the length of produced string */ __attribute__((__nonnull__)) -int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, va_list ap); +int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap); /** * An \c sprintf like function which allocates a new string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * The location of the resulting string will \em always be stored to \p str. When the buffer * was sufficiently large, \p buf itself will be stored to the location of \p str. * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \remark When a new string needed to be allocated, the contents of \p buf will be * poisoned after the call, because this function tries to produce the string in \p buf, first. * * @param buf a pointer to the buffer - * @param len the length of the buffer + * @param len a pointer to the length of the buffer * @param str a pointer to the location * @param fmt the format string * @param ... additional arguments @@ -260,42 +260,42 @@ /** * An \c sprintf like function which allocates a new string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * The location of the resulting string will \em always be stored to \p str. When the buffer * was sufficiently large, \p buf itself will be stored to the location of \p str. * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \remark When a new string needed to be allocated, the contents of \p buf will be * poisoned after the call, because this function tries to produce the string in \p buf, first. * * @param alloc the allocator to use * @param buf a pointer to the buffer - * @param len the length of the buffer + * @param len a pointer to the length of the buffer * @param str a pointer to the location * @param fmt the format string * @param ... additional arguments * @return the length of produced string */ __attribute__((__nonnull__(1, 2, 4, 5), __format__(printf, 5, 6))) -int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, ... ); +int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ... ); /** * An \c sprintf like function which allocates a new string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * The location of the resulting string will \em always be stored to \p str. When the buffer * was sufficiently large, \p buf itself will be stored to the location of \p str. * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \remark When a new string needed to be allocated, the contents of \p buf will be * poisoned after the call, because this function tries to produce the string in \p buf, first. * * @param buf a pointer to the buffer - * @param len the length of the buffer + * @param len a pointer to the length of the buffer * @param str a pointer to the location * @param fmt the format string * @param ap argument list @@ -306,26 +306,26 @@ /** * An \c sprintf like function which allocates a new string when the buffer is not large enough. * + * The size of the buffer will be updated in \p len when necessary. + * * The location of the resulting string will \em always be stored to \p str. When the buffer * was sufficiently large, \p buf itself will be stored to the location of \p str. * * \note The resulting string is guaranteed to be zero-terminated. - * That means, when the buffer needed to be reallocated, the new size of the buffer will be - * the length returned by this function plus one. * * \remark When a new string needed to be allocated, the contents of \p buf will be * poisoned after the call, because this function tries to produce the string in \p buf, first. * * @param alloc the allocator to use * @param buf a pointer to the buffer - * @param len the length of the buffer + * @param len a pointer to the length of the buffer * @param str a pointer to the location * @param fmt the format string * @param ap argument list * @return the length of produced string */ __attribute__((__nonnull__)) -int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, va_list ap); +int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap); #ifdef __cplusplus