Merge pull request #1678 from schellap/master

Fix host case comparison
This commit is contained in:
Senthil 2016-03-03 18:01:47 -08:00
commit 5cf680d2f0
5 changed files with 20 additions and 12 deletions

View file

@ -82,9 +82,9 @@ bool parse_arguments(const int argc, const pal::char_t* argv[], arguments_t& arg
{
auto depsfile_candidate = pal::string_t(args.app_argv[0]);
if (starts_with(depsfile_candidate, s_depsArgPrefix))
if (starts_with(depsfile_candidate, s_deps_arg_prefix, false))
{
args.deps_path = depsfile_candidate.substr(s_depsArgPrefix.length());
args.deps_path = depsfile_candidate.substr(s_deps_arg_prefix.length());
if (!pal::realpath(&args.deps_path))
{
trace::error(_X("Failed to locate deps file: %s"), args.deps_path.c_str());

View file

@ -8,7 +8,7 @@
#include "pal.h"
#include "trace.h"
static const pal::string_t s_depsArgPrefix = _X("--depsfile:");
static const pal::string_t s_deps_arg_prefix = _X("--depsfile:");
struct arguments_t
{

View file

@ -95,6 +95,9 @@ namespace pal
inline int strcmp(const char_t* str1, const char_t* str2) { return ::wcscmp(str1, str2); }
inline int strcasecmp(const char_t* str1, const char_t* str2) { return ::_wcsicmp(str1, str2); }
inline int strncmp(const char_t* str1, const char_t* str2, int len) { return ::wcsncmp(str1, str2, len); }
inline int strncasecmp(const char_t* str1, const char_t* str2, int len) { return ::_wcsnicmp(str1, str2, len); }
inline size_t strlen(const char_t* str) { return ::wcslen(str); }
inline void err_vprintf(const char_t* format, va_list vl) { ::vfwprintf(stderr, format, vl); ::fputws(_X("\r\n"), stderr); }
@ -125,6 +128,8 @@ namespace pal
inline int strcmp(const char_t* str1, const char_t* str2) { return ::strcmp(str1, str2); }
inline int strcasecmp(const char_t* str1, const char_t* str2) { return ::strcasecmp(str1, str2); }
inline int strncmp(const char_t* str1, const char_t* str2, int len) { return ::strncmp(str1, str2, len); }
inline int strncasecmp(const char_t* str1, const char_t* str2, int len) { return ::strncasecmp(str1, str2, len); }
inline size_t strlen(const char_t* str) { return ::strlen(str); }
inline void err_vprintf(const char_t* format, va_list vl) { ::vfprintf(stderr, format, vl); ::fputc('\n', stderr); }
inline pal::string_t to_palstring(const std::string& str) { return str; }

View file

@ -12,15 +12,18 @@ bool coreclr_exists_in_dir(const pal::string_t& candidate)
return pal::file_exists(test);
}
bool ends_with(const pal::string_t& value, const pal::string_t& suffix)
bool ends_with(const pal::string_t& value, const pal::string_t& suffix, bool match_case)
{
return suffix.length() <= value.length() &&
(0 == value.compare(value.length() - suffix.length(), suffix.length(), suffix));
auto cmp = match_case ? pal::strcmp : pal::strcasecmp;
return (value.size() >= suffix.size()) &&
cmp(value.c_str() + value.size() - suffix.size(), suffix.c_str()) == 0;
}
bool starts_with(const pal::string_t& value, const pal::string_t& prefix)
bool starts_with(const pal::string_t& value, const pal::string_t& prefix, bool match_case)
{
return value.find(prefix.c_str(), 0, prefix.length()) == 0;
auto cmp = match_case ? pal::strncmp : pal::strncasecmp;
return (value.size() >= prefix.size()) &&
cmp(value.c_str(), prefix.c_str(), prefix.size()) == 0;
}
void append_path(pal::string_t* path1, const pal::char_t* path2)
@ -43,10 +46,10 @@ pal::string_t get_executable(const pal::string_t& filename)
{
pal::string_t result(filename);
if (ends_with(result, _X(".exe")))
if (ends_with(result, _X(".exe"), false))
{
// We need to strip off the old extension
result.erase(result.length() - 4);
result.erase(result.size() - 4);
}
return result;

View file

@ -6,8 +6,8 @@
#include "pal.h"
bool ends_with(const pal::string_t& value, const pal::string_t& suffix);
bool starts_with(const pal::string_t& value, const pal::string_t& prefix);
bool ends_with(const pal::string_t& value, const pal::string_t& suffix, bool match_case);
bool starts_with(const pal::string_t& value, const pal::string_t& prefix, bool match_case);
pal::string_t get_executable(const pal::string_t& filename);
pal::string_t get_directory(const pal::string_t& path);
pal::string_t get_filename(const pal::string_t& path);