tweaks: elide a counter and a comparison

For clarity and a tiny bit more speed.  Also rename some variables.
master
Benno Schulenberg 2016-12-18 21:45:47 +01:00
parent ecd18c1694
commit cd705a7c4c
2 changed files with 14 additions and 14 deletions

View File

@ -577,25 +577,25 @@ char *mbstrcasestr(const char *haystack, const char *needle)
/* This function is equivalent to strstr(), except in that it scans the /* This function is equivalent to strstr(), except in that it scans the
* string in reverse, starting at rev_start. */ * string in reverse, starting at rev_start. */
char *revstrstr(const char *haystack, const char *needle, const char char *revstrstr(const char *haystack, const char *needle,
*rev_start) 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') if (needle_len == 0)
return (char *)rev_start; return (char *)pointer;
needle_len = strlen(needle);
if (strlen(haystack) < needle_len) if (strlen(haystack) < needle_len)
return NULL; 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++) { while (pointer >= haystack) {
if (rev_start_len >= needle_len && strncmp(rev_start, needle, if (strncmp(pointer, needle, needle_len) == 0)
needle_len) == 0) return (char *)pointer;
return (char *)rev_start; pointer--;
} }
return NULL; return NULL;

View File

@ -227,8 +227,8 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n);
char *nstrcasestr(const char *haystack, const char *needle); char *nstrcasestr(const char *haystack, const char *needle);
#endif #endif
char *mbstrcasestr(const char *haystack, const char *needle); char *mbstrcasestr(const char *haystack, const char *needle);
char *revstrstr(const char *haystack, const char *needle, const char char *revstrstr(const char *haystack, const char *needle,
*rev_start); const char *pointer);
char *revstrcasestr(const char *haystack, const char *needle, const char char *revstrcasestr(const char *haystack, const char *needle, const char
*rev_start); *rev_start);
char *mbrevstrcasestr(const char *haystack, const char *needle, const char *mbrevstrcasestr(const char *haystack, const char *needle, const