Explorar el Código

ENH: Windows and Unix slash conversions return a char*, clean function
seperated from Convert function

John Biddiscombe hace 24 años
padre
commit
5ac8ecd9d2
Se han modificado 2 ficheros con 21 adiciones y 8 borrados
  1. 13 5
      Source/cmSystemTools.cxx
  2. 8 3
      Source/cmSystemTools.h

+ 13 - 5
Source/cmSystemTools.cxx

@@ -403,7 +403,7 @@ std::string cmSystemTools::Capitalized(const std::string& s)
 
 
 // convert windows slashes to unix slashes \ with /
-void cmSystemTools::ConvertToUnixSlashes(std::string& path)
+const char *cmSystemTools::ConvertToUnixSlashes(std::string& path)
 {
   std::string::size_type pos = 0;
   while((pos = path.find('\\', pos)) != std::string::npos)
@@ -416,10 +416,11 @@ void cmSystemTools::ConvertToUnixSlashes(std::string& path)
     {
     path = path.substr(0, path.size()-1);
     }
+  return path.c_str();
 }
 
-// convert windows slashes to unix slashes \ with /
-void cmSystemTools::CleanUpWindowsSlashes(std::string& path)
+// convert windows slashes to unix slashes 
+const char *cmSystemTools::ConvertToWindowsSlashes(std::string& path)
 {
   std::string::size_type pos = 0;
   while((pos = path.find('/', pos)) != std::string::npos)
@@ -432,15 +433,22 @@ void cmSystemTools::CleanUpWindowsSlashes(std::string& path)
     {
     path = path.substr(0, path.size()-1);
     }
-  // remove any duplicate // slashes
+  return path.c_str();
+}
+
+// convert Unix slashes / to Windows slashes \ and cleanup double \\
+const char *cmSystemTools::ConvertToWindowsSlashesAndCleanUp(std::string& path)
+{
+  cmSystemTools::ConvertToWindowsSlashes(path);
+  std::string::size_type pos = 0;
   pos = 0;
   while((pos = path.find("\\\\", pos)) != std::string::npos)
     {
     path.erase(pos, 1);
     }
+  return path.c_str();
 }
 
-
 bool cmSystemTools::ParseFunction(std::ifstream& fin,
                                   std::string& name,
                                   std::vector<std::string>& arguments)

+ 8 - 3
Source/cmSystemTools.h

@@ -98,13 +98,18 @@ public:
   /**
    * Replace Windows file system slashes with Unix-style slashes.
    */
-  static void ConvertToUnixSlashes(std::string& path);
+  static const char *ConvertToUnixSlashes(std::string& path);
+
+  /**
+   * Replace Unix file system slashes with Windows-style slashes
+   */
+  static const char *ConvertToWindowsSlashes(std::string& path);
 
   /**
    * Replace Unix file system slashes with Windows-style slashes and
-   * remove any duplicate slashes to clean the path.
+   * remove any duplicate \\ slashes to clean the path.
    */
-  static void CleanUpWindowsSlashes(std::string& path);
+  static const char *ConvertToWindowsSlashesAndCleanUp(std::string& path);
 
   ///! Return true if a file exists in the current directory.
   static bool FileExists(const char* filename);