summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/strrstr.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/libbb/strrstr.c b/libbb/strrstr.c
index 5a26859..126fed7 100644
--- a/libbb/strrstr.c
+++ b/libbb/strrstr.c
@@ -13,19 +13,16 @@
* The strrstr() function finds the last occurrence of the substring needle
* in the string haystack. The terminating nul characters are not compared.
*/
-char* strrstr(const char *haystack, const char *needle)
+char *strrstr(const char *haystack, const char *needle)
{
char *r = NULL;
-
- if (!needle[0])
- return r;
- while (1) {
- char *p = strstr(haystack, needle);
- if (!p)
- return r;
+
+ do {
+ char *p = strstr(haystack, needle);
+ if (p)
r = p;
- haystack = p + 1;
- }
+ } while (*haystack++);
+ return r;
}
#ifdef __DO_STRRSTR_TEST