blob: 765d65f69abbc7b8f29a8983902ee54db6a3dc3d [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);
}