about summary refs log tree commit diff
path: root/wctype/wcfuncs_l.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-02-13 07:40:16 +0000
committerUlrich Drepper <drepper@redhat.com>2000-02-13 07:40:16 +0000
commitb02b9253e0c1770707ed791f0aa274af79886932 (patch)
treec96810ca1b2a2c7cb6a5a8ed48584736b6eb3bf5 /wctype/wcfuncs_l.c
parent65580ca855fa11f6e5bb0ab7f277abd82115151d (diff)
downloadglibc-b02b9253e0c1770707ed791f0aa274af79886932.tar.gz
glibc-b02b9253e0c1770707ed791f0aa274af79886932.tar.xz
glibc-b02b9253e0c1770707ed791f0aa274af79886932.zip
Update.
2000-02-12  Ulrich Drepper  <drepper@redhat.com>

	* locale/nl_langinfo.h: Add casts to prevent warnings.

	* wctype/iswctype_l.c: Use correct types for mapped data.
	* wctype/wcfuncs.c: Add one more comment for clarification.
	* wctype/wcfuncs_l.c: Use __ctype32_tolower and __ctype32_toupper.
	* wctype/wctrans.c: Likewise.
Diffstat (limited to 'wctype/wcfuncs_l.c')
-rw-r--r--wctype/wcfuncs_l.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/wctype/wcfuncs_l.c b/wctype/wcfuncs_l.c
index 775676eb38..0c75359a41 100644
--- a/wctype/wcfuncs_l.c
+++ b/wctype/wcfuncs_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2000 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
@@ -18,6 +18,10 @@
 
 #define	__NO_WCTYPE
 #include <wctype.h>
+#include <stdint.h>
+
+#define USE_IN_EXTENDED_LOCALE_MODEL
+#include "cname-lookup.h"
 
 /* Provide real-function versions of all the wctype macros.  */
 
@@ -40,11 +44,31 @@ func (__iswxdigit_l, _ISwxdigit)
 wint_t
 (__towlower_l) (wint_t wc, __locale_t locale)
 {
-  return __towctrans_l (wc, locale->__ctype_tolower, locale);
+  const int32_t *class32_tolower;
+  size_t idx;
+
+  idx = cname_lookup (wc, locale);
+  if (idx == ~((size_t) 0))
+    return 0;
+
+  class32_tolower = (const int32_t *)
+    locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER32)].string;
+
+  return class32_tolower[idx];
 }
 
 wint_t
 (__towupper_l) (wint_t wc, __locale_t locale)
 {
-  return __towctrans_l (wc, locale->__ctype_toupper, locale);
+  const int32_t *class32_toupper;
+  size_t idx;
+
+  idx = cname_lookup (wc, locale);
+  if (idx == ~((size_t) 0))
+    return 0;
+
+  class32_toupper = (const int32_t *)
+    locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER32)].string;
+
+  return class32_toupper[idx];
 }