mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-29 04:09:35 +03:00
KWSys 2017-11-09 (40d7b1bb)
Code extracted from:
https://gitlab.kitware.com/utils/kwsys.git
at commit 40d7b1bba6abb1a2aea4c2d46a48968fb31a9d7d (master).
Upstream Shortlog
-----------------
Clinton Stimpson (1):
e9d2b696 SystemTools: Cache only existing path names in GetActualCaseForPath
This commit is contained in:
1 parent
dc059ae70b
commit
e8d0b4312e
1 file changed
+11
-8
+11
-8
@@ -27,6 +27,7 @@
|
||||
#include <iostream>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
// Work-around CMake dependency scanning limitation. This must
|
||||
@@ -3372,7 +3373,7 @@ std::string SystemTools::RelativePath(const std::string& local,
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
static std::string GetCasePathName(std::string const& pathIn)
|
||||
static std::pair<std::string, bool> GetCasePathName(std::string const& pathIn)
|
||||
{
|
||||
std::string casePath;
|
||||
std::vector<std::string> path_components;
|
||||
@@ -3381,7 +3382,7 @@ static std::string GetCasePathName(std::string const& pathIn)
|
||||
{
|
||||
// Relative paths cannot be converted.
|
||||
casePath = pathIn;
|
||||
return casePath;
|
||||
return std::make_pair(casePath, false);
|
||||
}
|
||||
|
||||
// Start with root component.
|
||||
@@ -3433,7 +3434,7 @@ static std::string GetCasePathName(std::string const& pathIn)
|
||||
|
||||
casePath += path_components[idx];
|
||||
}
|
||||
return casePath;
|
||||
return std::make_pair(casePath, converting);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3448,12 +3449,14 @@ std::string SystemTools::GetActualCaseForPath(const std::string& p)
|
||||
if (i != SystemTools::PathCaseMap->end()) {
|
||||
return i->second;
|
||||
}
|
||||
std::string casePath = GetCasePathName(p);
|
||||
if (casePath.size() > MAX_PATH) {
|
||||
return casePath;
|
||||
std::pair<std::string, bool> casePath = GetCasePathName(p);
|
||||
if (casePath.first.size() > MAX_PATH) {
|
||||
return casePath.first;
|
||||
}
|
||||
(*SystemTools::PathCaseMap)[p] = casePath;
|
||||
return casePath;
|
||||
if (casePath.second) {
|
||||
(*SystemTools::PathCaseMap)[p] = casePath.first;
|
||||
}
|
||||
return casePath.first;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user