[llvm-commits] [llvm] r65236 - /llvm/trunk/include/llvm/ADT/StringExtras.h

Nick Lewycky nicholas at mxc.ca
Sat Feb 21 11:03:43 PST 2009


Ted Kremenek wrote:
> Author: kremenek
> Date: Sat Feb 21 12:25:30 2009
> New Revision: 65236
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=65236&view=rev
> Log:
> 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\!

According to my man pages, strncasecmp is defined in POSIX.1-2001. Does 
it not exist on any platform you're interested in?

> 
> Modified:
>     llvm/trunk/include/llvm/ADT/StringExtras.h
> 
> Modified: llvm/trunk/include/llvm/ADT/StringExtras.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringExtras.h?rev=65236&r1=65235&r2=65236&view=diff
> 
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/StringExtras.h (original)
> +++ llvm/trunk/include/llvm/ADT/StringExtras.h Sat Feb 21 12:25:30 2009
> @@ -159,6 +159,25 @@
>    }
>    return RHS[LHS.size()] == 0;  // Not too long?
>  }
> +  
> +/// StringsEqualNoCase - Return true if the two null-terminated C strings are
> +///  equal, ignoring

Finish this sentence.

> +
> +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;
> +}

That looks correct to me.

Nick

>  /// CStrInCStrNoCase - Portable version of strcasestr.  Locates the first
>  ///  occurance of c-string 's2' in string 's1', ignoring case.  Returns
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 




More information about the llvm-commits mailing list