From b10c5cbb878af541f4ffa35a9e287c31743c6e97 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 24 Apr 2012 16:24:17 -0400 Subject: CTest: Simplify environment save/restore Replace use of AppendEnv/RestoreEnv pairs with instances of SaveRestoreEnvironment. Simplify the signature of AppendEnv and use it in place of similar loops elsewhere. Move the RestoreEnv implementation inside the SaveRestoreEnvironment destructor which is the only place left that calls it. --- Source/cmSystemTools.cxx | 49 ++++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 35 deletions(-) (limited to 'Source/cmSystemTools.cxx') diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 1376a485bb..548fa7458f 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1630,33 +1630,28 @@ std::vector cmSystemTools::GetEnvironmentVariables() } //---------------------------------------------------------------------- -std::vector cmSystemTools::AppendEnv( - std::vector* env) +void cmSystemTools::AppendEnv(std::vector const& env) { - std::vector origEnv = GetEnvironmentVariables(); - - if (env && env->size()>0) + for(std::vector::const_iterator eit = env.begin(); + eit != env.end(); ++eit) { - std::vector::const_iterator eit; - - for (eit = env->begin(); eit!= env->end(); ++eit) - { - PutEnv(eit->c_str()); - } + cmSystemTools::PutEnv(eit->c_str()); } - - return origEnv; } //---------------------------------------------------------------------- -void cmSystemTools::RestoreEnv(const std::vector& env) +cmSystemTools::SaveRestoreEnvironment::SaveRestoreEnvironment() { - std::vector::const_iterator eit; + this->Env = cmSystemTools::GetEnvironmentVariables(); +} +//---------------------------------------------------------------------- +cmSystemTools::SaveRestoreEnvironment::~SaveRestoreEnvironment() +{ // First clear everything in the current environment: - // std::vector currentEnv = GetEnvironmentVariables(); - for (eit = currentEnv.begin(); eit!= currentEnv.end(); ++eit) + for(std::vector::const_iterator + eit = currentEnv.begin(); eit != currentEnv.end(); ++eit) { std::string var(*eit); @@ -1666,27 +1661,11 @@ void cmSystemTools::RestoreEnv(const std::vector& env) var = var.substr(0, pos); } - UnsetEnv(var.c_str()); + cmSystemTools::UnsetEnv(var.c_str()); } // Then put back each entry from the original environment: - // - for (eit = env.begin(); eit!= env.end(); ++eit) - { - PutEnv(eit->c_str()); - } -} - -//---------------------------------------------------------------------- -cmSystemTools::SaveRestoreEnvironment::SaveRestoreEnvironment() -{ - this->Env = cmSystemTools::GetEnvironmentVariables(); -} - -//---------------------------------------------------------------------- -cmSystemTools::SaveRestoreEnvironment::~SaveRestoreEnvironment() -{ - cmSystemTools::RestoreEnv(this->Env); + cmSystemTools::AppendEnv(this->Env); } #endif -- cgit v1.2.1