summaryrefslogtreecommitdiffstats
path: root/base/linux_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/linux_util.cc')
-rw-r--r--base/linux_util.cc70
1 files changed, 17 insertions, 53 deletions
diff --git a/base/linux_util.cc b/base/linux_util.cc
index e49a01f..b552b93 100644
--- a/base/linux_util.cc
+++ b/base/linux_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -14,6 +14,7 @@
#include <vector>
#include "base/command_line.h"
+#include "base/env_var.h"
#include "base/lock.h"
#include "base/path_service.h"
#include "base/process_util.h"
@@ -23,36 +24,6 @@
namespace {
-class EnvironmentVariableGetterImpl
- : public base::EnvironmentVariableGetter {
- public:
- virtual bool Getenv(const char* variable_name, std::string* result) {
- const char* env_value = ::getenv(variable_name);
- if (env_value) {
- // Note that the variable may be defined but empty.
- *result = env_value;
- return true;
- }
- // Some commonly used variable names are uppercase while others
- // are lowercase, which is inconsistent. Let's try to be helpful
- // and look for a variable name with the reverse case.
- char first_char = variable_name[0];
- std::string alternate_case_var;
- if (first_char >= 'a' && first_char <= 'z')
- alternate_case_var = StringToUpperASCII(std::string(variable_name));
- else if (first_char >= 'A' && first_char <= 'Z')
- alternate_case_var = StringToLowerASCII(std::string(variable_name));
- else
- return false;
- env_value = ::getenv(alternate_case_var.c_str());
- if (env_value) {
- *result = env_value;
- return true;
- }
- return false;
- }
-};
-
// Not needed for OS_CHROMEOS.
#if defined(OS_LINUX)
enum LinuxDistroState {
@@ -148,7 +119,7 @@ bool ProcPathGetInode(ino_t* inode_out, const char* path, bool log = false) {
return true;
}
-} // anonymous namespace
+} // namespace
namespace base {
@@ -181,9 +152,9 @@ std::string linux_distro =
"Unknown";
#endif
-FilePath GetHomeDir(EnvironmentVariableGetter* env) {
+FilePath GetHomeDir(EnvVarGetter* env) {
std::string home_dir;
- if (env->Getenv("HOME", &home_dir) && !home_dir.empty())
+ if (env->GetEnv("HOME", &home_dir) && !home_dir.empty())
return FilePath(home_dir);
home_dir = g_get_home_dir();
@@ -236,16 +207,16 @@ std::string GetLinuxDistro() {
#endif
}
-FilePath GetXDGDirectory(EnvironmentVariableGetter* env,
- const char* env_name, const char* fallback_dir) {
+FilePath GetXDGDirectory(EnvVarGetter* env, const char* env_name,
+ const char* fallback_dir) {
std::string env_value;
- if (env->Getenv(env_name, &env_value) && !env_value.empty())
+ if (env->GetEnv(env_name, &env_value) && !env_value.empty())
return FilePath(env_value);
return GetHomeDir(env).Append(fallback_dir);
}
-FilePath GetXDGUserDirectory(EnvironmentVariableGetter* env,
- const char* dir_name, const char* fallback_dir) {
+FilePath GetXDGUserDirectory(EnvVarGetter* env, const char* dir_name,
+ const char* fallback_dir) {
char* xdg_dir = xdg_user_dir_lookup(dir_name);
if (xdg_dir) {
FilePath rv(xdg_dir);
@@ -255,22 +226,16 @@ FilePath GetXDGUserDirectory(EnvironmentVariableGetter* env,
return GetHomeDir(env).Append(fallback_dir);
}
-// static
-EnvironmentVariableGetter* EnvironmentVariableGetter::Create() {
- return new EnvironmentVariableGetterImpl();
-}
-
-DesktopEnvironment GetDesktopEnvironment(EnvironmentVariableGetter* env) {
+DesktopEnvironment GetDesktopEnvironment(EnvVarGetter* env) {
std::string desktop_session;
- if (env->Getenv("DESKTOP_SESSION", &desktop_session)) {
+ if (env->GetEnv("DESKTOP_SESSION", &desktop_session)) {
if (desktop_session == "gnome")
return DESKTOP_ENVIRONMENT_GNOME;
else if (desktop_session == "kde4")
return DESKTOP_ENVIRONMENT_KDE4;
else if (desktop_session == "kde") {
// This may mean KDE4 on newer systems, so we have to check.
- std::string dummy;
- if (env->Getenv("KDE_SESSION_VERSION", &dummy))
+ if (env->HasEnv("KDE_SESSION_VERSION"))
return DESKTOP_ENVIRONMENT_KDE4;
return DESKTOP_ENVIRONMENT_KDE3;
}
@@ -280,11 +245,10 @@ DesktopEnvironment GetDesktopEnvironment(EnvironmentVariableGetter* env) {
// Fall back on some older environment variables.
// Useful particularly in the DESKTOP_SESSION=default case.
- std::string dummy;
- if (env->Getenv("GNOME_DESKTOP_SESSION_ID", &dummy)) {
+ if (env->HasEnv("GNOME_DESKTOP_SESSION_ID")) {
return DESKTOP_ENVIRONMENT_GNOME;
- } else if (env->Getenv("KDE_FULL_SESSION", &dummy)) {
- if (env->Getenv("KDE_SESSION_VERSION", &dummy))
+ } else if (env->HasEnv("KDE_FULL_SESSION")) {
+ if (env->HasEnv("KDE_SESSION_VERSION"))
return DESKTOP_ENVIRONMENT_KDE4;
return DESKTOP_ENVIRONMENT_KDE3;
}
@@ -308,7 +272,7 @@ const char* GetDesktopEnvironmentName(DesktopEnvironment env) {
return NULL;
}
-const char* GetDesktopEnvironmentName(EnvironmentVariableGetter* env) {
+const char* GetDesktopEnvironmentName(EnvVarGetter* env) {
return GetDesktopEnvironmentName(GetDesktopEnvironment(env));
}