From 390955cbdeb674bead490fc3f74a8a0893ea83cf Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 11 Jan 1999 20:13:43 +0000 Subject: Update. 1999-01-11 Ulrich Drepper * ctype/Versions [GLIBC_2.0]: Export __ctype32_b. * include/wctype.h: Declare __iswctype. * stdio-common/vfscanf.c (__vfscanf): Use __iswspace instead of iswspace. * wctype/Makefile (routines): Add wcextra_l. * wctype/wcextra.c (iswblank): Implement function here and don't use __iswctype. (__iswblank_l): Move definition to... * wctype/wcextra_l.c: ...here. New file. * wctype/wcfuncs.c: Really implement functions and don't call __iswctype or __towctrans. * wctype/wctype.h: Change isw* and tow* macros. Don't call __iswctype or __towctrans. Instead optimize constant argument case. * iconv/gconv.h: Fix typos. * iconv/skeleton.c: Fix typos. Optimize init function a bit. Correctly emit escape sequence to return to initial state in conversion function. * iconvdata/iso-2022-jp.c (gconv_init): Correctly initialize max_needed_to element. * manual/mbyte.texi: Removed. This is now described in charset.texi. * manual/charset.texi: New file. * manual/Makefile (chapters): Replace mbyte by charset. * manual/ctype.texi: Document wide character functions. * manual/intro.texi: Fix reference to mbyte chapter. * manual/lang.texi: Likewise. * manual/locale.texi: Likewise. * manual/stdio.texi: Likewise. * manual/string.texi: Fix @node line for new charset chapter. * manual/libc.texinfo (UPDATED): Updated. Also update copyright years. * manual/memory.texi (savestring): Optimize code to give a good example. * manual/filesys.texi: Fix wording. Patches by Jim Meyering. * nscd/nscd_getgr_r.c: Include stdint.h to get uintptr_t definition. * nscd/nscd_getpw_r.c: Likewise. * nscd/nscd_gethst_r.c: Likewise. * stdlib/stdtold_l.c: Always include xlocale.h. 1999-01-11 Geoffrey Keating * stdlib/fpioconst.h (LDBL_MAX_10_EXP_LOG): Define to be same as DBL_MAX_10_EXP_LOG if there is no long double. (_fpioconst_pow10): Always use size as LDBL_MAX_10_EXP_LOG to match printf_fp.c. 1999-01-10 Andreas Jaeger * timezone/Makefile ($(testdata)/GB): Changed to ... ($(testdata)/Europe/London): ... for tst-timezone test. ($(objpfx)tst-timezone.out): Change GB to Europe/London. * timezone/tst-timezone.c (main): Enable DST switching test, change GB to Europe/London. 1999-01-10 Philip Blundell * socket/Makefile (headers): Remove bits/sockunion.h. 1999-01-09 Philip Blundell * socket/sys/socket.h: Don't include . * sysdeps/generic/bits/sockunion.h: Deleted. * sysdeps/unix/sysv/linux/bits/sockunion.h: Likewise. 1999-01-08 H.J. Lu * io/fts.c (fts_close): Don't access memory after having it freed. --- wctype/wcfuncs.c | 50 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) (limited to 'wctype/wcfuncs.c') diff --git a/wctype/wcfuncs.c b/wctype/wcfuncs.c index 3adb9b015e..3b9296c9a7 100644 --- a/wctype/wcfuncs.c +++ b/wctype/wcfuncs.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 1999 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 @@ -20,33 +20,71 @@ #include #include /* For __ctype_tolower and __ctype_toupper. */ +#include "cname-lookup.h" + /* Provide real-function versions of all the wctype macros. */ #define func(name, type) \ - int name (wc) wint_t wc; { return __iswctype (wc, type); } + int \ + __##name (wint_t wc) \ + { \ + size_t idx; \ + \ + idx = cname_lookup (wc); \ + if (idx == ~((size_t) 0)) \ + return 0; \ + \ + return __ctype32_b[idx] & type; \ + } \ + weak_alias (__##name, name) +#undef iswalnum func (iswalnum, _ISwalnum) +#undef iswalpha func (iswalpha, _ISwalpha) +#undef iswcntrl func (iswcntrl, _ISwcntrl) +#undef iswdigit func (iswdigit, _ISwdigit) +#undef iswlower func (iswlower, _ISwlower) +#undef iswgraph func (iswgraph, _ISwgraph) +#undef iswprint func (iswprint, _ISwprint) +#undef iswpunct func (iswpunct, _ISwpunct) +#undef iswspace func (iswspace, _ISwspace) +#undef iswupper func (iswupper, _ISwupper) +#undef iswxdigit func (iswxdigit, _ISwxdigit) wint_t -towlower (wc) +(towlower) (wc) wint_t wc; { - return __towctrans (wc, __ctype_tolower); + size_t idx; + + idx = cname_lookup (wc); + if (idx == ~((size_t) 0)) + /* Character is not known. Default action is to simply return it. */ + return wc; + + return (wint_t) __ctype_toupper[idx]; } wint_t -towupper (wc) +(towupper) (wc) wint_t wc; { - return __towctrans (wc, __ctype_toupper); + size_t idx; + + idx = cname_lookup (wc); + if (idx == ~((size_t) 0)) + /* Character is not known. Default action is to simply return it. */ + return wc; + + return (wint_t) __ctype_toupper[idx]; } -- cgit v1.2.3