diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-07-24 15:27:07 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-07-24 15:27:07 (GMT) |
commit | 3b743880503248235f319bd3e59e534ea26383f6 (patch) | |
tree | b42684228178a0c8716b032e24b3906a2f17e065 /Source/kwsys/SystemTools.cxx | |
parent | 53549a6426368f0ff482e7d00ff904bfa0e36ea1 (diff) | |
download | CMake-3b743880503248235f319bd3e59e534ea26383f6.zip CMake-3b743880503248235f319bd3e59e534ea26383f6.tar.gz CMake-3b743880503248235f319bd3e59e534ea26383f6.tar.bz2 |
ENH: allow for source tree to be in root directory
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index e4efe39..172ce49 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -1339,13 +1339,17 @@ void SystemTools::ConvertToUnixSlashes(kwsys_stl::string& path) path.replace(0,1,homeEnv); } } - + // remove trailing slash if the path is more than + // a single / pathCString = path.c_str(); - if (*(pathCString+(path.size()-1)) == '/') + if(path.size() > 1 && *(pathCString+(path.size()-1)) == '/') { - path = path.substr(0, path.size()-1); + // if it is c:/ then do not remove the trailing slash + if(!((path.size() == 3 && pathCString[1] == ':'))) + { + path = path.substr(0, path.size()-1); + } } - } } @@ -2503,7 +2507,6 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_path, // Split the input path components. kwsys_stl::vector<kwsys_stl::string> path_components; SystemTools::SplitPath(in_path, path_components); - // If the input path is relative, start with a base path. if(path_components[0].length() == 0) { @@ -2891,7 +2894,16 @@ kwsys_stl::string SystemTools::GetFilenamePath(const kwsys_stl::string& filename kwsys_stl::string::size_type slash_pos = fn.rfind("/"); if(slash_pos != kwsys_stl::string::npos) { - return fn.substr(0, slash_pos); + kwsys_stl::string ret = fn.substr(0, slash_pos); + if(ret.size() == 2 && ret[1] == ':') + { + return ret + '/'; + } + if(ret.size() == 0) + { + return "/"; + } + return ret; } else { |