|
|
1.1 ! root 1: #include <ctype.h> ! 2: ! 3: char ! 4: lc(ch) ! 5: char ch; ! 6: { ! 7: if (isupper(ch)) ! 8: return(tolower(ch)); ! 9: else ! 10: return(ch); ! 11: } ! 12: ! 13: /* ! 14: * Compare strings: s1>s2: >0 s1==s2: 0 s1<s2: <0 ! 15: */ ! 16: ! 17: strcasecmp(s1, s2) ! 18: register char *s1, *s2; ! 19: { ! 20: ! 21: while (lc(*s1) == lc(*s2++)) ! 22: if (*s1++=='\0') ! 23: return(0); ! 24: return(lc(*s1) - lc(*--s2)); ! 25: } ! 26: ! 27: /* ! 28: * Compare strings (at most n bytes): s1>s2: >0 s1==s2: 0 s1<s2: <0 ! 29: */ ! 30: ! 31: strncasecmp(s1, s2, n) ! 32: register char *s1, *s2; ! 33: register n; ! 34: { ! 35: ! 36: while (--n >= 0 && lc(*s1) == lc(*s2++)) ! 37: if (*s1++ == '\0') ! 38: return(0); ! 39: return(n<0 ? 0 : lc(*s1) - lc(*--s2)); ! 40: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.