changeset 1589:67dd7adf10f6

*** empty log message ***
author Jim Meyering <jim@meyering.net>
date Thu, 31 Dec 1998 17:53:59 +0000
parents a6a81f3170d0
children 713508d75bc7
files lib/strncasecmp.c
diffstat 1 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/lib/strncasecmp.c
@@ -0,0 +1,34 @@
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <ctype.h>
+
+#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
+
+/* Compare no more than N characters of S1 and S2,
+   ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexicographically less
+   than, equal to or greater than S2.  */
+
+int
+strncasecmp (const char *s1, const char *s2, size_t n)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2 || n == 0)
+    return 0;
+
+  do
+    {
+      c1 = TOLOWER (*p1++);
+      c2 = TOLOWER (*p2++);
+      if (c1 == '\0' || c1 != c2)
+        return c1 - c2;
+    } while (--n > 0);
+
+  return c1 - c2;
+}