From 9f4891f95070c66ea9f1aba99d72724d4ab24e5a Mon Sep 17 00:00:00 2001 From: "John Wilbert M. Villamor" Date: Sat, 19 Sep 2020 20:43:05 +0800 Subject: Revised makefiles, added strtok(), command line arguments, SetHeapSize(), moved ISR and callback system to psxetc, moved debug font to psxgpu, fixed CD-ROM library crashing on PSIO, fixed interrupt callback setup to fix crashing on ResetGraph() --- libpsn00b/libc/string.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'libpsn00b/libc/string.c') diff --git a/libpsn00b/libc/string.c b/libpsn00b/libc/string.c index 0b7307d..e11ed67 100644 --- a/libpsn00b/libc/string.c +++ b/libpsn00b/libc/string.c @@ -302,6 +302,48 @@ double strtod(const char *nptr, char **endptr) return (i + d)*s; } +/* implementation by Lameguy64, behaves like OpenWatcom's strtok() */ +/* BIOS strtok seemed either bugged, or designed for wide chars */ + +static char *_strtok_curpos; +static char *_strtok_endpos; + +char *strtok( char *s1, char *s2 ) +{ + char *c,*t; + + if( s1 ) + { + _strtok_curpos = s1; + _strtok_endpos = s1+strlen( s1 ); + } + else + { + if( _strtok_curpos >= _strtok_endpos ) + return( NULL ); + } + + if( !*_strtok_curpos ) + return( NULL ); + + if( c = strstr( _strtok_curpos, s2 ) ) + { + *c = 0; + t = _strtok_curpos; + _strtok_curpos = c+1; + return( t ); + } + else + { + t = _strtok_curpos; + _strtok_curpos += strlen( t ); + return( t ); + } + + return( NULL ); + +} /* strtok */ + long double strtold(const char *nptr, char **endptr) { return (long double)strtod(nptr, endptr); @@ -310,4 +352,4 @@ 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 -- cgit v1.2.3