X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/db2bf4111cde36048ac66bbac58547d105bc7e80..67b5031ec6d160b5cae425466a34d1be3b211dd4:/utils/gprintf.h diff --git a/utils/gprintf.h b/utils/gprintf.h index 9e32338..0f06dd3 100644 --- a/utils/gprintf.h +++ b/utils/gprintf.h @@ -86,6 +86,33 @@ extern int PRINTF_LIKE(3, 4) gprintf(const struct gprintf_ops */*ops*/, void */*out*/, const char */*p*/, ...); +/* --- @gprintf_memputf@ --- * + * + * Arguments: @char **buf_inout@ = address of output buffer pointer + * @size_t *sz_inout@ = address of buffer size + * @size_t maxsz@ = buffer size needed for this operation + * @const char *p@ = pointer to format string + * @va_list *ap@ = captured format-arguments tail + * + * Returns: The formatted length. + * + * Use: Generic utility for mostly implementing the @nputf@ output + * function, if you don't have a better option. + * + * On entry, @*buf_inout@ should be null or a buffer pointer, + * with @*sz_inout@ either zero or the buffer's size, + * respectively. On exit, @*buf_input@ and @*sz_inout@ will be + * updated, if necessary, to describe a sufficiently large + * buffer, and the formatted string will have been written to + * the buffer. + * + * When the buffer is no longer required, free it using @xfree@. + */ + +extern size_t gprintf_memputf(char **/*buf_inout*/, size_t */*sz_inout*/, + size_t /*maxsz*/, + const char */*p*/, va_list /*ap*/); + /*----- That's all, folks -------------------------------------------------*/ #ifdef __cplusplus