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