| /* | |
| * 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); | |
| } |