diff options
Diffstat (limited to 'wctype/wcextra.c')
-rw-r--r-- | wctype/wcextra.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/wctype/wcextra.c b/wctype/wcextra.c index 44b72c8833..581c6807de 100644 --- a/wctype/wcextra.c +++ b/wctype/wcextra.c @@ -1,5 +1,5 @@ /* Additional non standardized wide character classification functions. - Copyright (C) 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -23,19 +23,32 @@ #include <wctype.h> #include "cname-lookup.h" +#include "wchar-lookup.h" /* If the program is compiled without optimization the following declaration is not visible in the header. */ extern unsigned int *__ctype32_b; +/* This is not exported. */ +extern const char *__ctype32_wctype[12]; + int (iswblank) (wint_t wc) { - size_t idx; - - idx = cname_lookup (wc); - if (idx == ~((size_t) 0)) - return 0; - - return __ctype32_b[idx] & _ISwblank; + if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_SIZE) != 0) + { + /* Old locale format. */ + size_t idx; + + idx = cname_lookup (wc); + if (idx == ~((size_t) 0)) + return 0; + + return __ctype32_b[idx] & _ISwblank; + } + else + { + /* New locale format. */ + return wctype_table_lookup (__ctype32_wctype[__ISwblank], wc); + } } |