Standardize on the vi editing directives being on the first line.
[platform/upstream/busybox.git] / libbb / bb_asprintf.c
1 /* vi: set sw=4 ts=4: */
2 /*
3    Copyright (C) 2002,2005 Vladimir Oleynik <dzo@simtreas.ru>
4 */
5
6 #include <stdlib.h>
7 #include <stdio.h>
8 #include <stdarg.h>
9 #include "libbb.h"
10
11 char *bb_xasprintf(const char *format, ...)
12 {
13         va_list p;
14         int r;
15         char *string_ptr;
16
17 #ifdef HAVE_GNU_EXTENSIONS
18         va_start(p, format);
19         r = vasprintf(&string_ptr, format, p);
20         va_end(p);
21 #else
22         va_start(p, format);
23         r = vsnprintf(NULL, 0, format, p);
24         va_end(p);
25         string_ptr = xmalloc(r+1);
26         va_start(p, format);
27         r = vsnprintf(string_ptr, r+1, format, p);
28         va_end(p);
29 #endif
30
31         if (r < 0) {
32                 bb_perror_msg_and_die("bb_xasprintf");
33         }
34         return string_ptr;
35 }