[cmake-commits] hoffman committed cmLocalGenerator.cxx 1.176 1.177

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Feb 22 15:33:51 EST 2007


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv1039

Modified Files:
	cmLocalGenerator.cxx 
Log Message:
ENH: add new escape stuff


Index: cmLocalGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalGenerator.cxx,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -d -r1.176 -r1.177
--- cmLocalGenerator.cxx	22 Feb 2007 02:24:17 -0000	1.176
+++ cmLocalGenerator.cxx	22 Feb 2007 20:33:49 -0000	1.177
@@ -1014,20 +1014,16 @@
 std::string 
 cmLocalGenerator::ConvertToOutputForExisting(const char* p)
 {
-  std::string ret = this->Convert(p, START_OUTPUT, SHELL, true);
-  // if there are spaces in the path, then get the short path version
-  // if there is one
-  if(ret.find(' ') != std::string::npos)
+  std::string ret = p;
+  if(this->WindowsShell && ret.find(' ') != ret.npos 
+     && cmSystemTools::FileExists(p))
     {
-    if(cmSystemTools::FileExists(p))
+    if(cmSystemTools::GetShortPath(p, ret))
       {
-      if(!cmSystemTools::GetShortPath(ret.c_str(), ret))
-        {
-        ret = this->Convert(p,START_OUTPUT,SHELL,true);
-        }
+      return  this->Convert(ret.c_str(), NONE, SHELL, true);
       }
     }
-  return ret;
+  return this->Convert(p, START_OUTPUT, SHELL, true);
 }
 
 const char* cmLocalGenerator::GetIncludeFlags(const char* lang)
@@ -2062,21 +2058,6 @@
     }
   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.
@@ -2088,14 +2069,16 @@
         result[0] = '/';
         }
       }
-    // if this is unix then we need to escape () in the shell
-#if !defined(WIN32) || defined(CYGWIN)
-    forceOn = true;
-#endif
-    if(forceOn )
+    if(this->WindowsShell)
       {
-      result = cmSystemTools::EscapeForUnixShell(result);
+      std::string::size_type pos = 0;
+      while((pos = result.find('/', pos)) != std::string::npos)
+        {
+        result[pos] = '\\';
+        pos++;
+        }
       }
+    result = this->EscapeForShell(result.c_str(), true, false);
     }
   return result;
 }



More information about the Cmake-commits mailing list