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