20 lines
370 B
C
20 lines
370 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
int vasprintf(char **strp, char const *format, va_list args1)
|
|
{
|
|
va_list args2;
|
|
va_copy(args2, args1);
|
|
|
|
int count = vsnprintf(NULL, 0, format, args1);
|
|
va_end(args1);
|
|
|
|
char *str = malloc(count + 1);
|
|
if(str) count = vsnprintf(str, count + 1, format, args2);
|
|
va_end(args2);
|
|
|
|
if(!str) return -1;
|
|
*strp = str;
|
|
return count;
|
|
}
|