summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/string/string.c15
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);