// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.
// Defines base::PathProviderPosix, default path provider on POSIX OSes that // don't have their own base_paths_OS.cc implementation (i.e. all but Mac and // Android).
bool PathProviderPosix(int key, FilePath* result) { switch (key) { case FILE_EXE: case FILE_MODULE: { // TODO(evanm): is this correct? #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
FilePath bin_dir; if (!ReadSymbolicLink(FilePath(kProcSelfExe), &bin_dir)) {
NOTREACHED() << "Unable to resolve " << kProcSelfExe << "."; returnfalse;
}
*result = bin_dir; returntrue; #elif BUILDFLAG(IS_FREEBSD) int name[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; char bin_dir[PATH_MAX + 1];
size_t length = sizeof(bin_dir); // Upon return, |length| is the number of bytes written to |bin_dir| // including the string terminator. int error = sysctl(name, 4, bin_dir, &length, NULL, 0); if (error < 0 || length <= 1) {
NOTREACHED() << "Unable to resolve path."; returnfalse;
}
*result = FilePath(FilePath::StringType(bin_dir, length - 1)); returntrue; #elif BUILDFLAG(IS_SOLARIS) char bin_dir[PATH_MAX + 1]; if (realpath(getexecname(), bin_dir) == NULL) {
NOTREACHED() << "Unable to resolve " << getexecname() << "."; returnfalse;
}
*result = FilePath(bin_dir); returntrue; #elif BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_AIX) // There is currently no way to get the executable path on OpenBSD char* cpath; if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
*result = FilePath(cpath); else
*result = FilePath("/usr/local/chrome/chrome"); returntrue; #endif
} case DIR_SRC_TEST_DATA_ROOT: { #if !defined(MOZ_ZUCCHINI) // Allow passing this in the environment, for more flexibility in build // tree configurations (sub-project builds, gyp --output_dir, etc.)
std::unique_ptr<Environment> env(Environment::Create());
std::string cr_source_root;
FilePath path; if (env->GetVar("CR_SOURCE_ROOT", &cr_source_root)) {
path = FilePath(cr_source_root); if (PathExists(path)) {
*result = path; returntrue;
}
DLOG(WARNING) << "CR_SOURCE_ROOT is set, but it appears to not "
<< "point to a directory.";
} // On POSIX, unit tests execute two levels deep from the source root. // For example: out/{Debug|Release}/net_unittest if (PathService::Get(DIR_EXE, &path)) {
*result = path.DirName().DirName(); returntrue;
} #else
FilePath path; // On POSIX, Firefox unit tests execute three levels deep from the source root. // For example: ./obj-x86_64-pc-linux-gnu/dist/bin/zucchini-gtest if (PathService::Get(DIR_EXE, &path)) {
*result = path.DirName().DirName().DirName(); returntrue;
} #endif// !defined(MOZ_ZUCCHINI)
DLOG(ERROR) << "Couldn't find your source root. "
<< "Try running from your chromium/src directory."; returnfalse;
} #if !defined(MOZ_ZUCCHINI) case DIR_USER_DESKTOP:
*result = nix::GetXDGUserDirectory("DESKTOP", "Desktop"); returntrue; case DIR_CACHE: {
std::unique_ptr<Environment> env(Environment::Create());
FilePath cache_dir(
nix::GetXDGDirectory(env.get(), "XDG_CACHE_HOME", ".cache"));
*result = cache_dir; returntrue;
} #endif// !defined(MOZ_ZUCCHINI)
} returnfalse;
}
} // namespace base
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.28 Sekunden
(vorverarbeitet am 2026-10-01)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.