| Index: base/strings/string_util.h
|
| diff --git a/base/strings/string_util.h b/base/strings/string_util.h
|
| index 62b3605a8933b9f94f0d2d1d49ec8708b2373511..5d26f1c54142f61489a9d7645c7425cc19509df3 100644
|
| --- a/base/strings/string_util.h
|
| +++ b/base/strings/string_util.h
|
| @@ -21,20 +21,10 @@
|
|
|
| namespace base {
|
|
|
| -// C standard-library functions like "strncasecmp" and "snprintf" that aren't
|
| -// cross-platform are provided as "base::strncasecmp", and their prototypes
|
| -// are listed below. These functions are then implemented as inline calls
|
| -// to the platform-specific equivalents in the platform-specific headers.
|
| -
|
| -// Compares the two strings s1 and s2 without regard to case using
|
| -// the current locale; returns 0 if they are equal, 1 if s1 > s2, and -1 if
|
| -// s2 > s1 according to a lexicographic comparison.
|
| -int strcasecmp(const char* s1, const char* s2);
|
| -
|
| -// Compares up to count characters of s1 and s2 without regard to case using
|
| -// the current locale; returns 0 if they are equal, 1 if s1 > s2, and -1 if
|
| -// s2 > s1 according to a lexicographic comparison.
|
| -int strncasecmp(const char* s1, const char* s2, size_t count);
|
| +// C standard-library functions that aren't cross-platform are provided as
|
| +// "base::...", and their prototypes are listed below. These functions are
|
| +// then implemented as inline calls to the platform-specific equivalents in the
|
| +// platform-specific headers.
|
|
|
| // Wrapper for vsnprintf that always null-terminates and always returns the
|
| // number of characters that would be in an untruncated formatted
|
| @@ -56,6 +46,19 @@ inline int snprintf(char* buffer, size_t size, const char* format, ...) {
|
| return result;
|
| }
|
|
|
| +// TODO(mark) http://crbug.com/472900 crashpad shouldn't use base while
|
| +// being DEPSed in. This backwards-compat hack is provided until crashpad is
|
| +// updated.
|
| +#if defined(OS_WIN)
|
| +inline int strcasecmp(const char* s1, const char* s2) {
|
| + return _stricmp(s1, s2);
|
| +}
|
| +#else // Posix
|
| +inline int strcasecmp(const char* string1, const char* string2) {
|
| + return ::strcasecmp(string1, string2);
|
| +}
|
| +#endif
|
| +
|
| // BSD-style safe and consistent string copy functions.
|
| // Copies |src| to |dst|, where |dst_size| is the total allocated size of |dst|.
|
| // Copies at most |dst_size|-1 characters, and always NULL terminates |dst|, as
|
| @@ -102,10 +105,13 @@ template <class Char> inline Char ToUpperASCII(Char c) {
|
|
|
| // Function objects to aid in comparing/searching strings.
|
|
|
| +// DO NOT USE. tolower() will given incorrect results for non-ASCII characters.
|
| +// Use the ASCII version, base::i18n::ToLower, or base::i18n::FoldCase.
|
| template<typename Char> struct CaseInsensitiveCompare {
|
| public:
|
| bool operator()(Char x, Char y) const {
|
| // TODO(darin): Do we really want to do locale sensitive comparisons here?
|
| + // ANSWER(brettw): No.
|
| // See http://crbug.com/24917
|
| return tolower(x) == tolower(y);
|
| }
|
| @@ -118,6 +124,22 @@ template<typename Char> struct CaseInsensitiveCompareASCII {
|
| }
|
| };
|
|
|
| +// Like strcasecmp for case-insensitive ASCII characters only. Returns:
|
| +// -1 (a < b)
|
| +// 0 (a == b)
|
| +// 1 (a > b)
|
| +// (unlike strcasecmp which can return values greater or less than 1/-1). For
|
| +// full Unicode support, use base::i18n::ToLower or base::i18h::FoldCase
|
| +// and then just call the normal string operators on the result.
|
| +BASE_EXPORT int CompareCaseInsensitiveASCII(StringPiece a, StringPiece b);
|
| +BASE_EXPORT int CompareCaseInsensitiveASCII(StringPiece16 a, StringPiece16 b);
|
| +
|
| +// Equality for ASCII case-insensitive comparisons. For full Unicode support,
|
| +// use base::i18n::ToLower or base::i18h::FoldCase and then compare with either
|
| +// == or !=.
|
| +BASE_EXPORT bool EqualsCaseInsensitiveASCII(StringPiece a, StringPiece b);
|
| +BASE_EXPORT bool EqualsCaseInsensitiveASCII(StringPiece16 a, StringPiece16 b);
|
| +
|
| // These threadsafe functions return references to globally unique empty
|
| // strings.
|
| //
|
|
|