summaryrefslogtreecommitdiff
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)