diff --git a/support/3rd_party/src/utils/path.cpp b/support/3rd_party/src/utils/path.cpp index 9c75fbbf..82eaaf1b 100644 --- a/support/3rd_party/src/utils/path.cpp +++ b/support/3rd_party/src/utils/path.cpp @@ -36,6 +36,16 @@ static const std::wstring directory_seperator_str_w{ }; [[nodiscard]] auto resolve(std::string path) -> std::string { +#if defined(_WIN32) + repertory::utils::string::replace(path, "~", "%USERPROFILE%"); + + std::string dest; + dest.resize(::ExpandEnvironmentStringsA(path.c_str(), nullptr, 0)); + ::ExpandEnvironmentStringsA(path.c_str(), dest.data(), + static_cast(dest.size())); + path = dest.c_str(); + return path; +#else // !defined (_WIN32) std::string home{}; repertory::utils::use_getpwuid(getuid(), [&home](struct passwd *pw) { home = (pw->pw_dir ? pw->pw_dir : ""); @@ -45,6 +55,7 @@ static const std::wstring directory_seperator_str_w{ }); return repertory::utils::string::replace(path, "~", home); +#endif // defined (_WIN32) } } // namespace