diff options
Diffstat (limited to 'src/utils/string.c')
-rw-r--r-- | src/utils/string.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/utils/string.c b/src/utils/string.c index ea588f7..5a2a0bc 100644 --- a/src/utils/string.c +++ b/src/utils/string.c @@ -60,3 +60,28 @@ bool hubbub_string_match(const uint8_t *a, size_t a_len, return true; } +/** + * Check that one string is case-insensitively equal to another + * + * \param a String to compare + * \param a_len Length of first string + * \param b String to compare + * \param b_len Length of second string + */ +bool hubbub_string_match_ci(const uint8_t *a, size_t a_len, + const uint8_t *b, size_t b_len) +{ + uint8_t z1, z2; + + if (a_len != b_len) + return false; + + for (const uint8_t *s1 = a, *s2 = b; b_len > 0; s1++, s2++, b_len--) + { + z1 = (*s1 & ~0x20); + z2 = (*s2 & ~0x20); + if (z1 != z2) return false; + } + + return true; +} |