From 5ac8ecd9d2d94277c1758791cf863be699ce2ec8 Mon Sep 17 00:00:00 2001 From: John Biddiscombe Date: Sat, 1 Sep 2001 16:13:56 -0400 Subject: [PATCH] ENH: Windows and Unix slash conversions return a char*, clean function seperated from Convert function --- Source/cmSystemTools.cxx | 18 +++++++++++++----- Source/cmSystemTools.h | 11 ++++++++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 4a2948b14..4665a482e 100644 --- a/Source/cmSystemTools.cxx +++ b/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& arguments) diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 08b6ee164..f6b435684 100644 --- a/Source/cmSystemTools.h +++ b/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);