/* SPDX-License-Identifier: MIT * Source: https://ccodearchive.net/info/asprintf.html */ #ifndef CCAN_ASPRINTF_H #define CCAN_ASPRINTF_H #include "config.h" #include /** * afmt - allocate and populate a string with the given format. * @fmt: printf-style format. * * This is a simplified asprintf interface. Returns NULL on error. */ char *PRINTF_FMT(1, 2) afmt(const char *fmt, ...); #if HAVE_ASPRINTF #include #else #include /** * asprintf - printf to a dynamically-allocated string. * @strp: pointer to the string to allocate. * @fmt: printf-style format. * * Returns -1 (and leaves @strp undefined) on an error. Otherwise returns * number of bytes printed into @strp. * * Example: * static char *greeting(const char *name) * { * char *str; * int len = asprintf(&str, "Hello %s", name); * if (len < 0) * return NULL; * return str; * } */ int PRINTF_FMT(2, 3) asprintf(char **strp, const char *fmt, ...); /** * vasprintf - vprintf to a dynamically-allocated string. * @strp: pointer to the string to allocate. * @fmt: printf-style format. * * Returns -1 (and leaves @strp undefined) on an error. Otherwise returns * number of bytes printed into @strp. */ int vasprintf(char **strp, const char *fmt, va_list ap); #endif #endif /* CCAN_ASPRINTF_H */