summaryrefslogtreecommitdiffstats
path: root/Source/cmFileCommand.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-04-05 11:46:32 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-04-05 11:46:32 (GMT)
commit24f08322be0193b9e2deb83588fee341deecee48 (patch)
tree6827d804506e6b0fceb3d499c1db8719c2196451 /Source/cmFileCommand.cxx
parent13bc9efe2e50629f4baf183bceec4bc193098ad8 (diff)
downloadCMake-24f08322be0193b9e2deb83588fee341deecee48.zip
CMake-24f08322be0193b9e2deb83588fee341deecee48.tar.gz
CMake-24f08322be0193b9e2deb83588fee341deecee48.tar.bz2
ENH: add path conversion stuff and rm SYSTEM_PATH
Diffstat (limited to 'Source/cmFileCommand.cxx')
-rw-r--r--Source/cmFileCommand.cxx41
1 files changed, 34 insertions, 7 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 416ac66..3c9d1ab 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -70,9 +70,13 @@ bool cmFileCommand::InitialPass(std::vector<std::string> const& args)
{
return this->HandleRelativePathCommand(args);
}
- else if ( subCommand == "SYSTEM_PATH" )
+ else if ( subCommand == "TO_CMAKE_PATH" )
{
- return this->HandleSystemPathCommand(args);
+ return this->HandleCMakePathCommand(args, false);
+ }
+ else if ( subCommand == "TO_NATIVE_PATH" )
+ {
+ return this->HandleCMakePathCommand(args, true);
}
std::string e = "does not recognize sub-command "+subCommand;
@@ -971,8 +975,9 @@ bool cmFileCommand::HandleRemove(std::vector<std::string> const& args,
}
//----------------------------------------------------------------------------
-bool cmFileCommand::HandleSystemPathCommand(std::vector<std::string>
- const& args)
+bool cmFileCommand::HandleCMakePathCommand(std::vector<std::string>
+ const& args,
+ bool nativePath)
{
std::vector<std::string>::const_iterator i = args.begin();
if(args.size() != 3)
@@ -982,17 +987,39 @@ bool cmFileCommand::HandleSystemPathCommand(std::vector<std::string>
return false;
}
i++; // Get rid of subcommand
- std::vector<std::string> path;
- cmSystemTools::GetPath(path, i->c_str());
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ char pathSep = ';';
+#else
+ char pathSep = ':';
+#endif
+ std::vector<cmsys::String> path = cmSystemTools::SplitString(i->c_str(),
+ pathSep);
i++;
const char* var = i->c_str();
std::string value;
- for(std::vector<std::string>::iterator j = path.begin();
+ for(std::vector<cmsys::String>::iterator j = path.begin();
j != path.end(); ++j)
{
+ if(!nativePath)
+ {
+ cmSystemTools::ConvertToUnixSlashes(*j);
+ }
+ else
+ {
+ *j = cmSystemTools::ConvertToOutputPath(j->c_str());
+ // remove double quotes in the path
+ cmsys::String& s = *j;
+
+ if(s.size() > 1 && s[0] == '\"' && s[s.size()-1] == '\"')
+ {
+ s = s.substr(1,s.size()-2);
+ }
+ }
value += *j;
value += ";";
}
this->Makefile->AddDefinition(var, value.c_str());
return true;
}
+
+