Add a note about empty files.
[gnulib.git] / lib / vasprintf.h
1 /* vsprintf with automatic memory allocation.
2    Copyright (C) 2002-2003 Free Software Foundation, Inc.
3
4    This program is free software; you can redistribute it and/or modify it
5    under the terms of the GNU Library General Public License as published
6    by the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public
15    License along with this program; if not, write to the Free Software
16    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17    USA.  */
18
19 #ifndef _VASPRINTF_H
20 #define _VASPRINTF_H
21
22 #if HAVE_VASPRINTF
23
24 /* Get asprintf(), vasprintf() declarations.  */
25 #include <stdio.h>
26
27 #else
28
29 /* Get va_list.  */
30 #include <stdarg.h>
31
32 #ifndef __attribute__
33 /* This feature is available in gcc versions 2.5 and later.  */
34 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
35 #  define __attribute__(Spec) /* empty */
36 # endif
37 /* The __-protected variants of `format' and `printf' attributes
38    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
39 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
40 #  define __format__ format
41 #  define __printf__ printf
42 # endif
43 #endif
44
45 #ifdef  __cplusplus
46 extern "C" {
47 #endif
48
49 /* Write formatted output to a string dynamically allocated with malloc().
50    If the memory allocation succeeds, store the address of the string in
51    *RESULT and return the number of resulting bytes, excluding the trailing
52    NUL.  Upon memory allocation error, or some other error, return -1.  */
53 extern int asprintf (char **result, const char *format, ...)
54        __attribute__ ((__format__ (__printf__, 2, 3)));
55 extern int vasprintf (char **result, const char *format, va_list args)
56        __attribute__ ((__format__ (__printf__, 2, 0)));
57
58 #ifdef  __cplusplus
59 }
60 #endif
61
62 #endif
63
64 #endif /* _VASPRINTF_H */