2004-04-07 Theodore A. Roth [Contriubuted by Luca Matteini] * libc/stdlib/strtol.c: Make a couple of optimizations. * libc/stdlib/strtoul.c: Ditto. Index: libc/stdlib/strtol.c =================================================================== RCS file: /cvsroot/avr-libc/avr-libc/libc/stdlib/strtol.c,v retrieving revision 1.1 diff -u -p -p -r1.1 strtol.c --- libc/stdlib/strtol.c 5 Jul 2002 20:38:44 -0000 1.1 +++ libc/stdlib/strtol.c 7 Apr 2004 17:14:33 -0000 @@ -60,7 +60,7 @@ strtol(nptr, endptr, base) #define cutoff (cut.quot) #define cutlim ((int) cut.rem) #endif - register int neg = 0, any; + register signed char neg = 0, any; /* * Skip white space and pick up leading +/- sign if any. @@ -115,7 +115,7 @@ strtol(nptr, endptr, base) if (isdigit(c)) c -= '0'; else if (isalpha(c)) - c -= isupper(c) ? 'A' - 10 : 'a' - 10; + c = (c & ~0x20) - 'A' - 10; else break; if (c >= base) Index: libc/stdlib/strtoul.c =================================================================== RCS file: /cvsroot/avr-libc/avr-libc/libc/stdlib/strtoul.c,v retrieving revision 1.2 diff -u -p -p -r1.2 strtoul.c --- libc/stdlib/strtoul.c 13 Jun 2003 21:16:32 -0000 1.2 +++ libc/stdlib/strtoul.c 7 Apr 2004 17:14:33 -0000 @@ -53,7 +53,7 @@ strtoul(nptr, endptr, base) register unsigned char c; register unsigned long cutoff; register int cutlim; - register int neg = 0, any; + register signed char neg = 0, any; /* * See strtol for comments as to the logic used. @@ -82,7 +82,7 @@ strtoul(nptr, endptr, base) if (isdigit(c)) c -= '0'; else if (isalpha(c)) - c -= isupper(c) ? 'A' - 10 : 'a' - 10; + c = (c & ~0x20) - 'A' - 10; else break; if (c >= base)