]> diplodocus.org Git - nmh/blob - sbr/strcasecmp.c
Added test-anno, test-dist, test-msgchk, and test-rcvtty.
[nmh] / sbr / strcasecmp.c
1
2 /*
3 * strcasecmp.c -- compare strings, ignoring case
4 *
5 * This code is Copyright (c) 2002, by the authors of nmh. See the
6 * COPYRIGHT file in the root directory of the nmh distribution for
7 * complete copyright information.
8 */
9
10 #include <h/mh.h>
11
12 /*
13 * Our version of strcasecmp has to deal with NULL strings.
14 * Once that is fixed in the rest of the code, we can use the
15 * native version, instead of this one.
16 */
17
18 int
19 mh_strcasecmp (const char *s1, const char *s2)
20 {
21 const unsigned char *us1, *us2;
22
23 us1 = (const unsigned char *) s1,
24 us2 = (const unsigned char *) s2;
25
26 if (!us1)
27 us1 = "";
28 if (!us2)
29 us2 = "";
30
31 while (tolower(*us1) == tolower(*us2++))
32 if (*us1++ == '\0')
33 return (0);
34 return (tolower(*us1) - tolower(*--us2));
35 }
36
37
38 int
39 mh_strncasecmp (const char *s1, const char *s2, size_t n)
40 {
41 const unsigned char *us1, *us2;
42
43 if (n != 0) {
44 us1 = (const unsigned char *) s1,
45 us2 = (const unsigned char *) s2;
46
47 do {
48 if (tolower(*us1) != tolower(*us2++))
49 return (tolower(*us1) - tolower(*--us2));
50 if (*us1++ == '\0')
51 break;
52 } while (--n != 0);
53 }
54 return (0);
55 }