about summary refs log tree commit diff
path: root/misc/subr.c
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2009-01-12 22:09:26 +0100
committerRichard Nyberg <rnyberg@murmeldjur.se>2009-01-12 23:43:35 +0100
commit7b8644dcc1a0db95c3ea321ebb8bc059ab931b42 (patch)
treefb4b0ad2985e42a66c982b15d79eaf0019f098e3 /misc/subr.c
parentb50a306ca3966dc056974c39e72e19da41ad873b (diff)
downloadbtpd-7b8644dcc1a0db95c3ea321ebb8bc059ab931b42.tar.gz
btpd-7b8644dcc1a0db95c3ea321ebb8bc059ab931b42.zip
Provide own implementation of asprintf if it's missing.
Diffstat (limited to 'misc/subr.c')
-rw-r--r--misc/subr.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/misc/subr.c b/misc/subr.c
index 5b5261e..b90af81 100644
--- a/misc/subr.c
+++ b/misc/subr.c
@@ -14,6 +14,8 @@
 #include <strings.h>
 #include <unistd.h>
 
+#include "subr.h"
+
 void *
 memfind(const void *sub, size_t sublen, const void *mem, size_t memlen)
 {
@@ -443,3 +445,21 @@ end:
     out[oi] = '\0';
     return 0;
 }
+
+#ifndef HAVE_ASPRINTF
+int
+asprintf(char **strp, const char *fmt, ...)
+{
+    int np;
+    va_list ap;
+    va_start(ap, fmt);
+    np = vsnprintf(NULL, 0, fmt, ap);
+    va_end(ap);
+    if ((*strp = malloc(np + 1)) == NULL)
+        return -1;
+    va_start(ap, fmt);
+    vsnprintf(*strp, np + 1, fmt, ap);
+    va_end(ap);
+    return np;
+}
+#endif