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