summaryrefslogtreecommitdiff
path: root/05/stdc_common.h
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-02-15 15:40:15 -0500
committerpommicket <pommicket@gmail.com>2022-02-15 15:40:15 -0500
commitf973ff8cb898aafd95673cb632ac83ebbcf820c7 (patch)
tree419ec3d77f1599c5fb0ffc97bc87b53b7a725a64 /05/stdc_common.h
parent1ea9d85e3fdf3e90ceb46938c40bc4b1cfc09d89 (diff)
mostly-standard scanf
Diffstat (limited to '05/stdc_common.h')
-rw-r--r--05/stdc_common.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/05/stdc_common.h b/05/stdc_common.h
index 22c5a42..c40fd3d 100644
--- a/05/stdc_common.h
+++ b/05/stdc_common.h
@@ -143,6 +143,8 @@ typedef struct {
int fd;
unsigned char eof;
unsigned char err;
+ unsigned char has_ungetc;
+ char ungetc; // character which was pushed by ungetc()
} FILE;
int errno;
@@ -213,6 +215,28 @@ int isspace(int c) {
return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v';
}
+int isdigit(int c) {
+ return c >= '0' && c <= '9';
+}
+
+int _isdigit_in_base(int c, int base) {
+ if (c >= '0' && c <= '9') {
+ return c - '0' < base;
+ } else if (c >= 'a' && c <= 'z') {
+ return c - 'a' + 10 < base;
+ } else if (c >= 'A' && c <= 'Z') {
+ return c - 'A' + 10 < base;
+ }
+ return 0;
+}
+
+void *memset(void *s, int c, size_t n) {
+ char *p = s, *end = p + n;
+ while (p < end)
+ *p++ = c;
+ return s;
+}
+
unsigned long strtoul(const char *nptr, char **endptr, int base) {
unsigned long value = 0, newvalue;
int overflow = 0;
@@ -277,7 +301,7 @@ long strtol(const char *nptr, char **endptr, int base) {
if (sign > 0) {
if (mag > LONG_MAX) {
errno = ERANGE;
- return LONG_MIN;
+ return LONG_MAX;
}
return (long)mag;
} else {