summaryrefslogtreecommitdiffstats
path: root/base/path_service.cc
diff options
context:
space:
mode:
authorerikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-05 19:46:31 +0000
committererikkay@google.com <erikkay@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-05 19:46:31 +0000
commitac510e1f4a322381d1e82c9669bfd3c05113d6e6 (patch)
treef88fa9f412405d33f08755171503dac2c77d5e0b /base/path_service.cc
parent6d55c2fbc384e3f02a89b69e29fd8934ba2f0966 (diff)
downloadchromium_src-ac510e1f4a322381d1e82c9669bfd3c05113d6e6.zip
chromium_src-ac510e1f4a322381d1e82c9669bfd3c05113d6e6.tar.gz
chromium_src-ac510e1f4a322381d1e82c9669bfd3c05113d6e6.tar.bz2
refactor base_paths so that windows-specific paths are pulled out into their own file. Note that some of the same path key names will exist in other platform-specific files. For example, base_paths_mac.mm will have FILE_EXE and DIR_APP_DATA (among others).
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@389 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/path_service.cc')
-rw-r--r--base/path_service.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/base/path_service.cc b/base/path_service.cc
index f4b3a83..b3d413f 100644
--- a/base/path_service.cc
+++ b/base/path_service.cc
@@ -42,6 +42,9 @@
namespace base {
bool PathProvider(int key, std::wstring* result);
+#if OS_WIN
+ bool PathProviderWin(int key, std::wstring* result);
+#endif
}
namespace {
@@ -69,13 +72,31 @@ static Provider base_provider = {
#endif
};
+#ifdef OS_WIN
+static Provider base_provider_win = {
+ base::PathProviderWin,
+ &base_provider,
+#ifndef NDEBUG
+ base::PATH_WIN_START,
+ base::PATH_WIN_END
+#endif
+};
+#endif
+
struct PathData {
Lock lock;
PathMap cache; // Track mappings from path key to path value.
PathSet overrides; // Track whether a path has been overridden.
Provider* providers; // Linked list of path service providers.
- PathData() : providers(&base_provider) {
+ PathData() {
+#if defined(OS_WIN)
+ providers = &base_provider_win;
+#elif defined(OS_MACOSX)
+ providers = &base_provider;
+#elif defined(OS_LINUX)
+ providers = &base_provider;
+#endif
}
};