diff options
author | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
commit | 0f283ffc5e8822a367c4703abd584348ff139810 (patch) | |
tree | ea4e3a9a5c4dca2c51fb8cb08995de41b2bf998e /ctype | |
parent | 0ba454fccb56eb5890ad692949323af6ad64189c (diff) | |
download | glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.gz glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.bz2 glibc-0f283ffc5e8822a367c4703abd584348ff139810.zip |
* sysdeps/generic/libc-tls.c (__pthread_initialize_minimal): Pass
TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN instead of 0, 1.
* include/getopt.h: Include <features.h> before <posix/getopt.h>.
* locale/findlocale.c (_nl_remove_locale): Don't search in
_nl_locale_file_list if DATA->alloc is ld_archive.
Use _nl_unload_locale to do the rest of the work.
* locale/loadarchive.c (_nl_load_locale_from_archive): Set usage_count
of new structure to UNDELETABLE.
* wctype/wctype.h (iswalnum, iswalpha, iswcntrl, iswdigit, iswlower,
iswgraph, iswprint, iswpunct, iswspace, iswupper, iswxdigit, iswblank,
towlower, towupper): Macros removed.
* ctype/ctype.h (__tobody): Put parens around macro argument.
(__isctype): Macro removed.
(__ctype_b, __ctype_tolower, __ctype_toupper): Decls removed.
(isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint,
ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper,
tolower, toupper): Macros and inlines removed.
* include/ctype.h [! NOT_IN_libc]
(isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint,
ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper,
tolower, toupper): Define here instead, using _NL_CURRENT.
* ctype/ctype.c (__ctype_tolower, __ctype_toupper): Define as macros
using _NL_CURRENT.
* ctype/ctype-extn.c (__ctype_tolower, __ctype_toupper): Likewise.
* ctype/ctype-info.c (__ctype_b, __ctype_tolower, __ctype_toupper):
Renamed these to __ctype_old_*. Define old names only for SHLIB_COMPAT.
(__ctype32_b, __ctype32_tolower, __ctype32_toupper): Likewise.
(__ctype32_wctrans, __ctype32_wctrans, __ctype32_width): Removed.
* locale/lc-ctype.c (_nl_postload_ctype): Use renamed variables,
conditional on SHLIB_COMPAT. Don't set removed variables at all.
* wctype/wcfuncs.c: Use _NL_CURRENT instead of those globals.
* wcsmbs/wcwidth.h (internal_wcwidth): Likewise.
* resolv/res_init.c [RESOLVSORT] (sort_mask): Renamed sort_mask_chars.
(ISSORTMASK): Update use.
* intl/localealias.c [__GNUC__]: #undef alloca before #define.
* nss/nss_files/files-XXX.c (last_use): Rename `none' to `nouse'.
(_nss_files_getENTNAME_r): Likewise.
* nss/nss_files/files-alias.c (last_use, _nss_files_getaliasent_r):
Likewise.
* Makerules (all-nonlib): Renamed from all-tests.
Include $(others) here too.
* locale/Makefile (CPPFLAGS-locale, CPPFLAGS-localedef,
CPPFLAGS-ld-ctype, CPPFLAGS-ld-time, CPPFLAGS-ld-numeric,
CPPFLAGS-ld-monetary, CPPFLAGS-ld-collate, CPPFLAGS-ld-identification,
CPPFLAGS-charmap, CPPFLAGS-locarchive, CPPFLAGS-linereader,
CPPFLAGS-charmap-dir): Variables removed. Instead, catch all
the program modules via cppflags-iterator.mk.
* sunrpc/Makefile (CPPFLAGS-rpc_main): Variable removed.
Instead, catch all rpcgen-objs via cppflags-iterator.mk.
* posix/tst-getconf.sh: If no third arg, work with static linking.
Diffstat (limited to 'ctype')
-rw-r--r-- | ctype/ctype-extn.c | 5 | ||||
-rw-r--r-- | ctype/ctype-info.c | 48 | ||||
-rw-r--r-- | ctype/ctype.c | 7 | ||||
-rw-r--r-- | ctype/ctype.h | 63 |
4 files changed, 32 insertions, 91 deletions
diff --git a/ctype/ctype-extn.c b/ctype/ctype-extn.c index 4bab5a0298..b54080d7ac 100644 --- a/ctype/ctype-extn.c +++ b/ctype/ctype-extn.c @@ -19,6 +19,11 @@ #define __NO_CTYPE #include <ctype.h> +#define __ctype_tolower \ + ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128) +#define __ctype_toupper \ + ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128) + /* Real function versions of the non-ANSI ctype functions. isblank is now in ISO C99 but we leave it here. */ diff --git a/ctype/ctype-info.c b/ctype/ctype-info.c index d29edb7171..033d1b70cb 100644 --- a/ctype/ctype-info.c +++ b/ctype/ctype-info.c @@ -16,6 +16,9 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <shlib-compat.h> +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3) + #include <ctype.h> #include <locale/localeinfo.h> @@ -36,36 +39,21 @@ extern const char _nl_C_LC_CTYPE_class_blank[] attribute_hidden; extern const char _nl_C_LC_CTYPE_class_cntrl[] attribute_hidden; extern const char _nl_C_LC_CTYPE_class_punct[] attribute_hidden; extern const char _nl_C_LC_CTYPE_class_alnum[] attribute_hidden; -extern const char _nl_C_LC_CTYPE_map_toupper[] attribute_hidden; -extern const char _nl_C_LC_CTYPE_map_tolower[] attribute_hidden; -extern const char _nl_C_LC_CTYPE_width[] attribute_hidden; #define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o) -const unsigned short int *__ctype_b = b (unsigned short int, class, 128); -const __uint32_t *__ctype32_b = b (__uint32_t, class32, 0); -const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128); -const __int32_t *__ctype_toupper = b (__int32_t, toupper, 128); -const __uint32_t *__ctype32_tolower = b (__uint32_t, tolower, 128); -const __uint32_t *__ctype32_toupper = b (__uint32_t, toupper, 128); -const char *__ctype32_wctype[12] attribute_hidden = -{ - b(char, class_upper, 32), - b(char, class_lower, 32), - b(char, class_alpha, 32), - b(char, class_digit, 32), - b(char, class_xdigit, 32), - b(char, class_space, 32), - b(char, class_print, 32), - b(char, class_graph, 32), - b(char, class_blank, 32), - b(char, class_cntrl, 32), - b(char, class_punct, 32), - b(char, class_alnum, 32) -}; -const char *__ctype32_wctrans[2] attribute_hidden = -{ - b(char, map_toupper, 0), - b(char, map_tolower, 0) -}; -const char *__ctype32_width attribute_hidden = b (char, width, 0); +const unsigned short int *__ctype_old_b = b (unsigned short int, class, 128); +const __uint32_t *__ctype32_old_b = b (__uint32_t, class32, 0); +const __int32_t *__ctype_old_tolower = b (__int32_t, tolower, 128); +const __int32_t *__ctype_old_toupper = b (__int32_t, toupper, 128); +const __uint32_t *__ctype32_old_tolower = b (__uint32_t, tolower, 128); +const __uint32_t *__ctype32_old_toupper = b (__uint32_t, toupper, 128); + +compat_symbol (libc, __ctype_old_b, __ctype_b, GLIBC_2_0); +compat_symbol (libc, __ctype_old_tolower, __ctype_tolower, GLIBC_2_0); +compat_symbol (libc, __ctype_old_toupper, __ctype_toupper, GLIBC_2_0); +compat_symbol (libc, __ctype32_old_b, __ctype32_b, GLIBC_2_0); +compat_symbol (libc, __ctype32_old_tolower, __ctype32_tolower, GLIBC_2_2); +compat_symbol (libc, __ctype32_old_toupper, __ctype32_toupper, GLIBC_2_2); + +#endif diff --git a/ctype/ctype.c b/ctype/ctype.c index 4bcbd30ef7..4d5b0d2307 100644 --- a/ctype/ctype.c +++ b/ctype/ctype.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,97,99,2002 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 @@ -36,6 +36,11 @@ func (isspace, _ISspace) func (isupper, _ISupper) func (isxdigit, _ISxdigit) +#define __ctype_tolower \ + ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128) +#define __ctype_toupper \ + ((uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128) + int tolower (int c) { diff --git a/ctype/ctype.h b/ctype/ctype.h index 47fba836ca..9469907b27 100644 --- a/ctype/ctype.h +++ b/ctype/ctype.h @@ -62,31 +62,13 @@ enum }; #endif /* ! _ISbit */ -/* These are defined in ctype-info.c. - The declarations here must match those in localeinfo.h. - - These point into arrays of 384, so they can be indexed by any `unsigned - char' value [0,255]; by EOF (-1); or by any `signed char' value - [-128,-1). ISO C requires that the ctype functions work for `unsigned - char' values and for EOF; we also support negative `signed char' values - for broken old programs. The case conversion arrays are of `int's - rather than `unsigned char's because tolower (EOF) must be EOF, which - doesn't fit into an `unsigned char'. But today more important is that - the arrays are also used for multi-byte character sets. */ -extern __const unsigned short int *__ctype_b; /* Characteristics. */ -extern __const __int32_t *__ctype_tolower; /* Case conversions. */ -extern __const __int32_t *__ctype_toupper; /* Case conversions. */ - -#define __isctype(c, type) \ - (__ctype_b[(int) (c)] & (unsigned short int) type) - #define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */ #define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */ #define __exctype(name) extern int name (int) __THROW - __BEGIN_NAMESPACE_STD + /* The following names are all functions: int isCHARACTERISTIC(int c); which return nonzero iff C has CHARACTERISTIC. @@ -147,59 +129,20 @@ __exctype (_tolower); if (__builtin_constant_p (c)) \ { \ int __c = (c); \ - __res = __c < -128 || __c > 255 ? __c : a[__c]; \ + __res = __c < -128 || __c > 255 ? __c : (a)[__c]; \ } \ else \ __res = f args; \ } \ else \ - __res = a[(int) (c)]; \ + __res = (a)[(int) (c)]; \ __res; })) #if !defined __NO_CTYPE && !defined __cplusplus -# define isalnum(c) __isctype((c), _ISalnum) -# define isalpha(c) __isctype((c), _ISalpha) -# define iscntrl(c) __isctype((c), _IScntrl) -# define isdigit(c) __isctype((c), _ISdigit) -# define islower(c) __isctype((c), _ISlower) -# define isgraph(c) __isctype((c), _ISgraph) -# define isprint(c) __isctype((c), _ISprint) -# define ispunct(c) __isctype((c), _ISpunct) -# define isspace(c) __isctype((c), _ISspace) -# define isupper(c) __isctype((c), _ISupper) -# define isxdigit(c) __isctype((c), _ISxdigit) - -# ifdef __USE_ISOC99 -# define isblank(c) __isctype((c), _ISblank) -# endif - -# ifdef __USE_EXTERN_INLINES -extern __inline int -tolower (int __c) __THROW -{ - return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c; -} - -extern __inline int -toupper (int __c) __THROW -{ - return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c; -} -# endif - -# if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus -# define tolower(c) __tobody (c, tolower, __ctype_tolower, (c)) -# define toupper(c) __tobody (c, toupper, __ctype_toupper, (c)) -# endif /* Optimizing gcc */ - # if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN # define isascii(c) __isascii (c) # define toascii(c) __toascii (c) - -# define _tolower(c) ((int) __ctype_tolower[(int) (c)]) -# define _toupper(c) ((int) __ctype_toupper[(int) (c)]) # endif - #endif /* Not __NO_CTYPE. */ |