diff options
| author | chrodger <45440867+chrodger@users.noreply.github.com> | 2020-05-29 14:10:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-29 23:10:37 +0200 |
| commit | f0baddbe63ba1a0de27e00fc3556eaa1fdc20030 (patch) | |
| tree | 7ccc8694e1e9b72507b2d635d1adc79d600dedc4 /src/filemanager.cpp | |
| parent | e9a5addacb4e44b9c1128d4726de4e29e09b40e6 (diff) | |
| download | PROJ-f0baddbe63ba1a0de27e00fc3556eaa1fdc20030.tar.gz PROJ-f0baddbe63ba1a0de27e00fc3556eaa1fdc20030.zip | |
filemanager.cpp: use non-deprecated SHGetKnownFolderPath() function to get the user writable directory on Windows (#2246)
Fixes #2245
Diffstat (limited to 'src/filemanager.cpp')
| -rw-r--r-- | src/filemanager.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/filemanager.cpp b/src/filemanager.cpp index a5bb779c..33ce4492 100644 --- a/src/filemanager.cpp +++ b/src/filemanager.cpp @@ -1203,12 +1203,21 @@ const char *proj_context_get_user_writable_directory(PJ_CONTEXT *ctx, if (ctx->user_writable_directory.empty()) { std::string path; #ifdef _WIN32 +#ifdef __MINGW32__ std::wstring wPath; wPath.resize(MAX_PATH); if (SHGetFolderPathW(nullptr, CSIDL_LOCAL_APPDATA, nullptr, 0, &wPath[0]) == S_OK) { wPath.resize(wcslen(wPath.data())); path = NS_PROJ::WStringToUTF8(wPath); +#else + wchar_t* wPath; + if (SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &wPath) == S_OK){ + std::wstring ws(wPath); + std::string str = NS_PROJ::WStringToUTF8(ws); + path = str; + CoTaskMemFree(wPath); +#endif } else { const char *local_app_data = getenv("LOCALAPPDATA"); if (!local_app_data) { |
