respect iso c namespace in stdio.h and wchar.h regarding va_list
authorRich Felker <dalias@aerifal.cx>
Wed, 26 Jun 2013 02:26:20 +0000 (22:26 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 26 Jun 2013 02:26:20 +0000 (22:26 -0400)
despite declaring functions that take arguments of type va_list, these
headers are not permitted by the c standard to expose the definition
of va_list, so an alias for the type must be used. the name
__isoc_va_list was chosen to convey that the purpose of this alternate
name is for iso c conformance, and to avoid the multitude of names
which gcc mangles with its hideous "fixincludes" monstrosity, leading
to serious header breakage if these "fixes" are run.

arch/arm/bits/alltypes.h.sh
arch/i386/bits/alltypes.h.sh
arch/microblaze/bits/alltypes.h.sh
arch/mips/bits/alltypes.h.sh
arch/powerpc/bits/alltypes.h.sh
arch/x86_64/bits/alltypes.h.sh
include/stdio.h
include/wchar.h

index 62e0327..748b873 100755 (executable)
@@ -21,6 +21,7 @@ TYPEDEF int ssize_t;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
 TYPEDEF unsigned wchar_t;
 
 #ifndef __cplusplus
 TYPEDEF unsigned wchar_t;
index 76c50ec..85776a8 100755 (executable)
@@ -22,8 +22,10 @@ TYPEDEF int ptrdiff_t;
 
 #if __GNUC__ >= 3
 TYPEDEF __builtin_va_list va_list;
 
 #if __GNUC__ >= 3
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 #else
 TYPEDEF struct __va_list * va_list;
 #else
 TYPEDEF struct __va_list * va_list;
+TYPEDEF struct __va_list * __isoc_va_list;
 #endif
 
 #ifndef __cplusplus
 #endif
 
 #ifndef __cplusplus
index 268321a..a5acd49 100755 (executable)
@@ -21,6 +21,7 @@ TYPEDEF int ssize_t;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
index 268321a..a5acd49 100755 (executable)
@@ -21,6 +21,7 @@ TYPEDEF int ssize_t;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
index 5fe05e2..77d335b 100755 (executable)
@@ -21,6 +21,7 @@ TYPEDEF int ssize_t;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
 TYPEDEF long wchar_t;
 
 #ifndef __cplusplus
 TYPEDEF long wchar_t;
index a6c9032..d3550f5 100755 (executable)
@@ -20,6 +20,7 @@ TYPEDEF unsigned long size_t;
 TYPEDEF long ssize_t;
 TYPEDEF long ptrdiff_t;
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF long ssize_t;
 TYPEDEF long ptrdiff_t;
 TYPEDEF __builtin_va_list va_list;
+TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
 
 #ifndef __cplusplus
 TYPEDEF int wchar_t;
index f648801..fe7ff51 100644 (file)
@@ -8,7 +8,7 @@ extern "C" {
 #include <features.h>
 
 #define __NEED_FILE
 #include <features.h>
 
 #define __NEED_FILE
-#define __NEED_va_list
+#define __NEED___isoc_va_list
 #define __NEED_size_t
 
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 #define __NEED_size_t
 
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
@@ -16,6 +16,7 @@ extern "C" {
  || defined(_BSD_SOURCE)
 #define __NEED_ssize_t
 #define __NEED_off_t
  || defined(_BSD_SOURCE)
 #define __NEED_ssize_t
 #define __NEED_off_t
+#define __NEED_va_list
 #endif
 
 #include <bits/alltypes.h>
 #endif
 
 #include <bits/alltypes.h>
@@ -99,17 +100,17 @@ int fprintf(FILE *__restrict, const char *__restrict, ...);
 int sprintf(char *__restrict, const char *__restrict, ...);
 int snprintf(char *__restrict, size_t, const char *__restrict, ...);
 
 int sprintf(char *__restrict, const char *__restrict, ...);
 int snprintf(char *__restrict, size_t, const char *__restrict, ...);
 
-int vprintf(const char *__restrict, va_list);
-int vfprintf(FILE *__restrict, const char *__restrict, va_list);
-int vsprintf(char *__restrict, const char *__restrict, va_list);
-int vsnprintf(char *__restrict, size_t, const char *__restrict, va_list);
+int vprintf(const char *__restrict, __isoc_va_list);
+int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
+int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
 
 int scanf(const char *__restrict, ...);
 int fscanf(FILE *__restrict, const char *__restrict, ...);
 int sscanf(const char *__restrict, const char *__restrict, ...);
 
 int scanf(const char *__restrict, ...);
 int fscanf(FILE *__restrict, const char *__restrict, ...);
 int sscanf(const char *__restrict, const char *__restrict, ...);
-int vscanf(const char *__restrict, va_list);
-int vfscanf(FILE *__restrict, const char *__restrict, va_list);
-int vsscanf(const char *__restrict, const char *__restrict, va_list);
+int vscanf(const char *__restrict, __isoc_va_list);
+int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
+int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
 
 void perror(const char *);
 
 
 void perror(const char *);
 
@@ -131,7 +132,7 @@ int fileno(FILE *);
 int fseeko(FILE *, off_t, int);
 off_t ftello(FILE *);
 int dprintf(int, const char *__restrict, ...);
 int fseeko(FILE *, off_t, int);
 off_t ftello(FILE *);
 int dprintf(int, const char *__restrict, ...);
-int vdprintf(int, const char *__restrict, va_list);
+int vdprintf(int, const char *__restrict, __isoc_va_list);
 void flockfile(FILE *);
 int ftrylockfile(FILE *);
 void funlockfile(FILE *);
 void flockfile(FILE *);
 int ftrylockfile(FILE *);
 void funlockfile(FILE *);
@@ -171,7 +172,7 @@ int getw(FILE *);
 int putw(int, FILE *);
 char *fgetln(FILE *, size_t *);
 int asprintf(char **, const char *, ...);
 int putw(int, FILE *);
 char *fgetln(FILE *, size_t *);
 int asprintf(char **, const char *, ...);
-int vasprintf(char **, const char *, va_list);
+int vasprintf(char **, const char *, __isoc_va_list);
 #endif
 
 #ifdef _GNU_SOURCE
 #endif
 
 #ifdef _GNU_SOURCE
index d873881..0f1f6d2 100644 (file)
@@ -8,7 +8,7 @@ extern "C" {
 #include <features.h>
 
 #define __NEED_FILE
 #include <features.h>
 
 #define __NEED_FILE
-#define __NEED_va_list
+#define __NEED___isoc_va_list
 #define __NEED_size_t
 #define __NEED_wchar_t
 #define __NEED_wint_t
 #define __NEED_size_t
 #define __NEED_wchar_t
 #define __NEED_wint_t
@@ -16,6 +16,7 @@ extern "C" {
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 #define __NEED_locale_t
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 #define __NEED_locale_t
+#define __NEED_va_list
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
@@ -105,17 +106,17 @@ int wprintf (const wchar_t *__restrict, ...);
 int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...);
 int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
 
 int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...);
 int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
 
-int vwprintf (const wchar_t *__restrict, va_list);
-int vfwprintf (FILE *__restrict, const wchar_t *__restrict, va_list);
-int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, va_list);
+int vwprintf (const wchar_t *__restrict, __isoc_va_list);
+int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list);
 
 int wscanf (const wchar_t *__restrict, ...);
 int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...);
 int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...);
 
 
 int wscanf (const wchar_t *__restrict, ...);
 int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...);
 int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...);
 
-int vwscanf (const wchar_t *__restrict, va_list);
-int vfwscanf (FILE *__restrict, const wchar_t *__restrict, va_list);
-int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, va_list);
+int vwscanf (const wchar_t *__restrict, __isoc_va_list);
+int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
+int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list);
 
 wint_t fgetwc (FILE *);
 wint_t getwc (FILE *);
 
 wint_t fgetwc (FILE *);
 wint_t getwc (FILE *);