summaryrefslogtreecommitdiff
path: root/lib/memcasecmp.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1996-04-10 03:29:05 +0000
committerJim Meyering <jim@meyering.net>1996-04-10 03:29:05 +0000
commit5eb19629b011ad1750c62b08938155415fa909d2 (patch)
treeff479fb65774dc7f4e8b182a486f67bfa1be9879 /lib/memcasecmp.c
parentcbfdc4fd51d88c3b29da125349b6638c68e7aa2d (diff)
downloadcoreutils-5eb19629b011ad1750c62b08938155415fa909d2.tar.xz
.
Diffstat (limited to 'lib/memcasecmp.c')
-rw-r--r--lib/memcasecmp.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c
new file mode 100644
index 000000000..547902895
--- /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;
+}