Unprotoize.
[gnulib.git] / lib / memcasecmp.c
1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include <sys/types.h>
6 #include <ctype.h>
7
8 #if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
9 #define ISASCII(c) 1
10 #else
11 #define ISASCII(c) isascii(c)
12 #endif
13 #define ISUPPER(c) (ISASCII (c) && isupper (c))
14
15 #if _LIBC || STDC_HEADERS
16 # define TOLOWER(c) tolower (c)
17 #else
18 # define TOLOWER(c) (ISUPPER (c) ? tolower (c) : (c))
19 #endif
20
21 #include "memcasecmp.h"
22
23 /* Like memcmp, but ignore differences in case.  */
24
25 int
26 memcasecmp (vs1, vs2, n)
27      const void *vs1;
28      const void *vs2;
29      size_t n;
30 {
31   unsigned int i;
32   unsigned char *s1 = (unsigned char *) vs1;
33   unsigned char *s2 = (unsigned char *) vs2;
34   for (i = 0; i < n; i++)
35     {
36       unsigned char u1 = *s1++;
37       unsigned char u2 = *s2++;
38       if (TOLOWER (u1) != TOLOWER (u2))
39         return TOLOWER (u1) - TOLOWER (u2);
40     }
41   return 0;
42 }