From ed455379daa50edcefa37dd5670c12e84dce72f6 Mon Sep 17 00:00:00 2001 From: "tfarina@chromium.org" Date: Sat, 31 Jul 2010 00:48:10 +0000 Subject: base: Add UnSetEnv function to EnvVarGetter API. BUG=None TEST=out/Debug/base_unittests --gtest_filter=EnvVarTest.UnSetEnvVar Signed-off-by: Thiago Farina Review URL: http://codereview.chromium.org/3043018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54418 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/plugin/plugin_main_mac.mm | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'chrome/plugin') 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 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 "", so just clear it, or // 2) ":" 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"; } -- cgit v1.1