Browse Source

FIX: ConvertToOutputPath puts "" around path. Not compatible with GUI use.

Sebastien Barre 23 years ago
parent
commit
b5cf03b5e7
1 changed files with 29 additions and 4 deletions
  1. 29 4
      Source/MFCDialog/CMakeSetupDialog.cpp

+ 29 - 4
Source/MFCDialog/CMakeSetupDialog.cpp

@@ -19,6 +19,31 @@
 static char THIS_FILE[] = __FILE__;
 #endif
 
+// Convert to Win32 path (slashes). But it's not in cmSystemTools, so 
+// the 2 billions people that are using the CMake API can not mistake
+// it with cmMakeMyCoffeeButNoSugarPlease().
+
+std::string ConvertToWindowsPath(const char* path)
+{
+  // Convert to output path.
+  // Remove the "" around it (if any) since it's an output path for
+  // the shell. If another shell-oriented feature is not designed 
+  // for a GUI use, then we are in trouble.
+
+  std::string s = cmSystemTools::ConvertToOutputPath(path);
+  std::string::iterator i = s.begin();
+  if (*i == '\"')
+    {
+    s.erase(i, i + 1);
+    }
+  i = s.begin() + s.length() - 1;
+  if (*i == '\"')
+    {
+    s.erase(i, i + 1);
+    }
+  return s;
+}
+
 /////////////////////////////////////////////////////////////////////////////
 // CAboutDlg dialog used for App About
 
@@ -622,7 +647,7 @@ void CMakeSetupDialog::OnChangeWhereBuild()
       cache->LoadCache(path.c_str()) &&
       cache->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
     {
-    path = cmSystemTools::ConvertToOutputPath(
+    path = ConvertToWindowsPath(
       cache->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
     this->m_WhereSource = path.c_str();
     this->m_WhereSourceControl.SetWindowText(this->m_WhereSource);
@@ -1219,16 +1244,16 @@ void CMakeSetupDialog::ChangeDirectoriesFromFile(const char* buffer)
       cache->LoadCache(path.c_str()) &&
       cache->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
     {
-    path = cmSystemTools::ConvertToOutputPath(path.c_str());
+    path = ConvertToWindowsPath(path.c_str());
     this->m_WhereBuild = path.c_str();
 
-    path = cmSystemTools::ConvertToOutputPath(
+    path = ConvertToWindowsPath(
       cache->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
     this->m_WhereSource = path.c_str();
     }
   else
     {
-    path = cmSystemTools::ConvertToOutputPath(path.c_str());
+    path = ConvertToWindowsPath(path.c_str());
     this->m_WhereSource = this->m_WhereBuild = path.c_str();
     }
 }