about summary refs log tree commit diff
path: root/ctype
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-23 13:47:20 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-23 13:47:20 +0000
commit8831788577cda2e19e27e6f1a793339abb9711fa (patch)
tree0cc1a1a1f76aa10b966a3d1c046e7a173ac227fc /ctype
parente3822a8a50bf40cfdc595a0f2e32a319a959ace0 (diff)
downloadglibc-8831788577cda2e19e27e6f1a793339abb9711fa.tar.gz
glibc-8831788577cda2e19e27e6f1a793339abb9711fa.tar.xz
glibc-8831788577cda2e19e27e6f1a793339abb9711fa.zip
Don't user __tolower directly for tolower implementation. Use inline function which tests for the range first. Make _tolower equivalent to old tolower macros. Likewise for toupper.
Diffstat (limited to 'ctype')
-rw-r--r--ctype/ctype.c6
-rw-r--r--ctype/ctype.h20
2 files changed, 20 insertions, 6 deletions
diff --git a/ctype/ctype.c b/ctype/ctype.c
index f9ceb35c08..1c684026fe 100644
--- a/ctype/ctype.c
+++ b/ctype/ctype.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1997, 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
@@ -39,11 +39,11 @@ func (isxdigit, _ISxdigit)
 int
 tolower (int c)
 {
-  return __tolower (c);
+  return __c >= -128 && __c < 256 ? __tolower (__c) : __c;
 }
 
 int
 toupper (int c)
 {
-  return __toupper (c);
+  return __c >= -128 && __c < 256 ? __toupper (__c) : __c;
 }
diff --git a/ctype/ctype.h b/ctype/ctype.h
index 5f732d2340..7b4ef36c53 100644
--- a/ctype/ctype.h
+++ b/ctype/ctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,95,96,97,98,99 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
@@ -150,12 +150,26 @@ __exctype (_tolower);
 # define isblank(c)	__isctype((c), _ISblank)
 #endif
 
-#define	tolower(c)	__tolower(c)
-#define	toupper(c)	__toupper(c)
+#if __GNUC__ >= 2
+extern inline int
+tolower (int __c)
+{
+  return __c >= -128 && __c < 256 ? __tolower (__c) : __c;
+}
+
+extern inline int
+toupper (int __c)
+{
+  return __c >= -128 && __c < 256 ? __toupper (__c) : __c;
+}
+#endif
 
 #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
 # define isascii(c)	__isascii(c)
 # define toascii(c)	__toascii(c)
+
+# define _tolower(c)	__tolower(c)
+# define _toupper(c)	__toupper(c)
 #endif
 
 #endif /* Not __NO_CTYPE.  */