about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--locale/nl_langinfo.c4
-rw-r--r--wctype/iswctype_l.c6
-rw-r--r--wctype/wcfuncs.c4
-rw-r--r--wctype/wcfuncs_l.c30
-rw-r--r--wctype/wctrans.c6
6 files changed, 47 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 84abd3f659..fa25e1c96a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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.
+
 2000-02-12  Andreas Jaeger  <aj@suse.de>
 
 	* sysdeps/mips/dl-machine.h (__start): Rewritten for 2.2 startup
diff --git a/locale/nl_langinfo.c b/locale/nl_langinfo.c
index 34772d3535..9b0b7c7e31 100644
--- a/locale/nl_langinfo.c
+++ b/locale/nl_langinfo.c
@@ -35,13 +35,13 @@ nl_langinfo (item)
 
   if (category < 0 || category >= LC_ALL)
     /* Bogus category: bogus item.  */
-    return "";
+    return (char *) "";
 
   data = *_nl_current[category];
 
   if (index >= data->nstrings)
     /* Bogus index for this category: bogus item.  */
-    return "";
+    return (char *) "";
 
   /* Return the string for the specified item.  */
   return (char *) data->values[index].string;
diff --git a/wctype/iswctype_l.c b/wctype/iswctype_l.c
index 75fb41c4c8..fa4e024fce 100644
--- a/wctype/iswctype_l.c
+++ b/wctype/iswctype_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.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
@@ -27,14 +27,14 @@
 int
 __iswctype_l (wint_t wc, wctype_t desc, __locale_t locale)
 {
-  const unsigned int *class32_b;
+  const uint32_t *class32_b;
   size_t idx;
 
   idx = cname_lookup (wc, locale);
   if (idx == ~((size_t) 0))
     return 0;
 
-  class32_b = (u_int32_t *)
+  class32_b = (uint32_t *)
     locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_CLASS32)].string;
 
   return class32_b[idx] & desc;
diff --git a/wctype/wcfuncs.c b/wctype/wcfuncs.c
index 2f60c4a650..fdb5dc7a70 100644
--- a/wctype/wcfuncs.c
+++ b/wctype/wcfuncs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999, 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
@@ -25,6 +25,8 @@
 /* If the program is compiled without optimization the following declaration
    is not visible in the header.   */
 extern unsigned int *__ctype32_b;
+
+/* These are not exported.  */
 extern const uint32_t *__ctype32_toupper;
 extern const uint32_t *__ctype32_tolower;
 
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];
 }
diff --git a/wctype/wctrans.c b/wctype/wctrans.c
index 5d7b5bda38..a9f83e40b9 100644
--- a/wctype/wctrans.c
+++ b/wctype/wctrans.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
@@ -45,9 +45,9 @@ wctrans (const char *property)
     return 0;
 
   if (cnt == 0)
-    return (wctrans_t) __ctype_toupper;
+    return (wctrans_t) __ctype32_toupper;
   else if (cnt == 1)
-    return (wctrans_t) __ctype_tolower;
+    return (wctrans_t) __ctype32_tolower;
 
   /* We have to search the table.  */
   result = (int32_t *) _NL_CURRENT (LC_CTYPE, _NL_NUM_LC_CTYPE + cnt - 2);