aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-03-14 21:12:06 +0000
committerUlrich Drepper <drepper@redhat.com>2004-03-14 21:12:06 +0000
commitccadf7b5346a3e21c692dfcbfcf38a63433bc36a (patch)
treea1e826af3345eee581925387513b1b6c76629c31
parent3bc9b83f49805969b7d139b52ef6b003e5136354 (diff)
downloadglibc-ccadf7b5346a3e21c692dfcbfcf38a63433bc36a.tar.xz
glibc-ccadf7b5346a3e21c692dfcbfcf38a63433bc36a.zip
Update.
2004-03-14 Ulrich Drepper <drepper@redhat.com> Make the non-_l functions wrappers around the _l functions. * include/monetary.h: Declare __vstrmon_l. * include/string.h: Add libc_hidden_proto for __strcoll_l and __strxfrm_l. * include/time.h: Define ptime_locale_status. Declare __strptime_internal. * include/wchar.h: Add libc_hidden_proto for __wcscoll_l and __wcsxfrm_l. * stdlib/strfmon.c: Move the code to strfmon_l.c. Add little wrapper around __vstrfmon_l. * stdlib/strfmon_l.c: Add real implementation. Split into new function __vstrfmon_l to allow calling it from strfmon. * stdlib/strtod.c: Move real code to strtod_l.c and add wrapper. * stdlib/strtod_l.c: Add real implementation. * stdlib/strtof.c: Adjust to changed strtod.c. * stdlib/strtof_l.c: Include strtod_l.c now. * stdlib/strtold.c: New file. * stdlib/strtold_l.c: Removed. * string/strcoll.c: Move real code to strcoll_l.c: Add wrapper. * string/strcoll_l.c: Add real implementation. * string/strxfrm.c: Move real code to strxfrm_l.c: Add wrapper. * string/strxfrm_l.c: Add real implementation. * sysdeps/generic/strtol.c: Move real implementation to strtol_l.c. Add wrappers. * sysdeps/generic/strtol_l.c: Add real implementation. * sysdeps/generic/strtold.c: Removed. * sysdeps/generic/strtold_l.c: New file. * sysdeps/generic/strtoll_l.c: Include strtol_l.c now. Adjust #defines. * sysdeps/generic/strtoul_l.c: Likewise. * sysdeps/generic/strtoull_l.c: Likewise. * sysdeps/generic/wcstol_l.c: Likewise. * sysdeps/generic/wcstoll_l.c: Likewise. * sysdeps/generic/wcstoul_l.c: Likewise. * sysdeps/generic/wcstoull_l.c: Likewise. * sysdeps/ieee754/ldbl-128/strtold.c: Removed. * sysdeps/ieee754/ldbl-128/strtold_l.c: New file. * sysdeps/ieee754/ldbl-96/strtold.c: Removed. * sysdeps/ieee754/ldbl-96/strtold_l.c: New file. * sysdeps/m68k/strtold.c: Removed. * sysdeps/m68k/strtold_l.c: New file. * time/strftime.c: Move real code to strftime_l.c. Add wrapper. * time/strftime_l.c: Add real implementation. * time/strptime.c: Move real code to strptime_l.c. Add wrapper. * time/strptime_l.c: Add real implementation. * time/wcsftime.c: Simplify since only wrappers are defined in strftime.c. * time/wcsftime_l.c: Include strftime_l.c. * wcsmbs/wcscoll.c: Simplify since the file is not used by wcscoll_l.c anymore. * wcsmbs/wcscoll_l.c: Include strcoll_l.c. * wcsmbs/wcsxfrm.c: Simplify since the file is not used by wcsxfrm_l.c anymore. * wcsmbs/wcsxfrm_l.c: Include strxfrm_l.c. * wcsmbs/wcstod.c: Prepare to include new strtod.c. * wcsmbs/wcstod_l.c: Include strtod_l.c. * wcsmbs/wcstof.c: Prepare to include new strtof.c. * wcsmbs/wcstof_l.c: Include strtof_l.c. * wcsmbs/wcstold.c: Prepare to include new strtold.c. * wcsmbs/wcstold_l.c: Include strtold_l.c. * locale/uselocale.c: Use _NL_CURRENT_LOCALE instead of __libc_tsd_get. * sysdeps/generic/strcasecmp.c: Optimize a bit. It's better to get a reference to the current locale and then use the _l functions. * sysdeps/generic/strncase.c: Likewise.
-rw-r--r--ChangeLog69
-rw-r--r--include/monetary.h4
-rw-r--r--include/string.h2
-rw-r--r--include/time.h13
-rw-r--r--include/wchar.h3
-rw-r--r--locale/uselocale.c4
-rw-r--r--stdlib/strfmon.c632
-rw-r--r--stdlib/strfmon_l.c636
-rw-r--r--stdlib/strtod.c1560
-rw-r--r--stdlib/strtod_l.c1551
-rw-r--r--stdlib/strtof.c37
-rw-r--r--stdlib/strtof_l.c28
-rw-r--r--stdlib/strtold.c35
-rw-r--r--stdlib/strtold_l.c53
-rw-r--r--string/strcoll.c528
-rw-r--r--string/strcoll_l.c514
-rw-r--r--string/strxfrm.c444
-rw-r--r--string/strxfrm_l.c429
-rw-r--r--sysdeps/generic/strtol.c533
-rw-r--r--sysdeps/generic/strtol_l.c493
-rw-r--r--sysdeps/generic/strtold_l.c (renamed from sysdeps/generic/strtold.c)18
-rw-r--r--sysdeps/generic/strtoll_l.c8
-rw-r--r--sysdeps/generic/strtoul_l.c8
-rw-r--r--sysdeps/generic/strtoull_l.c9
-rw-r--r--sysdeps/generic/wcstol_l.c8
-rw-r--r--sysdeps/generic/wcstoll_l.c8
-rw-r--r--sysdeps/generic/wcstoul_l.c8
-rw-r--r--sysdeps/generic/wcstoull_l.c8
-rw-r--r--sysdeps/ieee754/ldbl-128/strtold_l.c (renamed from sysdeps/ieee754/ldbl-128/strtold.c)26
-rw-r--r--sysdeps/ieee754/ldbl-96/strtold_l.c (renamed from sysdeps/ieee754/ldbl-96/strtold.c)26
-rw-r--r--sysdeps/m68k/strtold.c2
-rw-r--r--sysdeps/m68k/strtold_l.c2
-rw-r--r--time/strftime.c1421
-rw-r--r--time/strftime_l.c1426
-rw-r--r--time/strptime.c1066
-rw-r--r--time/strptime_l.c1052
-rw-r--r--time/wcsftime.c32
-rw-r--r--time/wcsftime_l.c8
-rw-r--r--wcsmbs/wcscoll.c15
-rw-r--r--wcsmbs/wcscoll_l.c19
-rw-r--r--wcsmbs/wcstod.c8
-rw-r--r--wcsmbs/wcstod_l.c10
-rw-r--r--wcsmbs/wcstof.c29
-rw-r--r--wcsmbs/wcstof_l.c12
-rw-r--r--wcsmbs/wcstold.c48
-rw-r--r--wcsmbs/wcstold_l.c32
-rw-r--r--wcsmbs/wcsxfrm.c17
-rw-r--r--wcsmbs/wcsxfrm_l.c19
48 files changed, 6501 insertions, 6412 deletions
diff --git a/ChangeLog b/ChangeLog
index 372a32262b..3e41a14db2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,72 @@
+2004-03-14 Ulrich Drepper <drepper@redhat.com>
+
+ Make the non-_l functions wrappers around the _l functions.
+ * include/monetary.h: Declare __vstrmon_l.
+ * include/string.h: Add libc_hidden_proto for __strcoll_l and
+ __strxfrm_l.
+ * include/time.h: Define ptime_locale_status. Declare
+ __strptime_internal.
+ * include/wchar.h: Add libc_hidden_proto for __wcscoll_l and
+ __wcsxfrm_l.
+ * stdlib/strfmon.c: Move the code to strfmon_l.c. Add little
+ wrapper around __vstrfmon_l.
+ * stdlib/strfmon_l.c: Add real implementation. Split into new
+ function __vstrfmon_l to allow calling it from strfmon.
+ * stdlib/strtod.c: Move real code to strtod_l.c and add wrapper.
+ * stdlib/strtod_l.c: Add real implementation.
+ * stdlib/strtof.c: Adjust to changed strtod.c.
+ * stdlib/strtof_l.c: Include strtod_l.c now.
+ * stdlib/strtold.c: New file.
+ * stdlib/strtold_l.c: Removed.
+ * string/strcoll.c: Move real code to strcoll_l.c: Add wrapper.
+ * string/strcoll_l.c: Add real implementation.
+ * string/strxfrm.c: Move real code to strxfrm_l.c: Add wrapper.
+ * string/strxfrm_l.c: Add real implementation.
+ * sysdeps/generic/strtol.c: Move real implementation to strtol_l.c.
+ Add wrappers.
+ * sysdeps/generic/strtol_l.c: Add real implementation.
+ * sysdeps/generic/strtold.c: Removed.
+ * sysdeps/generic/strtold_l.c: New file.
+ * sysdeps/generic/strtoll_l.c: Include strtol_l.c now. Adjust
+ #defines.
+ * sysdeps/generic/strtoul_l.c: Likewise.
+ * sysdeps/generic/strtoull_l.c: Likewise.
+ * sysdeps/generic/wcstol_l.c: Likewise.
+ * sysdeps/generic/wcstoll_l.c: Likewise.
+ * sysdeps/generic/wcstoul_l.c: Likewise.
+ * sysdeps/generic/wcstoull_l.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/strtold.c: Removed.
+ * sysdeps/ieee754/ldbl-128/strtold_l.c: New file.
+ * sysdeps/ieee754/ldbl-96/strtold.c: Removed.
+ * sysdeps/ieee754/ldbl-96/strtold_l.c: New file.
+ * sysdeps/m68k/strtold.c: Removed.
+ * sysdeps/m68k/strtold_l.c: New file.
+ * time/strftime.c: Move real code to strftime_l.c. Add wrapper.
+ * time/strftime_l.c: Add real implementation.
+ * time/strptime.c: Move real code to strptime_l.c. Add wrapper.
+ * time/strptime_l.c: Add real implementation.
+ * time/wcsftime.c: Simplify since only wrappers are defined in
+ strftime.c.
+ * time/wcsftime_l.c: Include strftime_l.c.
+ * wcsmbs/wcscoll.c: Simplify since the file is not used by wcscoll_l.c
+ anymore.
+ * wcsmbs/wcscoll_l.c: Include strcoll_l.c.
+ * wcsmbs/wcsxfrm.c: Simplify since the file is not used by wcsxfrm_l.c
+ anymore.
+ * wcsmbs/wcsxfrm_l.c: Include strxfrm_l.c.
+ * wcsmbs/wcstod.c: Prepare to include new strtod.c.
+ * wcsmbs/wcstod_l.c: Include strtod_l.c.
+ * wcsmbs/wcstof.c: Prepare to include new strtof.c.
+ * wcsmbs/wcstof_l.c: Include strtof_l.c.
+ * wcsmbs/wcstold.c: Prepare to include new strtold.c.
+ * wcsmbs/wcstold_l.c: Include strtold_l.c.
+
+ * locale/uselocale.c: Use _NL_CURRENT_LOCALE instead of __libc_tsd_get.
+
+ * sysdeps/generic/strcasecmp.c: Optimize a bit. It's better to get
+ a reference to the current locale and then use the _l functions.
+ * sysdeps/generic/strncase.c: Likewise.
+
2004-03-11 Jeroen Dekkers <jeroen@dekkers.cx>
* cppflags-iterator.mk: Change libof-$(cpp-src) to
diff --git a/include/monetary.h b/include/monetary.h
index 4735dc6c8a..98b3dbf294 100644
--- a/include/monetary.h
+++ b/include/monetary.h
@@ -1 +1,5 @@
#include <stdlib/monetary.h>
+#include <stdarg.h>
+
+extern ssize_t __vstrfmon_l (char *s, size_t maxsize, __locale_t loc,
+ const char *format, va_list ap);
diff --git a/include/string.h b/include/string.h
index 041590b1db..42d9362dfc 100644
--- a/include/string.h
+++ b/include/string.h
@@ -78,6 +78,8 @@ libc_hidden_proto (__strerror_r)
libc_hidden_proto (__strverscmp)
libc_hidden_proto (basename)
libc_hidden_proto (strcoll)
+libc_hidden_proto (__strcoll_l)
+libc_hidden_proto (__strxfrm_l)
libc_hidden_builtin_proto (memchr)
libc_hidden_builtin_proto (memcpy)
diff --git a/include/time.h b/include/time.h
index 87e0f08f8d..5a95be5a4e 100644
--- a/include/time.h
+++ b/include/time.h
@@ -3,6 +3,7 @@
# include <time/time.h>
#else
# include <time/time.h>
+# include <xlocale.h>
extern __typeof (strftime_l) __strftime_l;
libc_hidden_proto (__strftime_l)
@@ -84,6 +85,18 @@ extern int __getdate_r (__const char *__string, struct tm *__resbufp);
extern int __getclktck (void);
+/* strptime support. */
+/* Status of lookup: do we use the locale data or the raw data? */
+enum ptime_locale_status { not, loc, raw };
+
+extern char * __strptime_internal (const char *rp, const char *fmt,
+ struct tm *tm,
+ enum ptime_locale_status *decided,
+ int era_cnt, __locale_t loc)
+ internal_function;
+
+
+
/* Use in the clock_* functions. Size of the field representing the
actual clock ID. */
#ifndef _ISOMAC
diff --git a/include/wchar.h b/include/wchar.h
index f69463f57a..73bd4a8fef 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -29,6 +29,9 @@ libc_hidden_proto (__wcstoull_internal)
libc_hidden_proto (__wcscasecmp_l)
libc_hidden_proto (__wcsncasecmp_l)
+libc_hidden_proto (__wcscoll_l)
+libc_hidden_proto (__wcsxfrm_l)
+
libc_hidden_proto (fputws_unlocked)
libc_hidden_proto (putwc_unlocked)
libc_hidden_proto (putwc)
diff --git a/locale/uselocale.c b/locale/uselocale.c
index e2f38c10ba..4e63dabd8e 100644
--- a/locale/uselocale.c
+++ b/locale/uselocale.c
@@ -1,5 +1,5 @@
/* uselocale -- fetch and set the current per-thread locale
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -29,7 +29,7 @@
locale_t
__uselocale (locale_t newloc)
{
- locale_t oldloc = __libc_tsd_get (LOCALE);
+ locale_t oldloc = _NL_CURRENT_LOCALE;
if (newloc != NULL)
{
diff --git a/stdlib/strfmon.c b/stdlib/strfmon.c
index b17dc9823c..b11f95c9ac 100644
--- a/stdlib/strfmon.c
+++ b/stdlib/strfmon.c
@@ -19,645 +19,21 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <ctype.h>
-#include <errno.h>
-#include <langinfo.h>
-#include <locale.h>
#include <monetary.h>
-#ifdef USE_IN_LIBIO
-# include "../libio/libioP.h"
-# include "../libio/strfile.h"
-#endif
-#include <printf.h>
#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include "../locale/localeinfo.h"
+#include <locale/localeinfo.h>
-#define out_char(Ch) \
- do { \
- if (dest >= s + maxsize - 1) \
- { \
- __set_errno (E2BIG); \
- va_end (ap); \
- return -1; \
- } \
- *dest++ = (Ch); \
- } while (0)
-
-#define out_string(String) \
- do { \
- const char *_s = (String); \
- while (*_s) \
- out_char (*_s++); \
- } while (0)
-
-#define out_nstring(String, N) \
- do { \
- int _n = (N); \
- const char *_s = (String); \
- while (_n-- > 0) \
- out_char (*_s++); \
- } while (0)
-
-#define to_digit(Ch) ((Ch) - '0')
-
-
-/* We use this code also for the extended locale handling where the
- function gets as an additional argument the locale which has to be
- used. To access the values we have to redefine the _NL_CURRENT
- macro. */
-#ifdef USE_IN_EXTENDED_LOCALE_MODEL
-# undef _NL_CURRENT
-# define _NL_CURRENT(category, item) \
- (current->values[_NL_ITEM_INDEX (item)].string)
-#endif
-
-extern int __printf_fp (FILE *, const struct printf_info *,
- const void *const *);
-libc_hidden_proto (__printf_fp)
-/* This function determines the number of digit groups in the output.
- The definition is in printf_fp.c. */
-extern unsigned int __guess_grouping (unsigned int intdig_max,
- const char *grouping, wchar_t sepchar);
-
-
-/* We have to overcome some problems with this implementation. On the
- one hand the strfmon() function is specified in XPG4 and of course
- it has to follow this. But on the other hand POSIX.2 specifies
- some information in the LC_MONETARY category which should be used,
- too. Some of the information contradicts the information which can
- be specified in format string. */
-#ifndef USE_IN_EXTENDED_LOCALE_MODEL
ssize_t
strfmon (char *s, size_t maxsize, const char *format, ...)
-#else
-ssize_t
-__strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
-#endif
{
-#ifdef USE_IN_EXTENDED_LOCALE_MODEL
- struct locale_data *current = loc->__locales[LC_MONETARY];
-#endif
-#ifdef USE_IN_LIBIO
- _IO_strfile f;
-# ifdef _IO_MTSAFE_IO
- _IO_lock_t lock;
-# endif
-#else
- FILE f;
-#endif
- struct printf_info info;
- va_list ap; /* Scan through the varargs. */
- char *dest; /* Po