summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2012-08-12 23:27:58 (GMT)
committerEvan Martin <martine@danga.com>2012-08-12 23:27:58 (GMT)
commitde3f570cfe0bfdd564913a1431dc95fd17ff44eb (patch)
tree0504e1ba7275aa7c6fc5a62c5d3d7d6fde105704 /src
parent0af67f1babe08c7e00ba194ccb47c4a0c60fa52a (diff)
downloadNinja-de3f570cfe0bfdd564913a1431dc95fd17ff44eb.zip
Ninja-de3f570cfe0bfdd564913a1431dc95fd17ff44eb.tar.gz
Ninja-de3f570cfe0bfdd564913a1431dc95fd17ff44eb.tar.bz2
includes_normalize: also lowercase cross-drive includes
It seems to me inconsistent to normalize one but not the other.
Diffstat (limited to 'src')
-rw-r--r--src/includes_normalize-win32.cc11
-rw-r--r--src/includes_normalize.h2
-rw-r--r--src/includes_normalize_test.cc6
3 files changed, 9 insertions, 10 deletions
diff --git a/src/includes_normalize-win32.cc b/src/includes_normalize-win32.cc
index cf398ae..134cfb8 100644
--- a/src/includes_normalize-win32.cc
+++ b/src/includes_normalize-win32.cc
@@ -91,18 +91,17 @@ string IncludesNormalize::Relativize(StringPiece path, const string& start) {
return Join(rel_list, '\\');
}
-string IncludesNormalize::Normalize(StringPiece input,
+string IncludesNormalize::Normalize(const string& input,
const char* relative_to) {
char copy[_MAX_PATH];
- size_t len = input.len_;
- strncpy(copy, input.str_, input.len_ + 1);
+ size_t len = input.size();
+ strncpy(copy, input.c_str(), input.size() + 1);
for (size_t j = 0; j < len; ++j)
if (copy[j] == '/')
copy[j] = '\\';
string err;
if (!CanonicalizePath(copy, &len, &err)) {
- Warning("couldn't canonicalize '%*s': %s\n", input.len_, input.str_,
- err.c_str());
+ Warning("couldn't canonicalize '%s: %s\n", input.c_str(), err.c_str());
}
string curdir;
if (!relative_to) {
@@ -111,6 +110,6 @@ string IncludesNormalize::Normalize(StringPiece input,
}
StringPiece partially_fixed(copy, len);
if (!SameDrive(partially_fixed, relative_to))
- return partially_fixed.AsString();
+ return ToLower(partially_fixed.AsString());
return ToLower(Relativize(partially_fixed, relative_to));
}
diff --git a/src/includes_normalize.h b/src/includes_normalize.h
index 458613a..43527af 100644
--- a/src/includes_normalize.h
+++ b/src/includes_normalize.h
@@ -31,5 +31,5 @@ struct IncludesNormalize {
/// Normalize by fixing slashes style, fixing redundant .. and . and makes the
/// path relative to |relative_to|. Case is normalized to lowercase on
/// Windows too.
- static string Normalize(StringPiece input, const char* relative_to);
+ static string Normalize(const string& input, const char* relative_to);
};
diff --git a/src/includes_normalize_test.cc b/src/includes_normalize_test.cc
index 97f7174..77b5b3b 100644
--- a/src/includes_normalize_test.cc
+++ b/src/includes_normalize_test.cc
@@ -86,11 +86,11 @@ TEST(IncludesNormalize, DifferentDrive) {
IncludesNormalize::Normalize("p:\\vs08\\stuff.h", "p:\\vs08"));
EXPECT_EQ("stuff.h",
IncludesNormalize::Normalize("P:\\vs08\\stuff.h", "p:\\vs08"));
- EXPECT_EQ("P:\\vs08\\stuff.h",
+ EXPECT_EQ("p:\\vs08\\stuff.h",
IncludesNormalize::Normalize("P:\\vs08\\stuff.h", "c:\\vs08"));
- EXPECT_EQ("P:\\vs08\\stuff.h",
+ EXPECT_EQ("p:\\vs08\\stuff.h",
IncludesNormalize::Normalize("P:\\vs08\\stuff.h", "D:\\stuff/things"));
- EXPECT_EQ("P:\\vs08\\stuff.h",
+ EXPECT_EQ("p:\\vs08\\stuff.h",
IncludesNormalize::Normalize("P:/vs08\\stuff.h", "D:\\stuff/things"));
// TODO: this fails; fix it.
//EXPECT_EQ("P:\\wee\\stuff.h",