1
0

vasprintf.c 302 B

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