blob: 78d3caf22c624d948d61ce79b98208ef227de72e [file] [log] [blame]
#define _GNU_SOURCE
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
int vasprintf(char** s, const char* fmt, va_list ap) {
va_list ap2;
va_copy(ap2, ap);
int l = vsnprintf(0, 0, fmt, ap2);
va_end(ap2);
if (l < 0 || !(*s = malloc(l + 1U)))
return -1;
return vsnprintf(*s, l + 1U, fmt, ap);
}