]> sourceware.org Git - newlib-cygwin.git/commitdiff
Define va_list in stdio.h and wchar.h
authorYaakov Selkowitz <yselkowi@redhat.com>
Fri, 12 Aug 2016 08:16:52 +0000 (03:16 -0500)
committerYaakov Selkowitz <yselkowi@redhat.com>
Fri, 12 Aug 2016 16:43:14 +0000 (11:43 -0500)
This typedef, along with that of FILE in wchar.h, were XSI prior to
inclusion in POSIX.1-2008.

Fixes: https://sourceware.org/ml/newlib/2016/msg00640.html
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
newlib/libc/include/stdio.h
newlib/libc/include/wchar.h

index 866d8167d6f922f8f1133f8bb8b33b86be4b0f4a..097b0f6659e0aa7bf7b39054c1d687ec5bd31c9b 100644 (file)
 #include <sys/cdefs.h>
 #include <stddef.h>
 
+/* typedef only __gnuc_va_list, used throughout the header */
 #define __need___va_list
 #include <stdarg.h>
 
+/* typedef va_list only when required */
+#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
+#ifdef __GNUC__
+#ifndef _VA_LIST_DEFINED
+typedef __gnuc_va_list va_list;
+#define _VA_LIST_DEFINED
+#endif
+#else /* !__GNUC__ */
+#include <stdarg.h>
+#endif
+#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
+
 /*
  * <sys/reent.h> defines __FILE, _fpos_t.
  * They must be defined there because struct _reent needs them (and we don't
index e5b840dbe0ba59b8abd38691eaf24a9a913df741..f4996ecc52d7193826c151758364c2d2cf39accb 100644 (file)
 #define __need_NULL
 #include <stddef.h>
 
-#define __need___va_list
-#include <stdarg.h>
-
 /* For _mbstate_t definition. */
 #include <sys/_types.h>
 #include <sys/cdefs.h>
 /* For __STDC_ISO_10646__ */
 #include <sys/features.h>
 
+/* typedef only __gnuc_va_list, used throughout the header */
+#define __need___va_list
+#include <stdarg.h>
+
+/* typedef va_list only when required */
+#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
+#ifdef __GNUC__
+#ifndef _VA_LIST_DEFINED
+typedef __gnuc_va_list va_list;
+#define _VA_LIST_DEFINED
+#endif
+#else /* !__GNUC__ */
+#include <stdarg.h>
+#endif
+#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
+
 #if __XSI_VISIBLE /* && __XSI_VISIBLE < 800 */
 #include <wctype.h>
 #endif
 
 _BEGIN_STD_C
 
+#if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE
 /* As in stdio.h, <sys/reent.h> defines __FILE. */
 #if !defined(__FILE_defined)
 typedef __FILE FILE;
 # define __FILE_defined
 #endif
+#endif
 
 /* As required by POSIX.1-2008, declare tm as incomplete type.
    The actual definition is in time.h. */
This page took 0.03559 seconds and 5 git commands to generate.