summaryrefslogtreecommitdiffstats
path: root/base/env_var.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/env_var.cc')
-rw-r--r--base/env_var.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/base/env_var.cc b/base/env_var.cc
index d0eaa0c..71d9c53 100644
--- a/base/env_var.cc
+++ b/base/env_var.cc
@@ -44,6 +44,10 @@ class EnvVarGetterImpl : public base::EnvVarGetter {
return SetEnvImpl(variable_name, new_value);
}
+ virtual bool UnSetEnv(const char* variable_name) {
+ return UnSetEnvImpl(variable_name);
+ }
+
private:
bool GetEnvImpl(const char* variable_name, std::string* result) {
#if defined(OS_POSIX)
@@ -81,6 +85,17 @@ class EnvVarGetterImpl : public base::EnvVarGetter {
ASCIIToWide(new_value).c_str()) != 0;
#endif
}
+
+ bool UnSetEnvImpl(const char* variable_name) {
+#if defined(OS_POSIX)
+ // On success, zero is returned.
+ return unsetenv(variable_name) == 0;
+#elif defined(OS_WIN)
+ // On success, a nonzero is returned.
+ return ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(),
+ NULL) != 0;
+#endif
+ }
};
} // namespace
@@ -99,13 +114,13 @@ const char kHome[] = "HOME";
EnvVarGetter::~EnvVarGetter() {}
-bool EnvVarGetter::HasEnv(const char* variable_name) {
- return GetEnv(variable_name, NULL);
-}
-
// static
EnvVarGetter* EnvVarGetter::Create() {
return new EnvVarGetterImpl();
}
+bool EnvVarGetter::HasEnv(const char* variable_name) {
+ return GetEnv(variable_name, NULL);
+}
+
} // namespace base