about summary refs log tree commit diff
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);
+    }
 }