diff options
Diffstat (limited to 'libc/string/string.c')
-rw-r--r-- | libc/string/string.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/libc/string/string.c b/libc/string/string.c index bb524eeac..27649b43b 100644 --- a/libc/string/string.c +++ b/libc/string/string.c @@ -197,21 +197,20 @@ weak_alias(strchr, index); /********************** Function strrchr ************************************/ #ifdef L_strrchr + char *strrchr(const char *str, int c) { register char *prev = 0; register char *ptr = (char *) str; - /* For null it's just like strlen */ - if (c == '\0') - return ptr + strlen(ptr); - - /* everything else just step along the string. */ - while ((ptr = strchr(ptr, c)) != 0) { - prev = ptr; + while (*ptr != '\0') { + if (*ptr == c) + prev = ptr; ptr++; } - return prev; + if (c == '\0') + return(ptr); + return(prev); } weak_alias(strrchr, rindex); |