1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include <stdarg.h>
4 #include <stdlib.h>
5 
vasprintf(char ** s,const char * fmt,va_list ap)6 int vasprintf(char **s, const char *fmt, va_list ap)
7 {
8 	va_list ap2;
9 	va_copy(ap2, ap);
10 	int l = vsnprintf(0, 0, fmt, ap2);
11 	va_end(ap2);
12 
13 	if (l<0 || !(*s=malloc(l+1U))) return -1;
14 	return vsnprintf(*s, l+1U, fmt, ap);
15 }
16