diff options
Diffstat (limited to 'src/CharClassify.cxx')
| -rw-r--r-- | src/CharClassify.cxx | 34 | 
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; +} | 
