FireBirdLib - Topfield TMS PVR TAP Programming Library
stricstr.c
Go to the documentation of this file.
1#include <string.h>
2#include <ctype.h>
3#include "FBLib_string.h"
4
5extern int strncasecmp(__const char *__s1, __const char *__s2, size_t __n);
6
7// case-insensitive version of strstr()
8char *stricstr(const char *s1, const char *s2)
9{
10 TRACEENTER();
11
12 bool found = FALSE;
13 char start[3];
14 char *str = NULL;
15
16 if(!s1 || !s2)
17 {
18 TRACEEXIT();
19 return NULL;
20 }
21
22 s1 = SkipCharTableBytes(s1);
23 s2 = SkipCharTableBytes(s2);
24
25 if(*s2)
26 {
27 size_t len = strlen(s2) - 1;
28
29 start[0] = toupper(*s2);
30 start[1] = tolower(*s2);
31 start[2] = '\0';
32
33 s2++;
34
35 do
36 {
37 if((str = strpbrk(s1, start)))
38 {
39 s1 = str + 1;
40 found = (strncasecmp(s1, s2, len) == 0);
41 }
42 }
43 while(str && !found && *s1);
44 }
45
46 TRACEEXIT();
47 return (found ? str : NULL);
48}
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
byte * SkipCharTableBytes(const byte *p)
int strncasecmp(__const char *__s1, __const char *__s2, size_t __n)
char * stricstr(const char *s1, const char *s2)
Definition: stricstr.c:8