diff options
author | Jim Meyering <jim@meyering.net> | 1996-04-10 03:29:05 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1996-04-10 03:29:05 +0000 |
commit | 821438b9a84381b4128ca5bf9a6b18d3c680feb3 (patch) | |
tree | 7d9be6e5eecde99bca2c754458d47a8f30d96380 /lib/memcasecmp.c | |
parent | d404226c5d9ceb111b08e64dca827028966b90f9 (diff) | |
download | gnulib-821438b9a84381b4128ca5bf9a6b18d3c680feb3.tar.gz |
.
Diffstat (limited to 'lib/memcasecmp.c')
-rw-r--r-- | lib/memcasecmp.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c new file mode 100644 index 0000000000..547902895d --- /dev/null +++ b/lib/memcasecmp.c @@ -0,0 +1,32 @@ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <sys/types.h> +#include <ctype.h> + +#if _LIBC || STDC_HEADERS +# define TOLOWER(c) tolower (c) +#else +# define TOLOWER(c) (ISUPPER (c) ? tolower (c) : (c)) +#endif + +#include "memcasecmp.h" + +/* Like memcmp, but ignore differences in case. */ + +int +memcasecmp (const void *vs1, const void *vs2, size_t n) +{ + unsigned int i; + unsigned char *s1 = (unsigned char *) vs1; + unsigned char *s2 = (unsigned char *) vs2; + for (i = 0; i < n; i++) + { + unsigned char u1 = *s1++; + unsigned char u2 = *s2++; + if (TOLOWER (u1) != TOLOWER (u2)) + return TOLOWER (u1) - TOLOWER (u2); + } + return 0; +} |