/* | |
* vasprintf.c | |
*/ | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <stdarg.h> | |
int vasprintf(char **bufp, const char *format, va_list ap) | |
{ | |
va_list ap1; | |
int bytes; | |
char *p; | |
va_copy(ap1, ap); | |
bytes = vsnprintf(NULL, 0, format, ap1) + 1; | |
va_end(ap1); | |
*bufp = p = malloc(bytes); | |
if (!p) | |
return -1; | |
return vsnprintf(p, bytes, format, ap); | |
} |