System/Path/Windows: Make GetSystemLibraryPaths more generic.

llvm-svn: 118505
This commit is contained in:
Michael J. Spencer 2010-11-09 15:11:19 +00:00
parent bb6e51c957
commit 181fd8cd89
2 changed files with 28 additions and 2 deletions

View File

@ -240,8 +240,32 @@ Path::GetRootDirectory() {
void
Path::GetSystemLibraryPaths(std::vector<sys::Path>& Paths) {
Paths.push_back(sys::Path("C:/WINDOWS/SYSTEM32"));
Paths.push_back(sys::Path("C:/WINDOWS"));
char buff[MAX_PATH];
// Generic form of C:\Windows\System32
HRESULT res = SHGetFolderPathA(NULL,
CSIDL_FLAG_CREATE | CSIDL_SYSTEM,
NULL,
SHGFP_TYPE_CURRENT,
buff);
if (res != S_OK) {
assert(0 && "Failed to get system directory");
return;
}
Paths.push_back(sys::Path(buff));
// Reset buff.
buff[0] = 0;
// Generic form of C:\Windows
res = SHGetFolderPathA(NULL,
CSIDL_FLAG_CREATE | CSIDL_WINDOWS,
NULL,
SHGFP_TYPE_CURRENT,
buff);
if (res != S_OK) {
assert(0 && "Failed to get windows directory");
return;
}
Paths.push_back(sys::Path(buff));
}
void

View File

@ -18,10 +18,12 @@
// Require at least Windows 2000 API.
#define _WIN32_WINNT 0x0500
#define _WIN32_IE 0x0500 // MinGW at it again.
#define WIN32_LEAN_AND_MEAN
#include "llvm/Config/config.h" // Get build system configuration settings
#include <Windows.h>
#include <ShlObj.h>
#include <cassert>
#include <string>