diff options
| author | Ulrich Drepper <drepper@redhat.com> | 2004-03-14 21:12:06 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 2004-03-14 21:12:06 +0000 |
| commit | ccadf7b5346a3e21c692dfcbfcf38a63433bc36a (patch) | |
| tree | a1e826af3345eee581925387513b1b6c76629c31 | |
| parent | 3bc9b83f49805969b7d139b52ef6b003e5136354 (diff) | |
| download | glibc-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.
48 files changed, 6501 insertions, 6412 deletions
@@ -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 |
