Commit 99afb857 authored by Chris Allegretta's avatar Chris Allegretta
Browse files

strcasestr() - Replaced by mutt's mutt_stristr function, because the thought...

strcasestr() - Replaced by mutt's mutt_stristr function, because the thought of dynamically allocating memory and copying each line in a file to do a search or replace was causing me to lose sleep


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@654 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
parent 64bacd20
Showing with 21 additions and 26 deletions
+21 -26
...@@ -60,6 +60,11 @@ Cvs code - ...@@ -60,6 +60,11 @@ Cvs code -
do_replace() do_replace()
- If we manage to make it in somehow with VIEW_MODE on, abort - If we manage to make it in somehow with VIEW_MODE on, abort
nicely (fixes BUG #59). nicely (fixes BUG #59).
- utils.c
strcasestr()
- Replaced by mutt's mutt_stristr function, because the thought
of dynamically allocating memory and copying each line in a file
to do a search or replace was causing me to lose sleep.
- winio.c: - winio.c:
actual_x() actual_x()
- Remove inline from function decl (Albert Chin). - Remove inline from function decl (Albert Chin).
......
...@@ -48,37 +48,27 @@ void lowercase(char *src) ...@@ -48,37 +48,27 @@ void lowercase(char *src)
} }
/* I can't believe I have to write this function */ /* This is now mutt's version (called mutt_stristr) because it doesn't
Use memory allocation to do a simple search (yuck). */
char *strcasestr(char *haystack, char *needle) char *strcasestr(char *haystack, char *needle)
{ {
char *localneedle, *localhaystack, *found, *tmp, *tmp2; const char *p, *q;
/* Make a copy of the search string and search space */
localneedle = nmalloc(strlen(needle) + 2);
localhaystack = nmalloc(strlen(haystack) + 2);
strcpy(localneedle, needle);
strcpy(localhaystack, haystack);
/* Make them lowercase */ if (!haystack)
lowercase(localneedle);
lowercase(localhaystack);
/* Look for the lowercased substring in the lowercased search space -
return NULL if we didn't find anything */
if ((found = strstr(localhaystack, localneedle)) == NULL) {
free(localneedle);
free(localhaystack);
return NULL; return NULL;
if (!needle)
return (haystack);
while (*(p = haystack))
{
for (q = needle; *p && *q && tolower (*p) == tolower (*q); p++, q++)
;
if (!*q)
return (haystack);
haystack++;
} }
/* Else return the pointer to the same place in the real search space */ return NULL;
tmp2 = haystack;
for (tmp = localhaystack; tmp != found; tmp++)
tmp2++;
free(localneedle);
free(localhaystack);
return tmp2;
} }
char *strstrwrapper(char *haystack, char *needle) char *strstrwrapper(char *haystack, char *needle)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment