aboutsummaryrefslogblamecommitdiffstats
path: root/vasprintf.c
blob: 59fb190b9ecd9635b3fd590348f969798d19c471 (plain) (tree)

























                                                             
/* See LICENSE file for copyright and license details. */
#include "libsimple.h"


int
libsimple_vasprintf(char **strp, const char *fmt, va_list ap)
{
	FILE *fp;
	size_t siz = 0;
	int ret;
	*strp = NULL;
	fp = open_memstream(strp, &siz);
	if (!fp)
		goto fail;
	ret = vfprintf(fp, fmt, ap);
	if (ret < 0)
		goto fail;
	if (fputc(0, fp))
		goto fail;
	fclose(fp);
	return ret;
fail:
	free(*strp);
	*strp = NULL;
	return -1;
}