diff options
author | Brad King <brad.king@kitware.com> | 2010-08-27 14:46:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-08-27 14:50:02 (GMT) |
commit | 735a8c26d749d3a1e7a539386161ed98e22c9005 (patch) | |
tree | 1a7feb0f249221791f48cfcfef0655ac9ade154c /Source/kwsys/SystemTools.cxx | |
parent | 3bf1869c93daf131e8040e88f20986cf01bb9779 (diff) | |
download | CMake-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.cxx | 19 |
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]; |