summaryrefslogtreecommitdiff
path: root/wcsmbs
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-05-24 02:30:09 +0000
committerUlrich Drepper <drepper@redhat.com>1997-05-24 02:30:09 +0000
commit0501d6036744d44cad6d5a6eda8090ddfbe604c4 (patch)
treeac5de4474ab5209dd348b7442dac99d4547851af /wcsmbs
parentbfbc57545a197afff72572c3a6f0563023d553a5 (diff)
Update.
1997-05-24 03:51 Ulrich Drepper <drepper@cygnus.com> * stdlib/Makefile (routines): Add strtol_l, strtoul_l, strtoll_l, strtoull_l, strtof_l, strtod_l, and strtold_l. * stdlib/stdlib.h: Add prototypes for new functions. * stdlib/strtod.c: Change for compiling as strtoX_l. * stdlib/strtol.c: Likewise. * stdlib/strtof.c: Likewise. * stdlib/strtold.c: Likewise. * stdlib/strtod_l.c: New file. * stdlib/strtof_l.c: New file. * stdlib/strtold_l.c: New file. * stdlib/strtol_l.c: New file. * stdlib/strtoul_l.c: New file. * stdlib/strtoll_l.c: New file. * stdlib/strtoull_l.c: New file. * string/Makefile (routines): Add strcasecmp_l and strncase_l. * string/string.h: Add prototypes for new functions. * sysdeps/generic/strcasecmp.c: Change for compiling as strcasecmp_l. * sysdeps/generic/strncase.c: Change for compiling as strncasecmp_l. * sysdeps/generic/strcasecmp_l.c: New file. * sysdeps/generic/strncase_l.c: New file. * wcsmbs/Makefile (routines): Add wcstol_l, wcstoul_l, wcstoll_l, wcstoull_l, wcstod_l, wcstold_l, wcstof_l, wcscasecmp_l, and wcsncase_l. * wcsmbs/wchar.h: Add prototypes for new functions. * wcsmbs/wcscasecmp.c: Change for compiling as wcscasecmp_l. * wcsmbs/wcsncase.c: Change for compiling as wcsncasecmp_l. * wcsmbs/wcscasecmp_l.c: New file. * wcsmbs/wcsncase_l.c: New file. * wcsmbs/wcstof.c: Change for compiling as wcstof_l.c * wcsmbs/wcstold.c: Change for compiling as wcstold_l.c * wcsmcs/wcstod_l.c: New file. * wcsmcs/wcstof_l.c: New file. * wcsmcs/wcstold_l.c: New file. * wcsmcs/wcstol_l.c: New file. * wcsmcs/wcstoul_l.c: New file. * wcsmcs/wcstoll_l.c: New file. * wcsmcs/wcstoull_l.c: New file. * Makeconfig (binfmt-subdir): New variable. Set to `elf' if $(elf) is defined. More to come later when other binary formats are supported. * Makefile (subdirs): Remove elf. Add $(binfmt-subdir). Suggested by Philip Blundell. * stdlib/Makefile (headers): Add fmtmsg.h. (routines): Add fmtmsg. * stdlib/fmtmsg.c: New file. * stdlib/fmtmsg.h: New file. * manual/stdio.texi: Add description of fmtmsg and addseverity. * manual/examples/fmtmsgexpl.c: Example program for fmtmsg documentation. 1997-05-23 15:26 Philip Blundell <pjb27@cam.ac.uk> * resolv/res_query.c (res_querydomain): Avoid potential buffer overrun. Reported by Dan A. Dickey <ddickey@transition.com>. 1997-05-22 18:36 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * elf/dl-support.c (_dl_sysdep_open_zero_fill, _dl_sysdep_read_whole_file): Moved functions to ... * elf/dl-misc.c: This new file. * sysdeps/generic/dl-sysdepio.c: Delete file and move functions... * elf/dl-misc.c: ... here. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_open_zero_fill, _dl_sysdep_read_whole_file): Delete functions; they now come from elf/dl-misc.c (dl-support.c had contained identical versions). * sysdeps/mach/hurd/dl-sysdepio.c: Delete file; move functions... * sysdeps/mach/hurd/dl-sysdep.c: ... here, but mark them weak so that the regular ones in dl-misc work once we've initialized. * elf/Makefile (dl-routines): Remove dl-sysdepio.c. Add dl-misc.c. 1997-05-22 21:55 Philip Blundell <pjb27@cam.ac.uk> * inet/Makefile (headers): Add netinet/inbits.h. * inet/netinet/in.h: New file. * sysdeps/generic/netinet/inbits.h: Likewise. * sysdeps/unix/sysv/linux/netinet/inbits.h: Likewise. * sysdeps/generic/netinet/ip6.h: Move to... * inet/netinet/ip6.h: ... here. * sysdeps/generic/netinet/icmp6.h: Move to... * inet/netinet/icmp6.h: ... here. * sysdeps/unix/sysv/linux/netinet/in.h: Remove. * sysdeps/generic/netinet/in.h: Remove. 1997-05-22 05:40 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): If we are not looking at the new thread-safe .plt, don't be lazy about relocs. (_dl_runtime_resolve): Fix up arithmetic for new .plt layout. (elf_alpha_fix_plt): Insert wmb as appropriate to ensure safety. * elf/dynamic-link.h (ELF_DYNAMIC_RELOCATE): Let elf_machine_runtime_setup() decide if we can actually be lazy. * elf/rtld.c (_dl_start): So don't call it. * elf/dl-reloc.c (_dl_relocate_object): Likewise. * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Return lazy. * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/mips/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/powerpc/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/sparc/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/stub/dl-machine.h (elf_machine_runtime_setup): Update skeleton definition. 1997-05-22 18:45 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/fpu/__math.h (logb): Remove second value placed on stack by fxtract. 1997-05-22 13:07 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sunrpc/rpcsvc/rusers.x: Provide and correct prototypes, add cast to (xdrproc_t) where necessary to prevent warnings. 1997-05-22 12:18 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Remove I/O functions. * sunrpc/rpcinfo.c (get_inet_address): Use INADDR_NONE and INADDR_ANY * sysdeps/libm-ieee754/s_cexp.c: Fix typo: string_alias -> * nss/XXX-lookup.c: Add missing explanation.
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>