Browse Source

Aidan Van Dyk noticed that _toupper and _tolower were misbehaving.
This corrects them, per SuSv3.

Eric Andersen 21 years ago
parent
commit
ba23f7118c
1 changed files with 3 additions and 3 deletions
  1. 3 3
      include/ctype.h

+ 3 - 3
include/ctype.h

@@ -70,11 +70,11 @@ extern int isxupper(int c) __THROW;	/* uClibc-specific. */
 
 /* Now some non-ansi/iso c99 macros. */
 
-#define __isascii(c) (((unsigned int)(c)) <= 0x7f)
+#define __isascii(c) (((c) & ~0x7f) == 0)
 #define __toascii(c) ((c) & 0x7f)
+#define _tolower(c)  (isupper(c) ? tolower(c) : (c))
+#define _toupper(c)  (islower(c) ? toupper(c) : (c))
 
-#define _toupper(c) ((c) | 0x20)
-#define _tolower(c) ((c) ^ 0x20)
 
 /* For compatibility with older versions of uClibc.  Are these ever used? */
 #define __isxlower(c)	__C_isxlower(c)	/* uClibc-specific. */