From b6f3afcad13523038bc42eef9ddecb58a2ae8e70 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 8 Mar 2022 20:57:08 +0100 Subject: Fix home_directory() with non-US-English pathnames on Windows (#2203). --- src/lib/cross_windows.cc | 14 +++++++++++++- src/lib/wscript | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/cross_windows.cc b/src/lib/cross_windows.cc index a425186f1..4990f53ee 100644 --- a/src/lib/cross_windows.cc +++ b/src/lib/cross_windows.cc @@ -44,7 +44,9 @@ extern "C" { #include #undef DATADIR #include +#include #include +#include #include #include #include @@ -397,7 +399,17 @@ maybe_open_console () boost::filesystem::path home_directory () { - return boost::filesystem::path(getenv("userprofile")); + PWSTR wide_path; + auto result = SHGetKnownFolderPath(FOLDERID_Documents, 0, nullptr, &wide_path); + + if (result != S_OK) { + CoTaskMemFree(wide_path); + return boost::filesystem::path("c:\\"); + } + + auto path = wchar_to_utf8(wide_path); + CoTaskMemFree(wide_path); + return path; } diff --git a/src/lib/wscript b/src/lib/wscript index 2bf740c34..914fc69f9 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -217,7 +217,7 @@ def build(bld): obj.uselib += ' POLKIT' if bld.env.TARGET_WINDOWS_64 or bld.env.TARGET_WINDOWS_32: - obj.uselib += ' WINSOCK2 DBGHELP SHLWAPI MSWSOCK BOOST_LOCALE SETUPAPI' + obj.uselib += ' WINSOCK2 DBGHELP SHLWAPI MSWSOCK BOOST_LOCALE SETUPAPI OLE32 UUID' obj.source += ' cross_windows.cc' if bld.env.TARGET_OSX: obj.source += ' cross_osx.cc' -- cgit v1.2.3