From: Lennart Poettering Date: Wed, 13 Jan 2016 18:45:05 +0000 (+0100) Subject: basic: add ascii_strcasecmp_nn() call X-Git-Tag: v229.1~1^2~56 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3b22b89bce6c5185e1db0a28390a0e6df138a27b;hp=7c1b422919819e9e7af4652b52d5f122a090ce53;p=elogind.git basic: add ascii_strcasecmp_nn() call 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. --- diff --git a/src/basic/string-util.c b/src/basic/string-util.c index dfcb29235..6f4593e6b 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -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; diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 48cdc736f..7ed649ae6 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -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_;