chiark / gitweb /
basic: add ascii_strcasecmp_nn() call
authorLennart Poettering <lennart@poettering.net>
Wed, 13 Jan 2016 18:45:05 +0000 (19:45 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 17 May 2017 13:22:15 +0000 (15:22 +0200)
In contrast to ascii_strcasecmp_nn() it takes two character buffers with their individual length. It will then compare
the buffers up the smaller size of the two buffers, and finally the length themselves.

src/basic/string-util.c
src/basic/string-util.h

index dfcb29235546d6764cd0e86f5a14edb221e639b8..6f4593e6b41259e1070cb4627acfe04a75d514fa 100644 (file)
@@ -356,6 +356,21 @@ int ascii_strcasecmp_n(const char *a, const char *b, size_t n) {
         return 0;
 }
 
+int ascii_strcasecmp_nn(const char *a, size_t n, const char *b, size_t m) {
+        int r;
+
+        r = ascii_strcasecmp_n(a, b, MIN(n, m));
+        if (r != 0)
+                return r;
+
+        if (n < m)
+                return -1;
+        else if (n > m)
+                return 1;
+        else
+                return 0;
+}
+
 bool chars_intersect(const char *a, const char *b) {
         const char *p;
 
index 48cdc736fd9c25de56296a3be56f822ec0dbc14a..7ed649ae6cd4a88c2ac5d8295f675a4a3b441481 100644 (file)
@@ -133,6 +133,7 @@ char *ascii_strlower(char *s);
 char *ascii_strlower_n(char *s, size_t n);
 
 int ascii_strcasecmp_n(const char *a, const char *b, size_t n);
+int ascii_strcasecmp_nn(const char *a, size_t n, const char *b, size_t m);
 
 bool chars_intersect(const char *a, const char *b) _pure_;