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