diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-31 00:48:10 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-31 00:48:10 +0000 |
commit | ed455379daa50edcefa37dd5670c12e84dce72f6 (patch) | |
tree | c817a2deb91307a573610c8bf505631d032273fc /chrome/plugin | |
parent | e5047ff99b92662f3e3bda31650b16506ae5ad55 (diff) | |
download | chromium_src-ed455379daa50edcefa37dd5670c12e84dce72f6.zip chromium_src-ed455379daa50edcefa37dd5670c12e84dce72f6.tar.gz chromium_src-ed455379daa50edcefa37dd5670c12e84dce72f6.tar.bz2 |
base: Add UnSetEnv function to EnvVarGetter API.
BUG=None
TEST=out/Debug/base_unittests --gtest_filter=EnvVarTest.UnSetEnvVar
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Review URL: http://codereview.chromium.org/3043018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54418 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/plugin')
-rw-r--r-- | chrome/plugin/plugin_main_mac.mm | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/chrome/plugin/plugin_main_mac.mm b/chrome/plugin/plugin_main_mac.mm index 56b7c95..119f986 100644 --- a/chrome/plugin/plugin_main_mac.mm +++ b/chrome/plugin/plugin_main_mac.mm @@ -1,17 +1,21 @@ -// Copyright (c) 2006-2008 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. #include "base/chrome_application_mac.h" +#include "base/env_var.h" +#include "base/scoped_ptr.h" #include "base/string_util.h" #include "chrome/common/plugin_carbon_interpose_constants_mac.h" #include "chrome/plugin/plugin_interpose_util_mac.h" #if !defined(__LP64__) void TrimInterposeEnvironment() { - const char* interpose_list = - getenv(plugin_interpose_strings::kDYLDInsertLibrariesKey); - if (!interpose_list) { + scoped_ptr<base::EnvVarGetter> env(base::EnvVarGetter::Create()); + + std::string interpose_list; + if (!env->GetEnv(plugin_interpose_strings::kDYLDInsertLibrariesKey, + &interpose_list)) { NOTREACHED() << "No interposing libraries set"; return; } @@ -21,19 +25,19 @@ void TrimInterposeEnvironment() { // need to handle are: // 1) The whole string is "<kInterposeLibraryPath>", so just clear it, or // 2) ":<kInterposeLibraryPath>" is the end of the string, so trim and re-set. - int suffix_offset = strlen(interpose_list) - + int suffix_offset = strlen(interpose_list.c_str()) - strlen(plugin_interpose_strings::kInterposeLibraryPath); + if (suffix_offset == 0 && - strcmp(interpose_list, + strcmp(interpose_list.c_str(), plugin_interpose_strings::kInterposeLibraryPath) == 0) { - unsetenv(plugin_interpose_strings::kDYLDInsertLibrariesKey); + env->UnSetEnv(plugin_interpose_strings::kDYLDInsertLibrariesKey); } else if (suffix_offset > 0 && interpose_list[suffix_offset - 1] == ':' && - strcmp(interpose_list + suffix_offset, + strcmp(interpose_list.c_str() + suffix_offset, plugin_interpose_strings::kInterposeLibraryPath) == 0) { - std::string trimmed_list = - std::string(interpose_list).substr(0, suffix_offset - 1); - setenv(plugin_interpose_strings::kDYLDInsertLibrariesKey, - trimmed_list.c_str(), 1); + std::string trimmed_list = interpose_list.substr(0, suffix_offset - 1); + env->SetEnv(plugin_interpose_strings::kDYLDInsertLibrariesKey, + trimmed_list.c_str()); } else { NOTREACHED() << "Missing Carbon interposing library"; } |