aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/string.c17
-rw-r--r--src/utils/string.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/src/utils/string.c b/src/utils/string.c
index 1932d89..28c1600 100644
--- a/src/utils/string.c
+++ b/src/utils/string.c
@@ -1,5 +1,6 @@
#include "string.h"
#include "memory.h"
+#include "utils/log.h"
#include "utils/type.h"
size_t strLength(const char *str) {
@@ -28,6 +29,16 @@ bool strnEquals(const char *left, const char *right, size_t len) {
return true;
}
+bool strnEqualsCaseInsensitive(const char *left, const char *right,
+ size_t len) {
+ for (size_t i = 0; i < len; ++i) {
+ if (!charEqualsCaseInsensitive(left[i], right[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
size_t searchInStringArray(const char *array[], size_t array_size,
const char *str, size_t str_size) {
for (size_t i = 0; i < array_size; ++i) {
@@ -143,3 +154,9 @@ char *strClone(const char *str) {
}
return result;
}
+
+bool charEqualsCaseInsensitive(char left, char right) {
+ return left == right ||
+ ('A' <= right && right <= 'Z' && left == right + ('a' - 'A')) ||
+ ('A' <= left && left <= 'Z' && right == left + ('a' - 'A'));
+}
diff --git a/src/utils/string.h b/src/utils/string.h
index dd2209c..0b11dae 100644
--- a/src/utils/string.h
+++ b/src/utils/string.h
@@ -8,6 +8,7 @@ size_t strLength(const char *str);
bool strEquals(const char *left, const char *right);
bool strnEquals(const char *left, const char *right, size_t len);
+bool strnEqualsCaseInsensitive(const char *left, const char *right, size_t len);
size_t searchInStringArray(const char *array[], size_t array_size,
const char *str, size_t str_size);
@@ -18,3 +19,5 @@ f128 numberToFloat(char const*str_begin, char const*str_end, bool *success);
char *u64ToString(u64 value);
char *strClone(const char *str);
+
+bool charEqualsCaseInsensitive(char left,char right);