#define _GNU_SOURCE
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>

#include "xmlrpc_config.h"  /* For HAVE_ASPRINTF */
#include "casprintf.h"

void GNU_PRINTF_ATTR(2,3)
casprintf(const char ** const retvalP, const char * const fmt, ...) {

    char *retval;

    va_list varargs;  /* mysterious structure used by variable arg facility */

    va_start(varargs, fmt); /* start up the mysterious variable arg facility */

#if HAVE_ASPRINTF
    vasprintf(&retval, fmt, varargs);
#else
    retval = malloc(8192);
    vsnprintf(retval, 8192, fmt, varargs);
#endif
    *retvalP = retval;
}



void
strfree(const char * const string) {
    free((void *)string);
}