aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog59
-rw-r--r--Makerules8
-rw-r--r--ctype/ctype-extn.c5
-rw-r--r--ctype/ctype-info.c48
-rw-r--r--ctype/ctype.c7
-rw-r--r--ctype/ctype.h63
-rw-r--r--include/ctype.h46
-rw-r--r--include/getopt.h1
-rw-r--r--intl/localealias.c3
-rw-r--r--locale/Makefile17
-rw-r--r--locale/findlocale.c47
-rw-r--r--locale/lc-ctype.c54
-rw-r--r--locale/loadarchive.c9
-rw-r--r--localedata/ChangeLog4
-rw-r--r--localedata/tst-ctype.c6
-rw-r--r--nss/nss_files/files-XXX.c4
-rw-r--r--nss/nss_files/files-alias.c6
-rw-r--r--posix/tst-getconf.sh19
-rw-r--r--resolv/res_init.c4
-rw-r--r--sunrpc/Makefile6
-rw-r--r--sysdeps/generic/libc-tls.c2
-rw-r--r--wcsmbs/wcwidth.h3
-rw-r--r--wctype/wcfuncs.c28
-rw-r--r--wctype/wctype.h76
24 files changed, 253 insertions, 272 deletions
diff --git a/ChangeLog b/ChangeLog
index f531f07aba..a167137d40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,64 @@
+2002-09-01 Roland McGrath <roland@redhat.com>
+
+ * 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.
+
2002-08-31 Roland McGrath <roland@redhat.com>
+ * posix/tst-getconf.sh: If no third arg, work with static linking.
+
* locale/categories.def (LC_TIME): No more _nl_postload_time.
* locale/setlocale.c (_nl_category_postload): Use weak refs only under
diff --git a/Makerules b/Makerules
index 6d05287b0d..59fcdaecef 100644
--- a/Makerules
+++ b/Makerules
@@ -1040,11 +1040,11 @@ check: tests
.PHONY: xcheck
xcheck: xtests
-all-tests = $(strip $(tests) $(xtests) $(test-srcs))
-ifneq (,$(all-tests))
-cpp-srcs-left = $(all-tests:=.c)
+all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(others))
+ifneq (,$(all-nonlib))
+cpp-srcs-left = $(all-nonlib:=.c)
lib := tests
-include $(patsubst %,$(..)cppflags-iterator.mk,$(all-tests))
+include $(patsubst %,$(..)cppflags-iterator.mk,$(all-nonlib))
endif
.PHONY: TAGS
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. */
diff --git a/include/ctype.h b/include/ctype.h
index 7b51e1f5eb..3100853ab4 100644
--- a/include/ctype.h
+++ b/include/ctype.h
@@ -1 +1,45 @@
-#include <ctype/ctype.h>
+#ifndef _CTYPE_H
+
+# include <ctype/ctype.h>
+
+# ifndef NOT_IN_libc
+
+/* The optimized macros are not defined for users because they can't see
+ the thread-local locale state. For inside libc, define them using the
+ _NL_CURRENT accessors. We don't use _NL_CURRENT_LOCALE->__ctype_b here
+ because we want to cause a link-time ref to _nl_current_LC_CTYPE under
+ NL_CURRENT_INDIRECT. */
+
+# include "../locale/localeinfo.h"
+# define __isctype(c, type) \
+ (((uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128) \
+ [(int) (c)] & (uint16_t) type)
+# ifndef __NO_CTYPE
+# 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)
+# define isblank(c) __isctype((c), _ISblank)
+
+# define tolower(c) \
+ __tobody (c, tolower, \
+ (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128, \
+ (c))
+# define _tolower(c) tolower (c)
+# define toupper(c) \
+ __tobody (c, toupper, \
+ (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128, \
+ (c))
+# define _toupper(c) toupper (c)
+
+# endif /* Not __NO_CTYPE. */
+# endif /* _LIBC_REENTRANT. */
+
+#endif /* ctype.h */
diff --git a/include/getopt.h b/include/getopt.h
index 70e790b396..7bef4ba4bb 100644
--- a/include/getopt.h
+++ b/include/getopt.h
@@ -1,5 +1,6 @@
#ifndef _GETOPT_H
+#include <features.h> /* Get __GNU_LIBRARY__ defined now. */
#include <posix/getopt.h>
# ifdef _GETOPT_H
diff --git a/intl/localealias.c b/intl/localealias.c
index 2226897f58..0afe98134b 100644
--- a/intl/localealias.c
+++ b/intl/localealias.c
@@ -1,5 +1,5 @@
/* Handle aliases for locale names.
- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000,01,02 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,7 @@
#include <sys/types.h>
#ifdef __GNUC__
+# undef alloca
# define alloca __builtin_alloca
# define HAVE_ALLOCA 1
#else
diff --git a/locale/Makefile b/locale/Makefile
index 27bd893c4a..ec47bde054 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -101,18 +101,11 @@ CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts
CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts
CFLAGS-charmap-dir.c = -Wno-write-strings
-CPPFLAGS-locale = -DNOT_IN_libc
-CPPFLAGS-localedef = -DNOT_IN_libc
-CPPFLAGS-ld-ctype = -DNOT_IN_libc
-CPPFLAGS-ld-time = -DNOT_IN_libc
-CPPFLAGS-ld-numeric = -DNOT_IN_libc
-CPPFLAGS-ld-monetary = -DNOT_IN_libc
-CPPFLAGS-ld-collate = -DNOT_IN_libc
-CPPFLAGS-ld-identification = -DNOT_IN_libc
-CPPFLAGS-charmap = -DNOT_IN_libc
-CPPFLAGS-locarchive = -DNOT_IN_libc
-CPPFLAGS-linereader = -DNOT_IN_libc
-CPPFLAGS-charmap-dir = -DNOT_IN_libc
+# This makes sure -DNOT_IN_libc is passed for all these modules.
+cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
+ $(locale-modules) $(lib-modules))
+lib := locale_programs
+include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
# This ensures they will load libc.so for needed symbols if loaded by
diff --git a/locale/findlocale.c b/locale/findlocale.c
index 6ecfdc2324..9c9b85347f 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -270,40 +270,23 @@ _nl_remove_locale (int locale, struct locale_data *data)
{
if (--data->usage_count == 0)
{
- /* First search the entry in the list of loaded files. */
- struct loaded_l10nfile *ptr = _nl_locale_file_list[locale];
-
- /* Search for the entry. It must be in the list. Otherwise it
- is a bug and we crash badly. */
- while ((struct locale_data *) ptr->data != data)
- ptr = ptr->next;
-
- /* Mark the data as not available anymore. So when the data has
- to be used again it is reloaded. */
- ptr->decided = 0;
- ptr->data = NULL;
-
- /* Free the name. */
- free ((char *) data->name);
-
-#ifdef _POSIX_MAPPED_FILES
- /* Really delete the data. First delete the real data. */
- if (__builtin_expect (data->alloc == ld_mapped, 1))
+ if (data->alloc != ld_archive)
{
- /* Try to unmap the area. If this fails we mark the area as
- permanent. */
- if (__munmap ((caddr_t) data->filedata, data->filesize) != 0)
- {
- data->usage_count = UNDELETABLE;
- return;
- }
+ /* First search the entry in the list of loaded files. */
+ struct loaded_l10nfile *ptr = _nl_locale_file_list[locale];
+
+ /* Search for the entry. It must be in the list. Otherwise it
+ is a bug and we crash badly. */
+ while ((struct locale_data *) ptr->data != data)
+ ptr = ptr->next;
+
+ /* Mark the data as not available anymore. So when the data has
+ to be used again it is reloaded. */
+ ptr->decided = 0;
+ ptr->data = NULL;
}
- else
-#endif /* _POSIX_MAPPED_FILES */
- /* The memory was malloced. */
- free ((void *) data->filedata);
- /* Now free the structure itself. */
- free (data);
+ /* This does the real work. */
+ _nl_unload_locale (data);
}
}
diff --git a/locale/lc-ctype.c b/locale/lc-ctype.c
index 59ff7019aa..69414020b8 100644
--- a/locale/lc-ctype.c
+++ b/locale/lc-ctype.c
@@ -34,7 +34,8 @@ _NL_CURRENT_DEFINE (LC_CTYPE);
void
_nl_postload_ctype (void)
{
- const struct locale_data *data = _NL_CURRENT_DATA (LC_CTYPE);
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3)
#define paste(a,b) paste1(a,b)
#define paste1(a,b) a##b
@@ -42,29 +43,30 @@ _nl_postload_ctype (void)
#define current(type,x,offset) \
((const type *) _NL_CURRENT (LC_CTYPE, paste(_NL_CTYPE_,x)) + offset)
- extern const uint32_t *__ctype32_b;
- extern const uint32_t *__ctype32_toupper;
- extern const uint32_t *__ctype32_tolower;
- extern const char *__ctype32_wctype[12] attribute_hidden;
- extern const char *__ctype32_wctrans[2] attribute_hidden;
- extern const char *__ctype32_width attribute_hidden;
-
- size_t offset, cnt;
-
- __ctype_b = current (uint16_t, CLASS, 128);
- __ctype_toupper = current (uint32_t, TOUPPER, 128);
- __ctype_tolower = current (uint32_t, TOLOWER, 128);
- __ctype32_b = current (uint32_t, CLASS32, 0);
- __ctype32_toupper = current (uint32_t, TOUPPER32, 0);
- __ctype32_tolower = current (uint32_t, TOLOWER32, 0);
-
- offset = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_CLASS_OFFSET);
- for (cnt = 0; cnt < 12; cnt++)
- __ctype32_wctype[cnt] = data->values[offset + cnt].string;
-
- offset = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_OFFSET);
- for (cnt = 0; cnt < 2; cnt++)
- __ctype32_wctrans[cnt] = data->values[offset + cnt].string;
-
- __ctype32_width = current (char, WIDTH, 0);
+/* 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 c