summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2007-02-26 16:56:13 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2007-02-26 16:56:13 (GMT)
commit90974ea1d6310a8a2f8bfc2febaab66125992783 (patch)
tree0152aa0b5c1919cbc1e0d7b84b1b8159acb77aec /Source/cmLocalGenerator.cxx
parent4d5321f8916869e9c806cd8d58c4ede6d7a45766 (diff)
downloadCMake-90974ea1d6310a8a2f8bfc2febaab66125992783.zip
CMake-90974ea1d6310a8a2f8bfc2febaab66125992783.tar.gz
CMake-90974ea1d6310a8a2f8bfc2febaab66125992783.tar.bz2
ENH: go back to \ escapes for qnx
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx30
1 files changed, 22 insertions, 8 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 834fe10..953a4f4 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2066,6 +2066,21 @@ std::string cmLocalGenerator::Convert(const char* source,
}
if( output == SHELL)
{
+ // for shell commands if force unix is on, but this->WindowsShell
+ // is true, then turn off force unix paths for the output path
+ // so that the path is windows style and will work with windows
+ // cmd.exe.
+ bool forceOn = cmSystemTools::GetForceUnixPaths();
+ if(forceOn && this->WindowsShell)
+ {
+ cmSystemTools::SetForceUnixPaths(false);
+ }
+ result = cmSystemTools::ConvertToOutputPath(result.c_str());
+ if(forceOn && this->WindowsShell)
+ {
+ cmSystemTools::SetForceUnixPaths(true);
+ }
+
// For the MSYS shell convert drive letters to posix paths, so
// that c:/some/path becomes /c/some/path. This is needed to
// avoid problems with the shell path translation.
@@ -2077,20 +2092,19 @@ std::string cmLocalGenerator::Convert(const char* source,
result[0] = '/';
}
}
- if(this->WindowsShell)
+ // if this is unix then we need to escape () in the shell
+#if !defined(WIN32) || defined(CYGWIN)
+ forceOn = true;
+#endif
+ if(forceOn )
{
- std::string::size_type pos = 0;
- while((pos = result.find('/', pos)) != std::string::npos)
- {
- result[pos] = '\\';
- pos++;
- }
+ result = cmSystemTools::EscapeForUnixShell(result);
}
- result = this->EscapeForShell(result.c_str(), true, false);
}
return result;
}
+
//----------------------------------------------------------------------------
void
cmLocalGenerator