wchar: Define va_list for POSIX (BZ #30035)

This was uncovered by a recent clang change [1].  Different than ISO C,
POSIX states that va_list should be exported by wchar.h [2].

Checked on x86_64-linux-gnu and aarch64-linux-gnu.

[1] https://reviews.llvm.org/D137268
[2] https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/wchar.h.html
This commit is contained in:
Adhemerval Zanella 2023-01-23 13:59:31 -03:00
parent d2b1af4305
commit a363f70751
2 changed files with 22 additions and 6 deletions

View File

@ -15,6 +15,11 @@ type size_t
type locale_t
# endif
tag {struct tm}
# if !defined ISO99 && !defined ISO11 && !defined UNIX98
type va_list
# else
# define va_list __gnuc_va_list
# endif
function wint_t btowc (int)
function int fwprintf (FILE*, const wchar_t*, ...)
@ -59,17 +64,17 @@ function wint_t towlower (wint_t)
function wint_t towupper (wint_t)
# endif
function wint_t ungetwc (wint_t, FILE*)
function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list)
function int vfwprintf (FILE*, const wchar_t*, va_list)
# ifndef UNIX98
function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list)
function int vfwscanf (FILE*, const wchar_t*, va_list)
# endif
function int vwprintf (const wchar_t*, __gnuc_va_list)
function int vwprintf (const wchar_t*, va_list)
# ifndef UNIX98
function int vwscanf (const wchar_t*, __gnuc_va_list)
function int vwscanf (const wchar_t*, va_list)
# endif
function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list)
function int vswprintf (wchar_t*, size_t, const wchar_t*, va_list)
# ifndef UNIX98
function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list)
function int vswscanf (const wchar_t*, const wchar_t*, va_list)
# endif
# if defined XOPEN2K8 || defined POSIX2008
function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*)

View File

@ -37,6 +37,17 @@
#define __need___va_list
#include <stdarg.h>
#if defined __USE_XOPEN2K || defined __USE_XOPEN2K8
# ifdef __GNUC__
# ifndef _VA_LIST_DEFINED
typedef __gnuc_va_list va_list;
# define _VA_LIST_DEFINED
# endif
# else
# include <stdarg.h>
# endif
#endif
#include <bits/wchar.h>
#include <bits/types/wint_t.h>
#include <bits/types/mbstate_t.h>