github.com/afumu/libc@v0.0.6/musl/src/stdio/vasprintf.c (about) 1 #define _GNU_SOURCE 2 #include <stdio.h> 3 #include <stdarg.h> 4 #include <stdlib.h> 5 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 }