#define __NEED_wchar_t
#define __NEED_wint_t
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+#define __NEED_locale_t
+#endif
+
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
#define __NEED_wctype_t
#endif
#include <bits/alltypes.h>
+#include <bits/wchar.h>
+
#undef NULL
#ifdef __cplusplus
#define NULL 0
#define NULL ((void*)0)
#endif
-#undef WCHAR_MIN
-#undef WCHAR_MAX
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-
#undef WEOF
#define WEOF (-1)
-
typedef struct
{
unsigned __opaque1, __opaque2;
#undef iswdigit
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+FILE *open_wmemstream(wchar_t **, size_t *);
+size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *);
+size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *);
+wchar_t *wcsdup(const wchar_t *);
+size_t wcsnlen (const wchar_t *, size_t);
+wchar_t *wcpcpy (wchar_t *, const wchar_t *);
+wchar_t *wcpncpy (wchar_t *, const wchar_t *, size_t);
+int wcscasecmp(const wchar_t *, const wchar_t *);
+int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
+int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
+int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
+int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
+size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t n, locale_t);
+#endif
+
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
int wcwidth (wchar_t);
int wcswidth (const wchar_t *, size_t);