Index: base/env_var.cc |
diff --git a/base/env_var.cc b/base/env_var.cc |
index 3075fdadb29ab448edffcff5e4e091a273f2d030..8d32c02de572ac0e6590fb6549fa93a063c06c1c 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 |