diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-21 01:29:00 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-21 01:29:00 +0000 |
commit | 5d1937bb5d9137cbaa1c947c383c3742179062a9 (patch) | |
tree | e8644c6e2b7ce1c509d47b00b40bc5d41ef2f63f /base/base_paths_linux.cc | |
parent | 29d334a2a5e8b66a83c161f54f83f3cdf5a31240 (diff) | |
download | chromium_src-5d1937bb5d9137cbaa1c947c383c3742179062a9.zip chromium_src-5d1937bb5d9137cbaa1c947c383c3742179062a9.tar.gz chromium_src-5d1937bb5d9137cbaa1c947c383c3742179062a9.tar.bz2 |
posix: refactor duplicated path-handling code
We had the same code in three headers, and an "if FREEBSD" in a
_linux.cc file.
Review URL: http://codereview.chromium.org/414063
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/base_paths_linux.cc')
-rw-r--r-- | base/base_paths_linux.cc | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/base/base_paths_linux.cc b/base/base_paths_linux.cc deleted file mode 100644 index ca5ca4e..0000000 --- a/base/base_paths_linux.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2006-2008 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/base_paths_linux.h" - -#include <unistd.h> - -#include "base/file_path.h" -#include "base/file_util.h" -#include "base/logging.h" -#include "base/path_service.h" -#include "base/string_piece.h" -#include "base/sys_string_conversions.h" - -namespace base { - -#if defined(OS_LINUX) -const char kSelfExe[] = "/proc/self/exe"; -#elif defined(OS_FREEBSD) -const char kSelfExe[] = "/proc/curproc/file"; -#endif - -bool PathProviderLinux(int key, FilePath* result) { - FilePath path; - switch (key) { - case base::FILE_EXE: - case base::FILE_MODULE: { // TODO(evanm): is this correct? - char bin_dir[PATH_MAX + 1]; - int bin_dir_size = readlink(kSelfExe, bin_dir, PATH_MAX); - if (bin_dir_size < 0 || bin_dir_size > PATH_MAX) { - NOTREACHED() << "Unable to resolve " << kSelfExe << "."; - return false; - } - bin_dir[bin_dir_size] = 0; - *result = FilePath(bin_dir); - return true; - } - case base::DIR_SOURCE_ROOT: - // On linux, unit tests execute two levels deep from the source root. - // For example: sconsbuild/{Debug|Release}/net_unittest - if (PathService::Get(base::DIR_EXE, &path)) { - path = path.DirName().DirName(); - if (file_util::PathExists(path.Append("base/base_paths_linux.cc"))) { - *result = path; - return true; - } - } - // If that failed (maybe the build output is symlinked to a different - // drive) try assuming the current directory is the source root. - if (file_util::GetCurrentDirectory(&path) && - file_util::PathExists(path.Append("base/base_paths_linux.cc"))) { - *result = path; - return true; - } - LOG(ERROR) << "Couldn't find your source root. " - << "Try running from your chromium/src directory."; - return false; - } - return false; -} - -} // namespace base |