From cd705a7c4c3db6c8ed7395c85e76ff7edc9ff6b1 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@justemail.net> Date: Sun, 18 Dec 2016 21:45:47 +0100 Subject: [PATCH] tweaks: elide a counter and a comparison For clarity and a tiny bit more speed. Also rename some variables. --- src/chars.c | 24 ++++++++++++------------ src/proto.h | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/chars.c b/src/chars.c index d2088bd2..8079317b 100644 --- a/src/chars.c +++ b/src/chars.c @@ -577,25 +577,25 @@ char *mbstrcasestr(const char *haystack, const char *needle) /* This function is equivalent to strstr(), except in that it scans the * string in reverse, starting at rev_start. */ -char *revstrstr(const char *haystack, const char *needle, const char - *rev_start) +char *revstrstr(const char *haystack, const char *needle, + const char *pointer) { - size_t rev_start_len, needle_len; + size_t needle_len = strlen(needle); + size_t tail_len = strlen(pointer); - if (*needle == '\0') - return (char *)rev_start; - - needle_len = strlen(needle); + if (needle_len == 0) + return (char *)pointer; if (strlen(haystack) < needle_len) return NULL; - rev_start_len = strlen(rev_start); + if (tail_len < needle_len) + pointer += tail_len - needle_len; - for (; rev_start >= haystack; rev_start--, rev_start_len++) { - if (rev_start_len >= needle_len && strncmp(rev_start, needle, - needle_len) == 0) - return (char *)rev_start; + while (pointer >= haystack) { + if (strncmp(pointer, needle, needle_len) == 0) + return (char *)pointer; + pointer--; } return NULL; diff --git a/src/proto.h b/src/proto.h index cc9dd208..c4986810 100644 --- a/src/proto.h +++ b/src/proto.h @@ -227,8 +227,8 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n); char *nstrcasestr(const char *haystack, const char *needle); #endif char *mbstrcasestr(const char *haystack, const char *needle); -char *revstrstr(const char *haystack, const char *needle, const char - *rev_start); +char *revstrstr(const char *haystack, const char *needle, + const char *pointer); char *revstrcasestr(const char *haystack, const char *needle, const char *rev_start); char *mbrevstrcasestr(const char *haystack, const char *needle, const -- GitLab