diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-02-07 00:06:12 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-02-07 00:06:12 +0000 |
commit | 8d8c6efa78d0eb67138bddf96415c2b80a4c820c (patch) | |
tree | 9ffb99e37931add0899606dc03b233a2e1e3f933 /ctype | |
parent | b8f558b7ace3a2e5e3234ac24a600cbe230da8d1 (diff) | |
download | glibc-8d8c6efa78d0eb67138bddf96415c2b80a4c820c.tar glibc-8d8c6efa78d0eb67138bddf96415c2b80a4c820c.tar.gz glibc-8d8c6efa78d0eb67138bddf96415c2b80a4c820c.tar.bz2 glibc-8d8c6efa78d0eb67138bddf96415c2b80a4c820c.zip |
Update.
1999-02-06 Ulrich Drepper <drepper@cygnus.com>
* Versions.def: Add versions for ld.so.
* csu/Versions: Remove __libc_stack_end here.
* elf/Versions: Split libc definitions in libc and ld.so definitions.
* elf/Makefile (ld-map): Change to ld.so.map.
* scripts/versions.awk: Recognize dot in library names.
* ctype/ctype.h: Remove definitions of __tolower and __toupper.
Don't use __tolower and __toupper in inline functions.
Add optimizing macros for tolower and toupper.
* ctype/ctype-extn.c (_tolower): Don't use __tolower.
(_toupper): Don't use __toupper.
* ctype/ctype.c (tolower): Don't use __tolower.
(toupper): Don't use toupper.
* nscd/cache.c (prune_cache): Correct printing of debugging messages.
* resolv/Versions (libresolv): Export __ns_name_unpack and
__ns_name_ntop.
* resolv/res_comp.c: Rename ns_name_unpack to __ns_name_unpack and
make it global. Change all users. Similar for ns_name_ntop.
* resolv/nss_dns/dns-host.c: Don't use dn_expand when extracting in
user-provided buffer. Use __ns_name_unpack and __ns_name_ntop
directly to detect too small buffer.
* stdio-common/Makefile (tests): Add scanf12.
* stdio-common/scanf12.c: New file.
* stdio-common/scanf12.input: New file.
* stdio-common/vfscanf.c (__vfscanf): Handle +/- at beginning of
floating-point correctly if the number is invalid.
* stdio-common/vfscanf.c: Don't use non-reentrant multibyte conversion
* stdio-common/printf_fphex.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
See ChangeLog.9 for earlier changes.
Diffstat (limited to 'ctype')
-rw-r--r-- | ctype/ctype-extn.c | 4 | ||||
-rw-r--r-- | ctype/ctype.c | 4 | ||||
-rw-r--r-- | ctype/ctype.h | 41 |
3 files changed, 34 insertions, 15 deletions
diff --git a/ctype/ctype-extn.c b/ctype/ctype-extn.c index d229f60b77..5daba66804 100644 --- a/ctype/ctype-extn.c +++ b/ctype/ctype-extn.c @@ -30,12 +30,12 @@ isblank (int c) int _tolower (int c) { - return __tolower (c); + return c < -128 || c > 255 ? c : __ctype_tolower[c]; } int _toupper (int c) { - return __toupper (c); + return c < -128 || c > 255 ? c : __ctype_toupper[c]; } int diff --git a/ctype/ctype.c b/ctype/ctype.c index ce6d7097f0..61e7684d6f 100644 --- a/ctype/ctype.c +++ b/ctype/ctype.c @@ -39,11 +39,11 @@ func (isxdigit, _ISxdigit) int tolower (int c) { - return c >= -128 && c < 256 ? __tolower (c) : c; + return c >= -128 && c < 256 ? __ctype_tolower[c] : c; } int toupper (int c) { - return c >= -128 && c < 256 ? __toupper (c) : c; + return c >= -128 && c < 256 ? __ctype_toupper[c] : c; } diff --git a/ctype/ctype.h b/ctype/ctype.h index 52bb56eeec..de7ca1e355 100644 --- a/ctype/ctype.h +++ b/ctype/ctype.h @@ -82,9 +82,6 @@ extern __const __int32_t *__ctype_toupper; /* Case conversions. */ #define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */ #define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */ -#define __tolower(c) ((int) __ctype_tolower[(int) (c)]) -#define __toupper(c) ((int) __ctype_toupper[(int) (c)]) - #define __exctype(name) extern int name __P ((int)) /* The following names are all functions: @@ -128,7 +125,8 @@ extern int toascii __P ((int __c)); #endif /* Use SVID or use misc. */ #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN -/* These are the same as `toupper' and `tolower'. */ +/* These are the same as `toupper' and `tolower' except that they do not + check the argument for being in the range of a `char'. */ __exctype (_toupper); __exctype (_tolower); #endif @@ -151,26 +149,47 @@ __exctype (_tolower); #endif #if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ - && defined __USE_EXTERN_INLINES + && defined __USE_EXTERN_INLINES extern __inline int tolower (int __c) { - return __c >= -128 && __c < 256 ? __tolower (__c) : __c; + return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c; } extern __inline int toupper (int __c) { - return __c >= -128 && __c < 256 ? __toupper (__c) : __c; + return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c; } #endif +#if __GNUC__ >= 2 && defined __OPTIMIZE__ +# define __tobody(c, f, a) \ + ({ int __res; \ + if (sizeof (c) > 1) \ + { \ + if (__builtin_constant_p (c)) \ + { \ + int __c = (c); \ + __res = __c < -128 || __c > 255 ? __c : a[__c]; \ + } \ + else \ + __res = f (c); \ + } \ + else \ + __res = a[(int) (c)]; \ + __res; }) + +# define tolower(c) __tobody (c, tolower, __ctype_tolower) +# define toupper(c) __tobody (c, toupper, __ctype_toupper) +#endif /* Optimizing gcc */ + #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN -# define isascii(c) __isascii(c) -# define toascii(c) __toascii(c) +# define isascii(c) __isascii (c) +# define toascii(c) __toascii (c) -# define _tolower(c) __tolower(c) -# define _toupper(c) __toupper(c) +# define _tolower(c) ((int) __ctype_tolower[(int) (c)]) +# define _toupper(c) ((int) __ctype_toupper[(int) (c)]) #endif #endif /* Not __NO_CTYPE. */ |