Commit 864148d6 authored by Brian Paul's avatar Brian Paul

util: add util_vasprintf() for Windows (v2)

We don't have vasprintf() on Windows so we need to implement it ourselves.

v2: compute actual length of output string, per Nicolai Hähnle.
Reviewed-by: default avatarNicolai Hähnle <nicolai.haehnle@amd.com>
parent 76a4209d
......@@ -110,6 +110,27 @@ util_sprintf(char *str, const char *format, ...)
va_end(ap);
}
static inline int
util_vasprintf(char **ret, const char *format, va_list ap)
{
va_list ap_copy;
/* Compute length of output string first */
va_copy(ap_copy, ap);
int r = util_vsnprintf(NULL, 0, format, ap);
va_end(ap_copy);
if (r < 0)
return -1;
*ret = (char *) malloc(r + 1);
if (!ret)
return -1;
/* Print to buffer */
return util_vsnprintf(*ret, r + 1, format, ap);
}
static inline char *
util_strchr(const char *s, char c)
{
......@@ -186,6 +207,7 @@ util_strstr(const char *haystack, const char *needle)
#define util_vsnprintf vsnprintf
#define util_snprintf snprintf
#define util_vsprintf vsprintf
#define util_vasprintf vasprintf
#define util_sprintf sprintf
#define util_strchr strchr
#define util_strcmp strcmp
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment