Browse Source
Some C libraries lack strcasestr(); add a stupid replacement to help folks with such. [jc: original Linus posting, updated with his "also need <ctype.h>", updated further with a fix from Joachim B Haga <cjhaga@fys.uio.no>"] Signed-off-by: Junio C Hamano <junkio@cox.net>maint
Linus Torvalds
20 years ago
committed by
Junio C Hamano
2 changed files with 29 additions and 0 deletions
@ -0,0 +1,23 @@ |
|||||||
|
#include <string.h> |
||||||
|
#include <ctype.h> |
||||||
|
|
||||||
|
char *gitstrcasestr(const char *haystack, const char *needle) |
||||||
|
{ |
||||||
|
int nlen = strlen(needle); |
||||||
|
int hlen = strlen(haystack) - nlen + 1; |
||||||
|
int i; |
||||||
|
|
||||||
|
for (i = 0; i < hlen; i++) { |
||||||
|
int j; |
||||||
|
for (j = 0; j < nlen; j++) { |
||||||
|
unsigned char c1 = haystack[i+j]; |
||||||
|
unsigned char c2 = needle[j]; |
||||||
|
if (toupper(c1) != toupper(c2)) |
||||||
|
goto next; |
||||||
|
} |
||||||
|
return (char *) haystack + i; |
||||||
|
next: |
||||||
|
; |
||||||
|
} |
||||||
|
return NULL; |
||||||
|
} |
Loading…
Reference in new issue