xref: /plan9/sys/src/ape/lib/bsd/strncasecmp.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 #include <stdlib.h>
2 #include <string.h>
3 #include <ctype.h>
4 #include <bsd.h>
5 
6 int
7 strncasecmp(char *s1, char *s2,int n)
8 {
9 	char *s1ptr, *s2ptr;
10 	int s1size, s2size, i;
11 	int ret_val;
12 
13 	if (n<1)
14 		return 0;
15 
16 	s1size = n<strlen(s1)?n+1:strlen(s1)+1;
17 	s2size = n<strlen(s2)?n+1:strlen(s2)+1;
18 	s1ptr = (char *)malloc(s1size); s2ptr = (char *)malloc(s2size);
19 	if ((s1ptr == NULL) || (s2ptr == NULL))
20 		return 0; /* any better ideas here? */
21 
22 	for (i= 0; i < s1size ; i++ )
23 		s1ptr[i] = toupper(s1[i]);
24 	s1ptr[s1size] = '\0';
25 
26 	for (i= 0; i < s2size ; i++ )
27 		s2ptr[i] = toupper(s2[i]);
28 
29 	s2ptr[s2size] = '\0';
30 	ret_val = strncmp(s1ptr,s2ptr,n);
31 	free(s1ptr); free(s2ptr);
32 	return ret_val;
33 }
34