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