Root/
Source at commit 2350 created 10 years 5 months ago. By ifabio, remove duplicated define. | |
---|---|
1 | /*␊ |
2 | * strncasecmp.c␊ |
3 | */␊ |
4 | ␊ |
5 | #include <string.h>␊ |
6 | #include <ctype.h>␊ |
7 | ␊ |
8 | int strncasecmp(const char *s1, const char *s2, size_t n)␊ |
9 | {␊ |
10 | ␉const unsigned char *c1 = (const unsigned char *)s1;␊ |
11 | ␉const unsigned char *c2 = (const unsigned char *)s2;␊ |
12 | ␉unsigned char ch;␊ |
13 | ␉int d = 0;␊ |
14 | ␊ |
15 | ␉while (n--) {␊ |
16 | ␉␉/* toupper() expects an unsigned char (implicitly cast to int)␊ |
17 | ␉␉ as input, and returns an int, which is exactly what we want. */␊ |
18 | ␉␉d = toupper(ch = *c1++) - toupper(*c2++);␊ |
19 | ␉␉if (d || !ch)␊ |
20 | ␉␉␉break;␊ |
21 | ␉}␊ |
22 | ␊ |
23 | ␉return d;␊ |
24 | }␊ |
25 |