From f94a09f4854cf885ed7018a8cc8c6e61a086608a Mon Sep 17 00:00:00 2001 From: "K. Lange" Date: Fri, 4 May 2018 12:17:32 +0900 Subject: [PATCH] add ctype.h --- base/usr/include/ctype.h | 13 +++++++++++++ libc/ctype/isalnum.c | 5 +++++ libc/ctype/isalpha.c | 3 +++ libc/ctype/isascii.c | 3 +++ libc/ctype/iscntrl.c | 3 +++ libc/ctype/isdigit.c | 3 +++ libc/ctype/isgraph.c | 3 +++ libc/ctype/islower.c | 3 +++ libc/ctype/isprint.c | 5 +++++ libc/ctype/ispunct.c | 5 +++++ libc/ctype/isspace.c | 3 +++ libc/ctype/isupper.c | 3 +++ libc/ctype/isxdigit.c | 3 +++ 13 files changed, 55 insertions(+) create mode 100644 libc/ctype/isalnum.c create mode 100644 libc/ctype/isalpha.c create mode 100644 libc/ctype/isascii.c create mode 100644 libc/ctype/iscntrl.c create mode 100644 libc/ctype/isdigit.c create mode 100644 libc/ctype/isgraph.c create mode 100644 libc/ctype/islower.c create mode 100644 libc/ctype/isprint.c create mode 100644 libc/ctype/ispunct.c create mode 100644 libc/ctype/isspace.c create mode 100644 libc/ctype/isupper.c create mode 100644 libc/ctype/isxdigit.c diff --git a/base/usr/include/ctype.h b/base/usr/include/ctype.h index 3f59c932..e650fd3d 100644 --- a/base/usr/include/ctype.h +++ b/base/usr/include/ctype.h @@ -1,2 +1,15 @@ #pragma once +extern int isalnum(int c); +extern int isalpha(int c); +extern int isdigit(int c); +extern int islower(int c); +extern int isgraph(int c); +extern int iscntrl(int c); +extern int isgraph(int c); +extern int ispunct(int c); +extern int isspace(int c); +extern int isupper(int c); +extern int isxdigit(int c); + +extern int isascii(int c); diff --git a/libc/ctype/isalnum.c b/libc/ctype/isalnum.c new file mode 100644 index 00000000..4ccb614a --- /dev/null +++ b/libc/ctype/isalnum.c @@ -0,0 +1,5 @@ +#include + +int isalnum(int c) { + return isalpha(c) || isdigit(c); +} diff --git a/libc/ctype/isalpha.c b/libc/ctype/isalpha.c new file mode 100644 index 00000000..941f192a --- /dev/null +++ b/libc/ctype/isalpha.c @@ -0,0 +1,3 @@ +int isalpha(int c) { + return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); +} diff --git a/libc/ctype/isascii.c b/libc/ctype/isascii.c new file mode 100644 index 00000000..78c8eba0 --- /dev/null +++ b/libc/ctype/isascii.c @@ -0,0 +1,3 @@ +int isascii(int c) { + return (c <= 0x7f); +} diff --git a/libc/ctype/iscntrl.c b/libc/ctype/iscntrl.c new file mode 100644 index 00000000..0b80b4ca --- /dev/null +++ b/libc/ctype/iscntrl.c @@ -0,0 +1,3 @@ +int iscntrl(int c) { + return ((c >= 0 && c <= 0x1f) || (c == 0x7f)); +} diff --git a/libc/ctype/isdigit.c b/libc/ctype/isdigit.c new file mode 100644 index 00000000..c0b0cee6 --- /dev/null +++ b/libc/ctype/isdigit.c @@ -0,0 +1,3 @@ +int isdigit(int c) { + return (c >= '0' && c <= '9'); +} diff --git a/libc/ctype/isgraph.c b/libc/ctype/isgraph.c new file mode 100644 index 00000000..c97a4bae --- /dev/null +++ b/libc/ctype/isgraph.c @@ -0,0 +1,3 @@ +int isgraph(int c) { + return (c >= '!' && c <= '~'); +} diff --git a/libc/ctype/islower.c b/libc/ctype/islower.c new file mode 100644 index 00000000..a108a3cb --- /dev/null +++ b/libc/ctype/islower.c @@ -0,0 +1,3 @@ +int islower(int c) { + return (c >= 'a' && c <= 'z'); +} diff --git a/libc/ctype/isprint.c b/libc/ctype/isprint.c new file mode 100644 index 00000000..70c62867 --- /dev/null +++ b/libc/ctype/isprint.c @@ -0,0 +1,5 @@ +#include + +int isprint(int c) { + return isgraph(c) || (c == ' '); +} diff --git a/libc/ctype/ispunct.c b/libc/ctype/ispunct.c new file mode 100644 index 00000000..636355b6 --- /dev/null +++ b/libc/ctype/ispunct.c @@ -0,0 +1,5 @@ +#include + +int ispunct(int c) { + return isgraph(c) && !isalnum(c); +} diff --git a/libc/ctype/isspace.c b/libc/ctype/isspace.c new file mode 100644 index 00000000..a0599635 --- /dev/null +++ b/libc/ctype/isspace.c @@ -0,0 +1,3 @@ +int isspace(int c) { + return (c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v' || c == ' '); +} diff --git a/libc/ctype/isupper.c b/libc/ctype/isupper.c new file mode 100644 index 00000000..aefee52c --- /dev/null +++ b/libc/ctype/isupper.c @@ -0,0 +1,3 @@ +int isupper(int c) { + return (c >= 'A' && c <= 'Z'); +} diff --git a/libc/ctype/isxdigit.c b/libc/ctype/isxdigit.c new file mode 100644 index 00000000..fcb431c4 --- /dev/null +++ b/libc/ctype/isxdigit.c @@ -0,0 +1,3 @@ +int isxdigit(int c) { + return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); +}