about summary refs log tree commit diff
path: root/wctype
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-01 12:39:40 +0000
committerRoland McGrath <roland@gnu.org>2002-09-01 12:39:40 +0000
commit0f283ffc5e8822a367c4703abd584348ff139810 (patch)
treeea4e3a9a5c4dca2c51fb8cb08995de41b2bf998e /wctype
parent0ba454fccb56eb5890ad692949323af6ad64189c (diff)
downloadglibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.gz
glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.xz
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 'wctype')
-rw-r--r--wctype/wcfuncs.c28
-rw-r--r--wctype/wctype.h76
2 files changed, 15 insertions, 89 deletions
diff --git a/wctype/wcfuncs.c b/wctype/wcfuncs.c
index 2595f50da7..a3aed3104e 100644
--- a/wctype/wcfuncs.c
+++ b/wctype/wcfuncs.c
@@ -21,19 +21,17 @@
 
 #include "wchar-lookup.h"
 
-/* These are not exported.  */
-extern const char *__ctype32_wctype[12] attribute_hidden;
-extern const char *__ctype32_wctrans[2] attribute_hidden;
-
 /* Provide real-function versions of all the wctype macros.  */
 
-#define	func(name, type)					\
-  extern int __##name (wint_t __wc);				\
-  int								\
-  __##name (wint_t wc)						\
-  {								\
-    return wctype_table_lookup (__ctype32_wctype[type], wc);	\
-  }								\
+#define	func(name, type)						      \
+  extern int __##name (wint_t __wc);					      \
+  int									      \
+  __##name (wint_t wc)							      \
+  {									      \
+    size_t i = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_CLASS_OFFSET) + type;    \
+    const char *desc = _NL_CURRENT (LC_CTYPE, i);			      \
+    return wctype_table_lookup (desc, wc);				      \
+  }									      \
   weak_alias (__##name, name)
 
 #undef iswalnum
@@ -71,7 +69,9 @@ wint_t
 towlower (wc)
      wint_t wc;
 {
-  return wctrans_table_lookup (__ctype32_wctrans[__TOW_tolower], wc);
+  size_t i = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_OFFSET) + __TOW_tolower;
+  const char *desc = _NL_CURRENT (LC_CTYPE, i);
+  return wctrans_table_lookup (desc, wc);
 }
 libc_hidden_def (towlower)
 
@@ -80,6 +80,8 @@ wint_t
 towupper (wc)
      wint_t wc;
 {
-  return wctrans_table_lookup (__ctype32_wctrans[__TOW_toupper], wc);
+  size_t i = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_OFFSET) + __TOW_toupper;
+  const char *desc = _NL_CURRENT (LC_CTYPE, i);
+  return wctrans_table_lookup (desc, wc);
 }
 libc_hidden_def (towupper)
diff --git a/wctype/wctype.h b/wctype/wctype.h
index 0cd1603c3f..f5519aa4eb 100644
--- a/wctype/wctype.h
+++ b/wctype/wctype.h
@@ -190,64 +190,6 @@ extern wctype_t wctype (__const char *__property) __THROW;
 extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
 __END_NAMESPACE_C99
 
-#if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
-/* The tables are always organized in a way which allows direct access
-   for single byte characters.  */
-extern unsigned int *__ctype32_b;
-
-# define iswalnum(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwalnum) : iswalnum (wc)))
-# define iswalpha(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwalpha) : iswalpha (wc)))
-# define iswcntrl(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwcntrl) : iswcntrl (wc)))
-# define iswdigit(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwdigit) : iswdigit (wc)))
-# define iswlower(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwlower) : iswlower (wc)))
-# define iswgraph(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwgraph) : iswgraph (wc)))
-# define iswprint(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwprint) : iswprint (wc)))
-# define iswpunct(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwpunct) : iswpunct (wc)))
-# define iswspace(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwspace) : iswspace (wc)))
-# define iswupper(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwupper) : iswupper (wc)))
-# define iswxdigit(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwxdigit) : iswxdigit (wc)))
-
-# ifdef __USE_ISOC99
-#  define iswblank(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (int) (__ctype32_b[(wint_t) (wc)] & _ISwblank) : iswblank (wc)))
-# endif
-
-#endif	/* gcc && optimizing */
 
 /*
  * Wide-character case-mapping functions: 7.15.3.1.
@@ -270,24 +212,6 @@ extern wint_t towlower (wint_t __wc) __THROW;
 extern wint_t towupper (wint_t __wc) __THROW;
 __END_NAMESPACE_C99
 
-#if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
-/* The tables are always organized in a way which allows direct access
-   for single byte characters.  */
-extern const wint_t *__ctype32_tolower;
-extern const wint_t *__ctype32_toupper;
-
-# define towlower(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (wint_t) __ctype32_tolower[(wint_t) (wc)] : towlower (wc)))
-
-# define towupper(wc) \
-  (__extension__							      \
-    (__builtin_constant_p (wc) && (wint_t) (wc) <= L'\xff'		      \
-     ? (wint_t) __ctype32_toupper[(wint_t) (wc)] : towupper (wc)))
-
-#endif	/* gcc && optimizing */
-
 __END_DECLS
 
 #endif	/* need iswxxx.  */