From bb7eefe4dd4b1385b830ac0f784af883a3d91985 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 7 Jul 2015 14:31:46 -0400 Subject: [PATCH] cmOutputConverter: Adopt EscapeWindowsShellArgument method Move it out of cmSystemTools and into cmOutputConverter. --- Source/cmOutputConverter.cxx | 20 ++++++++++++++++++++ Source/cmOutputConverter.h | 5 +++++ Source/cmSystemTools.cxx | 19 ------------------- Source/cmSystemTools.h | 5 ----- Source/cmVisualStudioGeneratorOptions.cxx | 3 ++- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index b0a30a1ca..161a5b493 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -411,6 +411,26 @@ std::string cmOutputConverter::EscapeForCMake(const std::string& str) return result; } +//---------------------------------------------------------------------------- +std::string +cmOutputConverter::EscapeWindowsShellArgument(const char* arg, int shell_flags) +{ + char local_buffer[1024]; + char* buffer = local_buffer; + int size = cmsysSystem_Shell_GetArgumentSizeForWindows(arg, shell_flags); + if(size > 1024) + { + buffer = new char[size]; + } + cmsysSystem_Shell_GetArgumentForWindows(arg, buffer, shell_flags); + std::string result(buffer); + if(buffer != local_buffer) + { + delete [] buffer; + } + return result; +} + //---------------------------------------------------------------------------- cmOutputConverter::FortranFormat cmOutputConverter::GetFortranFormat(const char* value) diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index 482a64b1c..8739b979f 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -71,6 +71,11 @@ public: static std::string EscapeForCMake(const std::string& str); + /** Compute an escaped version of the given argument for use in a + windows shell. */ + static std::string EscapeWindowsShellArgument(const char* arg, + int shell_flags); + enum FortranFormat { FortranFormatNone, diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 7230a64f9..2543e6841 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -556,25 +556,6 @@ void cmSystemTools::ParseUnixCommandLine(const char* command, argv.Store(args); } -std::string cmSystemTools::EscapeWindowsShellArgument(const char* arg, - int shell_flags) -{ - char local_buffer[1024]; - char* buffer = local_buffer; - int size = cmsysSystem_Shell_GetArgumentSizeForWindows(arg, shell_flags); - if(size > 1024) - { - buffer = new char[size]; - } - cmsysSystem_Shell_GetArgumentForWindows(arg, buffer, shell_flags); - std::string result(buffer); - if(buffer != local_buffer) - { - delete [] buffer; - } - return result; -} - std::vector cmSystemTools::ParseArguments(const char* command) { std::vector args; diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 8ebb4e325..fb58307d0 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -256,11 +256,6 @@ public: static void ParseUnixCommandLine(const char* command, std::vector& args); - /** Compute an escaped version of the given argument for use in a - windows shell. See kwsys/System.h.in for details. */ - static std::string EscapeWindowsShellArgument(const char* arg, - int shell_flags); - static void EnableMessages() { s_DisableMessages = false; } static void DisableMessages() { s_DisableMessages = true; } static void DisableRunCommandOutput() {s_DisableRunCommandOutput = true; } diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index 6512fc25e..c028ab716 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -1,4 +1,5 @@ #include "cmVisualStudioGeneratorOptions.h" +#include "cmOutputConverter.h" #include "cmSystemTools.h" #include #include "cmVisualStudio10TargetGenerator.h" @@ -246,7 +247,7 @@ void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag) // This option is not known. Store it in the output flags. this->FlagString += " "; this->FlagString += - cmSystemTools::EscapeWindowsShellArgument( + cmOutputConverter::EscapeWindowsShellArgument( flag, cmsysSystem_Shell_Flag_AllowMakeVariables | cmsysSystem_Shell_Flag_VSIDE);