1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif /* Def: HAVE_CONFIG_H */
4
5 #include "strgicmp.h"
6 #include <ctype.h>
7
strgicmp(const char * s1,const char * s2)8 at_bool strgicmp (const char *s1, const char *s2)
9 {
10 if (s1 == NULL || s2 == NULL)
11 return (false);
12
13 while (*s1 != '\0' && *s2 != '\0')
14 {
15 if (tolower (*s1) != tolower (*s2))
16 break;
17 s1++;
18 s2++;
19 }
20 if (*s1 == '\0' && *s2 == '\0')
21 return (true);
22 else
23 return (false);
24 }
25
strgnicmp(const char * s1,const char * s2,size_t len)26 at_bool strgnicmp (const char *s1, const char *s2, size_t len)
27 {
28 long i = 0;
29
30 if (s1 == NULL || s2 == NULL)
31 return (false);
32
33 while (*s1 != '\0' && *s2 != '\0')
34 {
35 if (tolower (*s1) != tolower (*s2) || i == len)
36 break;
37 s1++;
38 s2++;
39 i++;
40 }
41 if ((*s1 == '\0' && *s2 == '\0') || len == i)
42 return (true);
43 else
44 return (false);
45 }
46
47 #if 0
48 #include <stdio.h>
49 void
50 result (at_bool val)
51 {
52 if (val)
53 printf("successful\n");
54 else
55 printf("failed\n");
56 }
57 int main()
58 {
59 result(strgicmp("abc", "abc"));
60 result(!strgicmp("abc", "abcd"));
61 result(strgicmp("abc", "ABC"));
62 result(strgicmp("abc", "abC"));
63 result(!strgicmp("abc", "abCd"));
64
65 result(strgnicmp("abc", "abc", 3));
66 result(strgnicmp("abc", "abcd", 3));
67 result(!strgnicmp("abc", "abcd", 4));
68 result(strgnicmp("abc", "ABC", 3));
69 result(strgnicmp("abc", "ABZ", 2));
70 result(strgnicmp("abc", "abC", 3));
71 result(strgnicmp("abc", "abCdddd", 3));
72 return 0;
73 }
74 #endif /* 0 */
75