From: David Given Date: Sat, 21 Mar 2015 22:12:01 +0000 (+0100) Subject: Did a smallification and header fix pass. Still passes the unit tests! X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=c41d66152d6944f92b7f91901b6d5e8e5be47f59;p=FUZIX.git Did a smallification and header fix pass. Still passes the unit tests! --HG-- extra : source : 49f4625dc1e0a95f94779069e144e8a2d7c4a9e3 --- diff --git a/Library/include/ctype.h b/Library/include/ctype.h index f217afeb..c8081dd9 100644 --- a/Library/include/ctype.h +++ b/Library/include/ctype.h @@ -3,11 +3,11 @@ #ifndef __CTYPE_H #define __CTYPE_H +#include + extern int toupper(int c); extern int tolower(int c); -#define toascii(c) ((c) & 0x7f) - extern int isalnum(int c); extern int isalpha(int c); extern int isascii(int c); @@ -20,10 +20,11 @@ extern int ispunct(int c); extern int isspace(int c); extern int isupper(int c); extern int isxdigit(int c); -extern int isoctal(int c); + +#define isascii(c) (!((uint8_t)c & 0x80)) +#define toascii(c) ((c) & 0x7f) #define isdecimal isdigit -#define isprint(c) (!iscntrl(c)) #define _tolower tolower #define _toupper toupper diff --git a/Library/libs/isalnum.c b/Library/libs/isalnum.c index adcd2f2e..e424b9e2 100644 --- a/Library/libs/isalnum.c +++ b/Library/libs/isalnum.c @@ -8,5 +8,5 @@ int isalnum(int c) { - return isalpha(c) || isdigit(c); + return isdigit(c) || isalpha(c); } diff --git a/Library/libs/isascii.c b/Library/libs/isascii.c index d91fbfa0..df5db8e1 100644 --- a/Library/libs/isascii.c +++ b/Library/libs/isascii.c @@ -4,11 +4,11 @@ #if !defined __TESTING__ #include #include +#undef isascii #endif int isascii(int c) { - uint8_t cb = c; - return (cb >= 0) && (cb <= 127); + return !((uint8_t)c & 0x80); } diff --git a/Library/libs/isblank.c b/Library/libs/isblank.c index 7def9bca..ab7edc79 100644 --- a/Library/libs/isblank.c +++ b/Library/libs/isblank.c @@ -9,7 +9,6 @@ int isblank(int c) { - uint8_t cb = c; - return (cb == ' ') || (c == '\t'); + return ((uint8_t)c == ' ') || ((uint8_t)c == '\t'); } diff --git a/Library/libs/iscntrl.c b/Library/libs/iscntrl.c index 2987ec2f..7aafbd37 100644 --- a/Library/libs/iscntrl.c +++ b/Library/libs/iscntrl.c @@ -8,6 +8,5 @@ int iscntrl(int c) { - uint8_t bc = c; - return ((bc >= 0) && (bc <= 31)) || (bc == 127); + return (((uint8_t)c >= 0) && ((uint8_t)c <= 31)) || ((uint8_t)c == 127); } diff --git a/Library/libs/isdigit.c b/Library/libs/isdigit.c index 57f4e1a9..91314c0d 100644 --- a/Library/libs/isdigit.c +++ b/Library/libs/isdigit.c @@ -8,7 +8,6 @@ int isdigit(int c) { - uint8_t bc = c; - return (bc >= '0') && (bc <= '9'); + return ((uint8_t)c >= '0') && ((uint8_t)c <= '9'); } diff --git a/Library/libs/isgraph.c b/Library/libs/isgraph.c index f95e9420..8954caba 100644 --- a/Library/libs/isgraph.c +++ b/Library/libs/isgraph.c @@ -8,7 +8,6 @@ int isgraph(int c) { - uint8_t cb = c; - return (c >= 33) && (c <= 126); + return ((uint8_t)c >= 33) && ((uint8_t)c <= 126); } diff --git a/Library/libs/islower.c b/Library/libs/islower.c index db7a5f2f..38702e39 100644 --- a/Library/libs/islower.c +++ b/Library/libs/islower.c @@ -8,6 +8,5 @@ int islower(int c) { - uint8_t bc = c; - return (bc >= 'a') && (bc <= 'z'); + return ((uint8_t)c >= 'a') && ((uint8_t)c <= 'z'); } diff --git a/Library/libs/isprint.c b/Library/libs/isprint.c index d3f6ce38..0e72f5f3 100644 --- a/Library/libs/isprint.c +++ b/Library/libs/isprint.c @@ -9,7 +9,6 @@ int isprint(int c) { - uint8_t cb = c; - return (cb >= 32) && (cb <= 126); + return ((uint8_t)c >= 32) && ((uint8_t)c <= 126); } diff --git a/Library/libs/isspace.c b/Library/libs/isspace.c index f0727600..7d27773d 100644 --- a/Library/libs/isspace.c +++ b/Library/libs/isspace.c @@ -9,6 +9,11 @@ int isspace(int c) { - return c && !!strchr(" \t\n\r\f\v", c); + return ((uint8_t)c == ' ') || + ((uint8_t)c == '\t') || + ((uint8_t)c == '\n') || + ((uint8_t)c == '\r') || + ((uint8_t)c == '\f') || + ((uint8_t)c == '\v'); } diff --git a/Library/libs/isupper.c b/Library/libs/isupper.c index 5368cad1..666749a0 100644 --- a/Library/libs/isupper.c +++ b/Library/libs/isupper.c @@ -8,6 +8,5 @@ int isupper(int c) { - uint8_t bc = c; - return (bc >= 'A') && (bc <= 'Z'); + return ((uint8_t)c >= 'A') && ((uint8_t)c <= 'Z'); } diff --git a/Library/libs/isxdigit.c b/Library/libs/isxdigit.c index 94be6d03..2e56a7c7 100644 --- a/Library/libs/isxdigit.c +++ b/Library/libs/isxdigit.c @@ -9,7 +9,8 @@ int isxdigit(int c) { uint8_t bc = c; - return isdigit(bc) - || ((bc >= 'a') && (bc <= 'f')) - || ((bc >= 'A') && (bc <= 'F')); + if (isdigit(bc)) + return 1; + bc |= 0x20; + return ((bc >= 'a') && (bc <= 'f')); } diff --git a/Library/libs/tolower.c b/Library/libs/tolower.c index 9824af50..ee1cd54f 100644 --- a/Library/libs/tolower.c +++ b/Library/libs/tolower.c @@ -3,12 +3,14 @@ #if !defined __TESTING__ #include +#include #endif int tolower(int c) { - if (isupper(c)) - c = c^0x20; - return c; + uint8_t cb = c; + if ((cb >= 'A') && (cb <= 'Z')) + cb ^= 0x20; + return cb; } diff --git a/Library/libs/toupper.c b/Library/libs/toupper.c index 44badc0e..75a6df39 100644 --- a/Library/libs/toupper.c +++ b/Library/libs/toupper.c @@ -3,12 +3,14 @@ #if !defined __TESTING__ #include +#include #endif int toupper(int c) { - if (islower(c)) - c = c^0x20; - return c; + uint8_t cb = c; + if ((cb >= 'a') && (cb <= 'z')) + cb ^= 0x20; + return cb; } diff --git a/Library/tests/ctype.c b/Library/tests/ctype.c index 768ea945..3b4478b5 100644 --- a/Library/tests/ctype.c +++ b/Library/tests/ctype.c @@ -124,12 +124,15 @@ static void test(int i) TEST(isupper); TEST(isxdigit); - if (sys_tolower(i) != fuzix_tolower(i)) - printf("FAIL sys_tolower(%d)=%d; fuzix_tolower(%d)=%d\n", - i, sys_tolower(i), i, fuzix_tolower(i)); - if (sys_toupper(i) != fuzix_toupper(i)) - printf("FAIL sys_toupper(%d)=%d; fuzix_toupper(%d)=%d\n", - i, sys_toupper(i), i, fuzix_toupper(i)); + if (i != EOF) + { + if (sys_tolower(i) != fuzix_tolower(i)) + printf("FAIL sys_tolower(%d)=%d; fuzix_tolower(%d)=%d\n", + i, sys_tolower(i), i, fuzix_tolower(i)); + if (sys_toupper(i) != fuzix_toupper(i)) + printf("FAIL sys_toupper(%d)=%d; fuzix_toupper(%d)=%d\n", + i, sys_toupper(i), i, fuzix_toupper(i)); + } } int main(int argc, const char* argv[])