* as/as_gbz80.dsp, as/z80/as_gbz80.dsp,
[fw/sdcc] / as / strcmpi.c
index 8c5ad454a779968f5f3c36f1244a6778e3331ad7..c45ce9dc555bca09df076bc581a36c566328da59 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <ctype.h>
+#include <stddef.h>
 
 int as_strcmpi (const char *s1, const char *s2)
 {
@@ -32,3 +33,23 @@ int as_strcmpi (const char *s1, const char *s2)
   return c1 - c2;
 }
 
+int as_strncmpi (const char *s1, const char *s2, size_t n)
+{
+  const unsigned char *p1 = (const unsigned char *) s1;
+  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')
+       break;
+    }
+  while ((c1 == c2) && --n);
+
+  return c1 - c2;
+}