diff options
Diffstat (limited to 'Source/cmSeparateArgumentsCommand.cxx')
-rw-r--r-- | Source/cmSeparateArgumentsCommand.cxx | 87 |
1 files changed, 39 insertions, 48 deletions
diff --git a/Source/cmSeparateArgumentsCommand.cxx b/Source/cmSeparateArgumentsCommand.cxx index 8e6c311..3438321 100644 --- a/Source/cmSeparateArgumentsCommand.cxx +++ b/Source/cmSeparateArgumentsCommand.cxx @@ -12,98 +12,89 @@ #include "cmSeparateArgumentsCommand.h" // cmSeparateArgumentsCommand -bool cmSeparateArgumentsCommand -::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) +bool cmSeparateArgumentsCommand::InitialPass( + std::vector<std::string> const& args, cmExecutionStatus&) { - if(args.empty()) - { + if (args.empty()) { this->SetError("must be given at least one argument."); return false; - } + } std::string var; std::string command; - enum Mode { ModeOld, ModeUnix, ModeWindows }; + enum Mode + { + ModeOld, + ModeUnix, + ModeWindows + }; Mode mode = ModeOld; - enum Doing { DoingNone, DoingVariable, DoingMode, DoingCommand }; + enum Doing + { + DoingNone, + DoingVariable, + DoingMode, + DoingCommand + }; Doing doing = DoingVariable; - for(unsigned int i=0; i < args.size(); ++i) - { - if(doing == DoingVariable) - { + for (unsigned int i = 0; i < args.size(); ++i) { + if (doing == DoingVariable) { var = args[i]; doing = DoingMode; - } - else if(doing == DoingMode && args[i] == "UNIX_COMMAND") - { + } else if (doing == DoingMode && args[i] == "UNIX_COMMAND") { mode = ModeUnix; doing = DoingCommand; - } - else if(doing == DoingMode && args[i] == "WINDOWS_COMMAND") - { + } else if (doing == DoingMode && args[i] == "WINDOWS_COMMAND") { mode = ModeWindows; doing = DoingCommand; - } - else if(doing == DoingCommand) - { + } else if (doing == DoingCommand) { command = args[i]; doing = DoingNone; - } - else - { + } else { std::ostringstream e; e << "given unknown argument " << args[i]; this->SetError(e.str()); return false; - } } + } - if(mode == ModeOld) - { + if (mode == ModeOld) { // Original space-replacement version of command. - if(const char* def = this->Makefile->GetDefinition(var)) - { + if (const char* def = this->Makefile->GetDefinition(var)) { std::string value = def; cmSystemTools::ReplaceString(value, " ", ";"); this->Makefile->AddDefinition(var, value.c_str()); - } } - else - { + } else { // Parse the command line. std::vector<std::string> vec; - if(mode == ModeUnix) - { + if (mode == ModeUnix) { cmSystemTools::ParseUnixCommandLine(command.c_str(), vec); - } - else // if(mode == ModeWindows) - { + } else // if(mode == ModeWindows) + { cmSystemTools::ParseWindowsCommandLine(command.c_str(), vec); - } + } // Construct the result list value. std::string value; const char* sep = ""; - for(std::vector<std::string>::const_iterator vi = vec.begin(); - vi != vec.end(); ++vi) - { + for (std::vector<std::string>::const_iterator vi = vec.begin(); + vi != vec.end(); ++vi) { // Separate from the previous argument. value += sep; sep = ";"; // Preserve semicolons. - for(std::string::const_iterator si = vi->begin(); - si != vi->end(); ++si) - { - if(*si == ';') - { + for (std::string::const_iterator si = vi->begin(); si != vi->end(); + ++si) { + if (*si == ';') { value += '\\'; - } - value += *si; } + value += *si; } - this->Makefile->AddDefinition(var, value.c_str()); } + this->Makefile->AddDefinition(var, value.c_str()); + } return true; } |