Cleaned up message_id().
[mmh] / 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 }