Browse Source

ENH: go back to \ escapes for qnx

Bill Hoffman 18 years ago
parent
commit
90974ea1d6
1 changed files with 22 additions and 8 deletions
  1. 22 8
      Source/cmLocalGenerator.cxx

+ 22 - 8
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