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 | } |
16 |