• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * asprintf.c
3  */
4 
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <stdarg.h>
8 
asprintf(char ** bufp,const char * format,...)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 	rv = -1;
25     else
26 	rv = vsnprintf(p, bytes, format, ap);
27 
28     va_end(ap);
29 
30     return rv;
31 }
32