summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemTools.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2010-08-27 14:46:35 (GMT)
committerBrad King <brad.king@kitware.com>2010-08-27 14:50:02 (GMT)
commit735a8c26d749d3a1e7a539386161ed98e22c9005 (patch)
tree1a7feb0f249221791f48cfcfef0655ac9ade154c /Source/kwsys/SystemTools.cxx
parent3bf1869c93daf131e8040e88f20986cf01bb9779 (diff)
downloadCMake-735a8c26d749d3a1e7a539386161ed98e22c9005.zip
CMake-735a8c26d749d3a1e7a539386161ed98e22c9005.tar.gz
CMake-735a8c26d749d3a1e7a539386161ed98e22c9005.tar.bz2
KWSys: Use SplitPath in GetActualCaseForPath
Avoid using the old SplitString method in favor of the more robust SplitPath method.
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r--Source/kwsys/SystemTools.cxx19
1 files changed, 12 insertions, 7 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 5002a06..8aa99eb 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -3063,30 +3063,35 @@ kwsys_stl::string SystemTools::RelativePath(const char* local, const char* remot
static int GetCasePathName(const kwsys_stl::string & pathIn,
kwsys_stl::string & casePath)
{
- kwsys_stl::vector<kwsys::String> path_components =
- SystemTools::SplitString(pathIn.c_str(), '/', true);
- if(path_components.empty())
+ kwsys_stl::vector<kwsys_stl::string> path_components;
+ SystemTools::SplitPath(pathIn.c_str(), path_components);
+ if(path_components[0].empty()) // First component always exists.
{
+ // Relative paths cannot be converted.
casePath = "";
return 0;
}
+
+ // Start with root component.
kwsys_stl::vector<kwsys_stl::string>::size_type idx = 0;
- // assume always absolute path, so just take first
casePath = path_components[idx++];
+ const char* sep = "";
+
// If network path, fill casePath with server/share so FindFirstFile
// will work after that. Maybe someday call other APIs to get
// actual case of servers and shares.
- if(path_components.size() > 2 && pathIn.size() >= 2 &&
- pathIn[0] == '/' && pathIn[1] == '/')
+ if(path_components.size() > 2 && path_components[0] == "//")
{
casePath += path_components[idx++];
casePath += "/";
casePath += path_components[idx++];
+ sep = "/";
}
for(; idx < path_components.size(); idx++)
{
- casePath += "/";
+ casePath += sep;
+ sep = "/";
kwsys_stl::string test_str = casePath;
test_str += path_components[idx];