diff options
Diffstat (limited to 'system.h')
-rw-r--r-- | system.h | 45 |
1 files changed, 43 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $Id: clibrary.h 7121 2005-01-06 00:40:37Z rra $ +/* $Id$ ** ** Declarations of routines and variables in the C library. Including this ** file is the equivalent of including all of the following headers, @@ -40,4 +40,45 @@ # endif #endif -#endif /* !CLIBRARY_H */ +/* BEGIN_DECLS is used at the beginning of declarations so that C++ + compilers don't mangle their names. END_DECLS is used at the end. */ +#undef BEGIN_DECLS +#undef END_DECLS +#ifdef __cplusplus +# define BEGIN_DECLS extern "C" { +# define END_DECLS } +#else +# define BEGIN_DECLS /* empty */ +# define END_DECLS /* empty */ +#endif + +BEGIN_DECLS + +/* Provide prototypes for functions not declared in system headers. Use the + HAVE_DECL macros for those functions that may be prototyped but + implemented incorrectly or implemented without a prototype. */ +#if !HAVE_ASPRINTF +extern int asprintf(char **, const char *, ...); +extern int vasprintf(char **, const char *, va_list); +#endif +#if !HAVE_DECL_SNPRINTF +extern int snprintf(char *, size_t, const char *, ...) + __attribute__((__format__(printf, 3, 4))); +#endif +#if !HAVE_DECL_VSNPRINTF +extern int vsnprintf(char *, size_t, const char *, va_list); +#endif + +END_DECLS + +/* C99 requires va_copy. Older versions of GCC provide __va_copy. Per the + Autoconf manual, memcpy is a generally portable fallback. */ +#ifndef va_copy +# ifdef __va_copy +# define va_copy(d, s) __va_copy((d), (s)) +# else +# define va_copy(d, s) memcpy(&(d), &(s), sizeof(va_list)) +# endif +#endif + +#endif /* !SYSTEM_H */ |