summaryrefslogtreecommitdiffstats
path: root/src/includes_normalize-win32.cc
diff options
context:
space:
mode:
authorTakuto Ikuta <tikuta@chromium.org>2017-05-09 04:34:31 (GMT)
committerTakuto Ikuta <tikuta@chromium.org>2017-05-09 05:20:03 (GMT)
commit75b338506197921f14e3ce0eb9a04d2787ae1750 (patch)
tree812229300ad3518d471e16c3a05f8398eaa67aeb /src/includes_normalize-win32.cc
parent3b320023276f98b978054c14c65d3888b989ff4a (diff)
downloadNinja-75b338506197921f14e3ce0eb9a04d2787ae1750.zip
Ninja-75b338506197921f14e3ce0eb9a04d2787ae1750.tar.gz
Ninja-75b338506197921f14e3ce0eb9a04d2787ae1750.tar.bz2
Fix for review
Diffstat (limited to 'src/includes_normalize-win32.cc')
-rw-r--r--src/includes_normalize-win32.cc27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/includes_normalize-win32.cc b/src/includes_normalize-win32.cc
index b60ad70..c72783f 100644
--- a/src/includes_normalize-win32.cc
+++ b/src/includes_normalize-win32.cc
@@ -38,11 +38,11 @@ bool SameDriveFast(StringPiece a, StringPiece b) {
return false;
}
- if (!isalpha(a[0]) || !isalpha(b[0])) {
+ if (!islatinalpha(a[0]) || !islatinalpha(b[0])) {
return false;
}
- if (tolower(a[0]) != tolower(b[0])) {
+ if (ToLowerASCII(a[0]) != ToLowerASCII(b[0])) {
return false;
}
@@ -50,17 +50,11 @@ bool SameDriveFast(StringPiece a, StringPiece b) {
return false;
}
- if (!IsPathSeparator(a[2]) ||
- !IsPathSeparator(b[2])) {
- return false;
- }
-
- return true;
+ return IsPathSeparator(a[2]) && IsPathSeparator(b[2]);
}
// Return true if paths a and b are on the same Windows drive.
bool SameDrive(StringPiece a, StringPiece b) {
- // Fast check.
if (SameDriveFast(a, b)) {
return true;
}
@@ -76,9 +70,11 @@ bool SameDrive(StringPiece a, StringPiece b) {
return _stricmp(a_drive, b_drive) == 0;
}
-bool IsAbsPath(StringPiece s) {
+// Check path |s| is FullPath style returned by GetFullPathName.
+// This ignores difference of path separator.
+bool IsFullPathName(StringPiece s) {
if (s.size() < 3 ||
- !isalpha(s[0]) ||
+ !islatinalpha(s[0]) ||
s[1] != ':' ||
!IsPathSeparator(s[2])) {
return false;
@@ -110,11 +106,11 @@ bool IsAbsPath(StringPiece s) {
IncludesNormalize::IncludesNormalize(const string& relative_to) {
relative_to_ = AbsPath(relative_to);
- splitted_relative_to_ = SplitStringPiece(relative_to_, '/');
+ split_relative_to_ = SplitStringPiece(relative_to_, '/');
}
string IncludesNormalize::AbsPath(StringPiece s) {
- if (IsAbsPath(s)) {
+ if (IsFullPathName(s)) {
string result = s.AsString();
for (size_t i = 0; i < result.size(); ++i) {
if (result[i] == '\\') {
@@ -132,7 +128,8 @@ string IncludesNormalize::AbsPath(StringPiece s) {
return result;
}
-string IncludesNormalize::Relativize(StringPiece path, const vector<StringPiece>& start_list) {
+string IncludesNormalize::Relativize(
+ StringPiece path, const vector<StringPiece>& start_list) {
string abs_path = AbsPath(path);
vector<StringPiece> path_list = SplitStringPiece(abs_path, '/');
int i;
@@ -172,6 +169,6 @@ bool IncludesNormalize::Normalize(const string& input,
*result = partially_fixed.AsString();
return true;
}
- *result = Relativize(partially_fixed, splitted_relative_to_);
+ *result = Relativize(partially_fixed, split_relative_to_);
return true;
}