chiark / gitweb /
[PATCH] klibc: version 1.0.3
[elogind.git] / klibc / klibc / asprintf.c
1 /*
2  * asprintf.c
3  */
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <stdarg.h>
8
9 int asprintf(char **bufp, const char *format, ...)
10 {
11   va_list ap, ap1;
12   int rv;
13   int bytes;
14   char *p;
15
16   va_start(ap, format);
17   va_copy(ap1, ap);
18
19   bytes = vsnprintf(NULL, 0, format, ap1) + 1;
20   va_end(ap1);
21
22   *bufp = p = malloc(bytes);
23   if ( !p )
24     return -1;
25   
26   rv = vsnprintf(p, bytes, format, ap);
27   va_end(ap);
28
29   return rv;
30 }