aboutsummaryrefslogtreecommitdiffstats
path: root/io/vasprintf.c
blob: 24f9332e6c4ff3e4be130295dd140a1e17ea1846 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "../memory.h"
#include "io.h"

int vasprintf(char **string, char const *restrict format, va_list arg)
{
	va_list tmp;
	va_copy(tmp, arg);
	int lenght = _vsnprintf_wrap(NULL, 0, format, tmp);
	va_end(tmp);
	if (lenght < 0) {
		return 1;
	}
	*string = reallocarray(NULL, (size_t)lenght + 1, sizeof *string);
	if (*string == NULL) {
		return 1;
	}
	return _vsnprintf_wrap(*string, (size_t)lenght + 1, format, arg);
}