aboutsummaryrefslogtreecommitdiff
path: root/wcsmbs
diff options
context:
space:
mode:
Diffstat (limited to 'wcsmbs')
-rw-r--r--wcsmbs/Makefile11
-rw-r--r--wcsmbs/wchar.h60
-rw-r--r--wcsmbs/wcscasecmp.c27
-rw-r--r--wcsmbs/wcscasecmp_l.c21
-rw-r--r--wcsmbs/wcsncase.c29
-rw-r--r--wcsmbs/wcsncase_l.c21
-rw-r--r--wcsmbs/wcstod_l.c29
-rw-r--r--wcsmbs/wcstof.c8
-rw-r--r--wcsmbs/wcstof_l.c29
-rw-r--r--wcsmbs/wcstol_l.c29
-rw-r--r--wcsmbs/wcstold.c6
-rw-r--r--wcsmbs/wcstold_l.c29
-rw-r--r--wcsmbs/wcstoll_l.c29
-rw-r--r--wcsmbs/wcstoul_l.c29
-rw-r--r--wcsmbs/wcstoull_l.c30
15 files changed, 373 insertions, 14 deletions
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index 76f0fd03b9..e39ba61684 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -31,10 +31,12 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
mbrlen mbrtowc wcrtomb mbsrtowcs wcsrtombs \
mbsnrtowcs wcsnrtombs \
wcstol wcstoul wcstoll wcstoull wcstod wcstold wcstof \
+ wcstol_l wcstoul_l wcstoll_l wcstoull_l \
+ wcstod_l wcstold_l wcstof_l \
wcscoll wcsxfrm \
wcwidth wcswidth \
wcscoll_l wcsxfrm_l \
- wcscasecmp wcsncase
+ wcscasecmp wcsncase wcscasecmp_l wcsncase_l
include ../Rules
@@ -48,3 +50,10 @@ CFLAGS-wcstoull.c = -I../stdlib
CFLAGS-wcstod.c = -I../stdlib
CFLAGS-wcstold.c = -I../stdlib
CFLAGS-wcstof.c = -I../stdlib
+CFLAGS-wcstol_l.c = -I../stdlib
+CFLAGS-wcstoul_l.c = -I../stdlib
+CFLAGS-wcstoll_l.c = -I../stdlib
+CFLAGS-wcstoull_l.c = -I../stdlib
+CFLAGS-wcstod_l.c = -I../stdlib
+CFLAGS-wcstold_l.c = -I../stdlib
+CFLAGS-wcstof_l.c = -I../stdlib
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 5247a866d3..d74a1bc492 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -93,6 +93,16 @@ extern int __wcsncasecmp __P ((__const wchar_t *__s1, __const wchar_t *__s2,
size_t __n));
extern int wcsncasecmp __P ((__const wchar_t *__s1, __const wchar_t *__s2,
size_t __n));
+
+/* Similar to the two functions above but take the information from
+ the provided locale and not the global locale. */
+# include <xlocale.h>
+
+extern int __wcscasecmp_l __P ((__const wchar_t *__s1, __const wchar_t *__s2,
+ __locale_t __loc));
+
+extern int __wcsncasecmp_l __P ((__const wchar_t *__s1, __const wchar_t *__s2,
+ size_t __n, __locale_t __loc));
#endif
/* Compare S1 and S2, both interpreted as appropriate to the
@@ -107,7 +117,6 @@ extern size_t wcsxfrm __P ((wchar_t *__restrict __s1,
#ifdef __USE_GNU
/* Similar to the two functions above but take the information from
the provided locale and not the global locale. */
-# include <xlocale.h>
/* Compare S1 and S2, both interpreted as appropriate to the
LC_COLLATE category of the given locale. */
@@ -316,6 +325,55 @@ extern unsigned long long int wcstoull __P ((__const wchar_t *
int __base));
#endif /* ISO C 9X or GCC and GNU. */
+#ifdef __USE_GNU
+/* The concept of one static locale per category is not very well
+ thought out. Many applications will need to process its data using
+ information from several different locales. Another application is
+ the implementation of the internationalization handling in the
+ upcoming ISO C++ standard library. To support this another set of
+ the functions using locale data exist which have an additional
+ argument.
+
+ Attention: all these functions are *not* standardized in any form.
+ This is a proof-of-concept implementation. */
+
+/* Structure for reentrant locale using functions. This is an
+ (almost) opaque type for the user level programs. */
+# include <xlocale.h>
+
+/* Special versions of the functions above which take the locale to
+ use as an additional parameter. */
+extern long int __wcstol_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr, int __base,
+ __locale_t __loc));
+
+extern unsigned long int __wcstoul_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ int __base, __locale_t __loc));
+
+extern long long int __wcstoll_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ int __base, __locale_t __loc));
+
+extern unsigned long long int __wcstoull_l __P ((__const wchar_t *__restrict
+ __nptr,
+ wchar_t **__restrict __endptr,
+ int __base,
+ __locale_t __loc));
+
+extern double __wcstod_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ __locale_t __loc));
+
+extern float __wcstof_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ __locale_t __loc));
+
+extern __long_double_t __wcstold_l __P ((__const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ __locale_t __loc));
+#endif /* GNU */
+
/* The internal entry points for `wcstoX' take an extra flag argument
saying whether or not to parse locale-dependent number grouping. */
diff --git a/wcsmbs/wcscasecmp.c b/wcsmbs/wcscasecmp.c
index 74908229a0..f32b4a14d2 100644
--- a/wcsmbs/wcscasecmp.c
+++ b/wcsmbs/wcscasecmp.c
@@ -25,15 +25,32 @@
#ifndef weak_alias
# define __wcscasecmp wcscasecmp
+# define TOLOWER(Ch) towlower (Ch)
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define __wcscasecmp __wcscasecmp_l
+# define TOLOWER(Ch) __towlower_l ((Ch), loc)
+# else
+# define TOLOWER(Ch) towlower (Ch)
+# endif
+#endif
+
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_DECL __locale_t loc;
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_DECL
#endif
/* Compare S1 and S2, ignoring case, returning less than, equal to or
greater than zero if S1 is lexicographically less than,
equal to or greater than S2. */
int
-__wcscasecmp (s1, s2)
+__wcscasecmp (s1, s2 LOCALE_PARAM)
const wchar_t *s1;
const wchar_t *s2;
+ LOCALE_PARAM_DECL
{
wint_t c1, c2;
@@ -42,15 +59,15 @@ __wcscasecmp (s1, s2)
do
{
- c1 = towlower (*s1++);
- c2 = towlower (*s2++);
- if (c1 == '\0')
+ c1 = TOLOWER (*s1++);
+ c2 = TOLOWER (*s2++);
+ if (c1 == L'\0')
break;
}
while (c1 == c2);
return c1 - c2;
}
-#ifdef weak_alias
+#ifndef __wcscasecmp
weak_alias (__wcscasecmp, wcscasecmp)
#endif
diff --git a/wcsmbs/wcscasecmp_l.c b/wcsmbs/wcscasecmp_l.c
new file mode 100644
index 0000000000..1f6a0e909c
--- /dev/null
+++ b/wcsmbs/wcscasecmp_l.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+#include <wcscasecmp.c>
diff --git a/wcsmbs/wcsncase.c b/wcsmbs/wcsncase.c
index c5b10c57a4..0f1dce261b 100644
--- a/wcsmbs/wcsncase.c
+++ b/wcsmbs/wcsncase.c
@@ -18,11 +18,31 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <wchar.h>
#include <wctype.h>
#ifndef weak_alias
# define __wcsncasecmp wcsncasecmp
+# define TOLOWER(Ch) towlower (Ch)
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define __wcsncasecmp __wcsncasecmp_l
+# define TOLOWER(Ch) __towlower_l ((Ch), loc)
+# else
+# define TOLOWER(Ch) towlower (Ch)
+# endif
+#endif
+
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_DECL __locale_t loc;
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_DECL
#endif
/* Compare no more than N wide characters of S1 and S2,
@@ -30,10 +50,11 @@
greater than zero if S1 is lexicographically less
than, equal to or greater than S2. */
int
-__wcsncasecmp (s1, s2, n)
+__wcsncasecmp (s1, s2, n LOCALE_PARAM)
const wchar_t *s1;
const wchar_t *s2;
size_t n;
+ LOCALE_PARAM_DECL
{
wint_t c1, c2;
@@ -42,14 +63,14 @@ __wcsncasecmp (s1, s2, n)
do
{
- c1 = (wint_t) towlower (*s1++);
- c2 = (wint_t) towlower (*s2++);
+ c1 = (wint_t) TOLOWER (*s1++);
+ c2 = (wint_t) TOLOWER (*s2++);
if (c1 == L'\0' || c1 != c2)
return c1 - c2;
} while (--n > 0);
return c1 - c2;
}
-#ifdef weak_alias
+#ifndef __wcsncasecmp
weak_alias (__wcsncasecmp, wcsncasecmp)
#endif
diff --git a/wcsmbs/wcsncase_l.c b/wcsmbs/wcsncase_l.c
new file mode 100644
index 0000000000..76e8cac947
--- /dev/null
+++ b/wcsmbs/wcsncase_l.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+#include <wcsncase.c>
diff --git a/wcsmbs/wcstod_l.c b/wcsmbs/wcstod_l.c
new file mode 100644
index 0000000000..b5a715bdbd
--- /dev/null
+++ b/wcsmbs/wcstod_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern double ____wcstod_l_internal (const wchar_t *, wchar_t **, int,
+ __locale_t);
+
+#include <wcstod.c>
diff --git a/wcsmbs/wcstof.c b/wcsmbs/wcstof.c
index f410e4cf32..38cd95a4e1 100644
--- a/wcsmbs/wcstof.c
+++ b/wcsmbs/wcstof.c
@@ -22,8 +22,12 @@
These macros tell it to produce the `float' version, `wcstof'. */
#define FLOAT float
-#define FLT LDBL
-#define STRTOF wcstof
+#define FLT FLT
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define STRTOF __wcstof_l
+#else
+# define STRTOF wcstof
+#endif
#define MPN2FLOAT __mpn_construct_float
#define FLOAT_HUGE_VAL HUGE_VALF
#define USE_WIDE_CHAR 1
diff --git a/wcsmbs/wcstof_l.c b/wcsmbs/wcstof_l.c
new file mode 100644
index 0000000000..13d4c10914
--- /dev/null
+++ b/wcsmbs/wcstof_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern float ____wcstof_l_internal (const wchar_t *, wchar_t **, int,
+ __locale_t);
+
+#include <wcstof.c>
diff --git a/wcsmbs/wcstol_l.c b/wcsmbs/wcstol_l.c
new file mode 100644
index 0000000000..5d8fdb06af
--- /dev/null
+++ b/wcsmbs/wcstol_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern long int ____wcstol_l_internal (const wchar_t *, wchar_t **, int, int,
+ __locale_t);
+
+#include <wcstol.c>
diff --git a/wcsmbs/wcstold.c b/wcsmbs/wcstold.c
index 1a3f0d2c6e..1c7cc6527f 100644
--- a/wcsmbs/wcstold.c
+++ b/wcsmbs/wcstold.c
@@ -23,7 +23,11 @@
#define FLOAT long double
#define FLT LDBL
-#define STRTOF wcstold
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define STRTOF __wcstold_l
+#else
+# define STRTOF wcstold
+#endif
#define MPN2FLOAT __mpn_construct_long_double
#define FLOAT_HUGE_VAL HUGE_VALL
#define USE_WIDE_CHAR 1
diff --git a/wcsmbs/wcstold_l.c b/wcsmbs/wcstold_l.c
new file mode 100644
index 0000000000..20a2228ba7
--- /dev/null
+++ b/wcsmbs/wcstold_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int,
+ __locale_t);
+
+#include <wcstold.c>
diff --git a/wcsmbs/wcstoll_l.c b/wcsmbs/wcstoll_l.c
new file mode 100644
index 0000000000..12a8c2d669
--- /dev/null
+++ b/wcsmbs/wcstoll_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern long long int ____wcstoll_l_internal (const wchar_t *, wchar_t **,
+ int, int, __locale_t);
+
+#include <wcstoll.c>
diff --git a/wcsmbs/wcstoul_l.c b/wcsmbs/wcstoul_l.c
new file mode 100644
index 0000000000..852d930bb0
--- /dev/null
+++ b/wcsmbs/wcstoul_l.c
@@ -0,0 +1,29 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern unsigned long int ____wcstoul_l_internal (const wchar_t *, wchar_t **,
+ int, int, __locale_t);
+
+#include <wcstoul.c>
diff --git a/wcsmbs/wcstoull_l.c b/wcsmbs/wcstoull_l.c
new file mode 100644
index 0000000000..c849a31f3d
--- /dev/null
+++ b/wcsmbs/wcstoull_l.c
@@ -0,0 +1,30 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define __need_wchar_t
+#include <stddef.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+
+extern unsigned long long int ____wcstoull_l_internal (const wchar_t *,
+ wchar_t **, int, int,
+ __locale_t);
+
+#include <wcstoull.c>