about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--include/ctype.h11
-rw-r--r--include/wctype.h11
-rw-r--r--wctype/wcfuncs_l.c4
4 files changed, 44 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 37ddddc39c..01c6be675e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-03-16  Ulrich Drepper  <drepper@redhat.com>
+
+	* include/ctype.h: For libc, define isdigit, isdigit_l, and
+	__isdigit_l as simple comparison macros.
+	* include/wctype.h: For libc, define iswdigit, iswdigit_l, and
+	__iswdigit_l as simple comparison macros.
+	* wctype/wcfuncs_l.c: #undef iswdigit and __iswdigit.
+
 2004-03-15  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/sparc/fpu/bits/mathinline.h: Restore missing #ifdef.
@@ -17,12 +25,17 @@
 	and bits/inf.h.
 	* math/math.h: Include them.
 
-	* sysdeps/alpha/fpu/bits/mathdef.h, sysdeps/arm/fpu/bits/mathdef.h,
-	sysdeps/generic/bits/mathdef.h, sysdeps/i386/fpu/bits/mathdef.h,
-	sysdeps/ia64/fpu/bits/mathdef.h, sysdeps/m68k/fpu/bits/mathdef.h,
-	sysdeps/mips/fpu/bits/mathdef.h, sysdeps/powerpc/fpu/bits/mathdef.h,
-	sysdeps/sh/sh4/fpu/bits/mathdef.h, sysdeps/sparc/fpu/bits/mathdef.h,
-	sysdeps/x86_64/fpu/bits/mathdef.h: Remove INFINITY.
+	* sysdeps/alpha/fpu/bits/mathdef.h: Remove INFINITY.
+	* sysdeps/arm/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/generic/bits/mathdef.h: Likewise.
+	* sysdeps/i386/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/ia64/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/m68k/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/mips/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/powerpc/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/sh/sh4/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/sparc/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/x86_64/fpu/bits/mathdef.h: Likewise.
 
 	* sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val.
 	(HUGE_VALF, HUGE_VALL): Remove.
diff --git a/include/ctype.h b/include/ctype.h
index 4896d14f17..ae38b1bf23 100644
--- a/include/ctype.h
+++ b/include/ctype.h
@@ -68,4 +68,15 @@ __ctype_tolower_loc (void)
 
 # include <ctype/ctype.h>
 
+# if !defined __NO_CTYPE && !defined NOT_IN_libc
+/* The spec says that isdigit must only match the decimal digits.  We
+   can check this without a memory access.  */
+#  undef isdigit
+#  define isdigit(c) ({ int __c = (c); __c >= '0' && __c <= '9'; })
+#  undef isdigit_l
+#  define isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; })
+#  undef __isdigit_l
+#  define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; })
+# endif
+
 #endif /* ctype.h */
diff --git a/include/wctype.h b/include/wctype.h
index a2d5e18f31..2828c3ad3d 100644
--- a/include/wctype.h
+++ b/include/wctype.h
@@ -84,4 +84,15 @@ libc_hidden_proto (__iswxdigit_l)
 libc_hidden_proto (__towlower_l)
 libc_hidden_proto (__towupper_l)
 
+/* The spec says that isdigit must only match the decimal digits.  We
+   can check this without a memory access.  */
+# ifndef NOT_IN_libc
+#  undef iswdigit
+#  define iswdigit(c) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; })
+#  undef iswdigit_l
+#  define iswdigit_l(c, l) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; })
+#  undef __iswdigit_l
+#  define __iswdigit_l(c, l) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; })
+# endif
+
 #endif
diff --git a/wctype/wcfuncs_l.c b/wctype/wcfuncs_l.c
index 5556dc4adc..c10af76102 100644
--- a/wctype/wcfuncs_l.c
+++ b/wctype/wcfuncs_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,2000,2001,2002,2004 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
@@ -40,6 +40,8 @@ func (iswalnum_l, __ISwalnum)
 func (iswalpha_l, __ISwalpha)
 func (iswblank_l, __ISwblank)
 func (iswcntrl_l, __ISwcntrl)
+#undef iswdigit_l
+#undef __iswdigit_l
 func (iswdigit_l, __ISwdigit)
 func (iswlower_l, __ISwlower)
 func (iswgraph_l, __ISwgraph)