#include "common.h"

int vasprintf(char **bufp, const char *fmt, va_list va)
{
    va_list va2;
    int len;
    char *buf;

    va_copy(va2, va);
    len = vsnprintf(NULL, 0, fmt, va2);
    va_end(va2);

    buf = malloc(len+1);
    if (buf)
	len = vsnprintf(buf, len+1, fmt, va);

    *bufp = buf;

    return len;
}

int asprintf(char **bufp, const char *fmt, ...)
{
    va_list va;
    int len;

    va_start(va, fmt);
    len = vasprintf(bufp, fmt, va);
    va_end(va);

    return len;
}