diff options
Diffstat (limited to 'base/path_service.cc')
-rw-r--r-- | base/path_service.cc | 23 |
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 } }; |