asprintf.c 494 B

1234567891011121314151617181920212223242526272829303132
  1. #include "common.h"
  2. int vasprintf(char **bufp, const char *fmt, va_list va)
  3. {
  4. va_list va2;
  5. int len;
  6. char *buf;
  7. va_copy(va2, va);
  8. len = vsnprintf(NULL, 0, fmt, va2);
  9. va_end(va2);
  10. buf = malloc(len+1);
  11. if (buf)
  12. len = vsnprintf(buf, len+1, fmt, va);
  13. *bufp = buf;
  14. return len;
  15. }
  16. int asprintf(char **bufp, const char *fmt, ...)
  17. {
  18. va_list va;
  19. int len;
  20. va_start(va, fmt);
  21. len = vasprintf(bufp, fmt, va);
  22. va_end(va);
  23. return len;
  24. }