tweaks: elide a counter and a comparison
For clarity and a tiny bit more speed. Also rename some variables.master
parent
ecd18c1694
commit
cd705a7c4c
24
src/chars.c
24
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
|
/* 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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue