summaryrefslogtreecommitdiffstats
path: root/Utilities/cmxmlrpc/casprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmxmlrpc/casprintf.c')
-rw-r--r--Utilities/cmxmlrpc/casprintf.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/Utilities/cmxmlrpc/casprintf.c b/Utilities/cmxmlrpc/casprintf.c
new file mode 100644
index 0000000..1fcc774
--- /dev/null
+++ b/Utilities/cmxmlrpc/casprintf.c
@@ -0,0 +1,35 @@
+#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);
+}
+
+
+