From 07bf7efa0ac1f7ca8ca57a675dd8c6e2c52df73a Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Sat, 21 Feb 2009 18:25:30 +0000 Subject: [PATCH] Add version of StringsEqualNoCase that takes two null-terminated C-strings and compares up to 'len' characters. I tend to screw up string comparison functions, so anyone who is interested please review this\! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65236 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/StringExtras.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/llvm/ADT/StringExtras.h b/include/llvm/ADT/StringExtras.h index 75b54f5b78c..e40e409802d 100644 --- a/include/llvm/ADT/StringExtras.h +++ b/include/llvm/ADT/StringExtras.h @@ -159,6 +159,25 @@ static inline bool StringsEqualNoCase(const std::string &LHS, } return RHS[LHS.size()] == 0; // Not too long? } + +/// StringsEqualNoCase - Return true if the two null-terminated C strings are +/// equal, ignoring + +static inline bool StringsEqualNoCase(const char *LHS, const char *RHS, + unsigned len) { + + for (unsigned i = 0; i < len; ++i) { + if (tolower(LHS[i]) != tolower(RHS[i])) + return false; + + // If RHS[i] == 0 then LHS[i] == 0 or otherwise we would have returned + // at the previous branch as tolower('\0') == '\0'. + if (RHS[i] == 0) + return true; + } + + return true; +} /// CStrInCStrNoCase - Portable version of strcasestr. Locates the first /// occurance of c-string 's2' in string 's1', ignoring case. Returns -- 2.34.1