diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 05:42:26 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 05:42:26 +0000 |
| commit | 96c440fcaa72113e974b4bf467f708a64e0b0ac4 (patch) | |
| tree | ea75f9a8cd727bb431a83aecf827035e2c3030b7 /src/command_manager.cc | |
| parent | 8fedbbf07bdb972a82af2923cbe914439389c808 (diff) | |
CommandManager::execute can take an optional EnvVarMap argument which is used for shell evaluation
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index d348d976..fe9cc9ee 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -79,7 +79,8 @@ struct command_not_found : runtime_error }; void CommandManager::execute(const String& command_line, - const Context& context) + const Context& context, + const EnvVarMap& env_vars) { TokenList tokens = split(command_line); if (tokens.empty()) @@ -92,14 +93,15 @@ void CommandManager::execute(const String& command_line, it->second - it->first)); } - execute(params, context); + execute(params, context, env_vars); } static void shell_eval(std::vector<String>& params, const String& cmdline, - const Context& context) + const Context& context, + const EnvVarMap& env_vars) { - String output = ShellManager::instance().eval(cmdline, context, {}); + String output = ShellManager::instance().eval(cmdline, context, env_vars); TokenList tokens = split(output); for (auto it = tokens.begin(); it != tokens.end(); ++it) @@ -110,7 +112,8 @@ static void shell_eval(std::vector<String>& params, } void CommandManager::execute(const CommandParameters& params, - const Context& context) + const Context& context, + const EnvVarMap& env_vars) { if (params.empty()) return; @@ -132,7 +135,7 @@ void CommandManager::execute(const CommandParameters& params, { shell_eval(expanded_params, begin->substr(1, begin->length() - 2), - context); + context, env_vars); if (not expanded_params.empty()) { command_it = m_commands.find(expanded_params[0]); @@ -155,7 +158,7 @@ void CommandManager::execute(const CommandParameters& params, if (param->front() == '`' and param->back() == '`') shell_eval(expanded_params, param->substr(1, param->length() - 2), - context); + context, env_vars); else expanded_params.push_back(*param); } |
