aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc/string.c
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2022-01-18 08:31:14 +0800
committerGitHub <noreply@github.com>2022-01-18 08:31:14 +0800
commit05d44488bd5587786f4bd0286fc0f555c79aa46a (patch)
tree5740f396d10a9580c3a39ca536544436898ff1b6 /libpsn00b/libc/string.c
parent08de895e8582dbc70b639ae5f511ab9ebfb4d68a (diff)
parente9475e283a82665fe6c19bebc3318b5084f15a2e (diff)
downloadpsn00bsdk-05d44488bd5587786f4bd0286fc0f555c79aa46a.tar.gz
Merge pull request #44 from spicyjpeg/actions
GitHub Actions CI, psxcd and libc fixes, new examples
Diffstat (limited to 'libpsn00b/libc/string.c')
-rw-r--r--libpsn00b/libc/string.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/libpsn00b/libc/string.c b/libpsn00b/libc/string.c
index 445b227..a1a9a05 100644
--- a/libpsn00b/libc/string.c
+++ b/libpsn00b/libc/string.c
@@ -8,6 +8,10 @@
#include <string.h>
#include <stdlib.h>
+// Uncomment to enable strtod(), strtold() and strtof(). Note that these
+// functions use extremely slow software floats.
+//#define ALLOW_FLOAT
+
int tolower(int chr)
{
return (chr >='A' && chr<='Z') ? (chr + 32) : (chr);
@@ -252,6 +256,8 @@ long strtol(const char *nptr, char **endptr, int base)
return (long)strtoll(nptr, endptr, base);
}
+#ifdef ALLOW_FLOAT
+
double strtod(const char *nptr, char **endptr)
{
char strbuf[64];
@@ -302,6 +308,8 @@ double strtod(const char *nptr, char **endptr)
return (i + d)*s;
}
+#endif
+
/* implementation by Lameguy64, behaves like OpenWatcom's strtok() */
/* BIOS strtok seemed either bugged, or designed for wide chars */
@@ -344,6 +352,8 @@ char *strtok( char *s1, char *s2 )
} /* strtok */
+#ifdef ALLOW_FLOAT
+
long double strtold(const char *nptr, char **endptr)
{
return (long double)strtod(nptr, endptr);
@@ -352,4 +362,6 @@ long double strtold(const char *nptr, char **endptr)
float strtof(const char *nptr, char **endptr)
{
return (float)strtod(nptr, endptr);
-} \ No newline at end of file
+}
+
+#endif