aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CharClassify.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/CharClassify.cxx')
-rw-r--r--src/CharClassify.cxx34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/CharClassify.cxx b/src/CharClassify.cxx
index acab4b229..42a0ff10e 100644
--- a/src/CharClassify.cxx
+++ b/src/CharClassify.cxx
@@ -41,3 +41,37 @@ void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {
}
}
}
+
+int CompareCaseInsensitive(const char *a, const char *b) {
+ while (*a && *b) {
+ if (*a != *b) {
+ char upperA = MakeUpperCase(*a);
+ char upperB = MakeUpperCase(*b);
+ if (upperA != upperB)
+ return upperA - upperB;
+ }
+ a++;
+ b++;
+ }
+ // Either *a or *b is nul
+ return *a - *b;
+}
+
+int CompareNCaseInsensitive(const char *a, const char *b, size_t len) {
+ while (*a && *b && len) {
+ if (*a != *b) {
+ char upperA = MakeUpperCase(*a);
+ char upperB = MakeUpperCase(*b);
+ if (upperA != upperB)
+ return upperA - upperB;
+ }
+ a++;
+ b++;
+ len--;
+ }
+ if (len == 0)
+ return 0;
+ else
+ // Either *a or *b is nul
+ return *a - *b;
+}