xref: /aosp_15_r20/external/musl/src/stdio/vasprintf.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #define _GNU_SOURCE
2*c9945492SAndroid Build Coastguard Worker #include <stdio.h>
3*c9945492SAndroid Build Coastguard Worker #include <stdarg.h>
4*c9945492SAndroid Build Coastguard Worker #include <stdlib.h>
5*c9945492SAndroid Build Coastguard Worker 
vasprintf(char ** s,const char * fmt,va_list ap)6*c9945492SAndroid Build Coastguard Worker int vasprintf(char **s, const char *fmt, va_list ap)
7*c9945492SAndroid Build Coastguard Worker {
8*c9945492SAndroid Build Coastguard Worker 	va_list ap2;
9*c9945492SAndroid Build Coastguard Worker 	va_copy(ap2, ap);
10*c9945492SAndroid Build Coastguard Worker 	int l = vsnprintf(0, 0, fmt, ap2);
11*c9945492SAndroid Build Coastguard Worker 	va_end(ap2);
12*c9945492SAndroid Build Coastguard Worker 
13*c9945492SAndroid Build Coastguard Worker 	if (l<0 || !(*s=malloc(l+1U))) return -1;
14*c9945492SAndroid Build Coastguard Worker 	return vsnprintf(*s, l+1U, fmt, ap);
15*c9945492SAndroid Build Coastguard Worker }
16