diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 05:19:27 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 05:19:27 +0000 |
| commit | 8fedbbf07bdb972a82af2923cbe914439389c808 (patch) | |
| tree | c11267716602ee6982d948ef7241434b9f25a069 /src/shell_manager.cc | |
| parent | e57ddd3bab1445caaf001d80f117c878762adc69 (diff) | |
ShellManager::eval now takes an additional env_var map
Diffstat (limited to 'src/shell_manager.cc')
| -rw-r--r-- | src/shell_manager.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc index f750ab05..48688494 100644 --- a/src/shell_manager.cc +++ b/src/shell_manager.cc @@ -12,7 +12,8 @@ ShellManager::ShellManager() { } -String ShellManager::eval(const String& cmdline, const Context& context) +String ShellManager::eval(const String& cmdline, const Context& context, + const EnvVarMap& env_vars) { int write_pipe[2]; int read_pipe[2]; @@ -61,11 +62,17 @@ String ShellManager::eval(const String& cmdline, const Context& context) assert(false); assert(name.length() > 0); - auto env_var = m_env_vars.find(name); - if (env_var != m_env_vars.end()) + auto local_var = env_vars.find(name); + if (local_var != env_vars.end()) + setenv(("kak_" + name).c_str(), local_var->second.c_str(), 1); + else { - String value = env_var->second(context); - setenv(("kak_" + name).c_str(), value.c_str(), 1); + auto env_var = m_env_vars.find(name); + if (env_var != m_env_vars.end()) + { + String value = env_var->second(context); + setenv(("kak_" + name).c_str(), value.c_str(), 1); + } } ++it; |
