From de3f570cfe0bfdd564913a1431dc95fd17ff44eb Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Sun, 12 Aug 2012 16:27:58 -0700 Subject: includes_normalize: also lowercase cross-drive includes It seems to me inconsistent to normalize one but not the other. --- src/includes_normalize-win32.cc | 11 +++++------ src/includes_normalize.h | 2 +- src/includes_normalize_test.cc | 6 +++--- 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", -- cgit v0.12