diff options
Diffstat (limited to 'base/env_var.cc')
-rw-r--r-- | base/env_var.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/base/env_var.cc b/base/env_var.cc index 3075fda..8d32c02 100644 --- a/base/env_var.cc +++ b/base/env_var.cc @@ -19,8 +19,7 @@ namespace { -class EnvVarGetterImpl - : public base::EnvVarGetter { +class EnvVarGetterImpl : public base::EnvVarGetter { public: virtual bool GetEnv(const char* variable_name, std::string* result) { if (GetEnvImpl(variable_name, result)) @@ -40,6 +39,11 @@ class EnvVarGetterImpl return false; return GetEnvImpl(alternate_case_var.c_str(), result); } + + virtual void SetEnv(const char* variable_name, const std::string& new_value) { + SetEnvImpl(variable_name, new_value); + } + private: bool GetEnvImpl(const char* variable_name, std::string* result) { #if defined(OS_POSIX) @@ -66,6 +70,15 @@ class EnvVarGetterImpl #error need to port #endif } + + void SetEnvImpl(const char* variable_name, const std::string& new_value) { +#if defined(OS_POSIX) + setenv(variable_name, new_value.c_str(), 1); +#elif defined(OS_WIN) + ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(), + ASCIIToWide(new_value).c_str()); +#endif + } }; } // namespace |