diff --git a/configure.py b/configure.py index 79e8d033..6f764a60 100644 --- a/configure.py +++ b/configure.py @@ -850,7 +850,7 @@ config.libs = [ Object(Matching, "MSL_C.PPCEABI.bare.H/s_modf.c"), Object(Matching, "MSL_C.PPCEABI.bare.H/s_sin.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/scanf.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/string.c"), + Object(Matching, "MSL_C.PPCEABI.bare.H/string.c"), Object(Matching, "MSL_C.PPCEABI.bare.H/strtoul.c"), Object(Matching, "MSL_C.PPCEABI.bare.H/uart_console_io.c"), Object(Matching, "MSL_C.PPCEABI.bare.H/w_acos.c"), diff --git a/src/static/MSL_C.PPCEABI.bare.H/string.c b/src/static/MSL_C.PPCEABI.bare.H/string.c index d065b185..cff4cac3 100644 --- a/src/static/MSL_C.PPCEABI.bare.H/string.c +++ b/src/static/MSL_C.PPCEABI.bare.H/string.c @@ -187,6 +187,22 @@ bytecopy: } while (1); } +int strncmp(const char* str1, const char* str2, size_t n) +{ + const unsigned char* p1 = (unsigned char*)str1 - 1; + const unsigned char* p2 = (unsigned char*)str2 - 1; + unsigned long c1, c2; + + n++; + + while (--n) + if ((c1 = *++p1) != (c2 = *++p2)) + return (c1 - c2); + else if (!c1) + break; + return 0; +} + char* strchr(const char* str, int c) { const unsigned char* p = (unsigned char*)str - 1; unsigned long chr = (c & 0xFF);