summaryrefslogtreecommitdiff
path: root/wctype/wcextra.c
diff options
context:
space:
mode:
Diffstat (limited to 'wctype/wcextra.c')
-rw-r--r--wctype/wcextra.c29
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);
+ }
}