26 lines
382 B
C
26 lines
382 B
C
/*
|
|
* 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);
|
|
}
|