mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-30 01:25:51 +00:00
Qt: Resolve any symbolic links in AppRoot/DataRoot
Should fix incorrect relative path generation on FreeBSD, where /home is a symlink to /usr/home.
This commit is contained in:
parent
524625269f
commit
407049cd91
|
@ -147,7 +147,7 @@ bool NoGUIHost::ShouldUsePortableMode()
|
||||||
|
|
||||||
void NoGUIHost::SetAppRoot()
|
void NoGUIHost::SetAppRoot()
|
||||||
{
|
{
|
||||||
std::string program_path(FileSystem::GetProgramPath());
|
const std::string program_path = FileSystem::GetProgramPath();
|
||||||
Log_InfoPrintf("Program Path: %s", program_path.c_str());
|
Log_InfoPrintf("Program Path: %s", program_path.c_str());
|
||||||
|
|
||||||
EmuFolders::AppRoot = Path::Canonicalize(Path::GetDirectory(program_path));
|
EmuFolders::AppRoot = Path::Canonicalize(Path::GetDirectory(program_path));
|
||||||
|
@ -190,7 +190,7 @@ void NoGUIHost::SetDataDirectory()
|
||||||
const char* xdg_config_home = getenv("XDG_CONFIG_HOME");
|
const char* xdg_config_home = getenv("XDG_CONFIG_HOME");
|
||||||
if (xdg_config_home && Path::IsAbsolute(xdg_config_home))
|
if (xdg_config_home && Path::IsAbsolute(xdg_config_home))
|
||||||
{
|
{
|
||||||
EmuFolders::DataRoot = Path::Combine(xdg_config_home, "duckstation");
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(xdg_config_home, "duckstation"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -203,14 +203,14 @@ void NoGUIHost::SetDataDirectory()
|
||||||
const std::string share_dir(Path::Combine(local_dir, "share"));
|
const std::string share_dir(Path::Combine(local_dir, "share"));
|
||||||
FileSystem::EnsureDirectoryExists(local_dir.c_str(), false);
|
FileSystem::EnsureDirectoryExists(local_dir.c_str(), false);
|
||||||
FileSystem::EnsureDirectoryExists(share_dir.c_str(), false);
|
FileSystem::EnsureDirectoryExists(share_dir.c_str(), false);
|
||||||
EmuFolders::DataRoot = Path::Combine(share_dir, "duckstation");
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(share_dir, "duckstation"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
static constexpr char MAC_DATA_DIR[] = "Library/Application Support/DuckStation";
|
static constexpr char MAC_DATA_DIR[] = "Library/Application Support/DuckStation";
|
||||||
const char* home_dir = getenv("HOME");
|
const char* home_dir = getenv("HOME");
|
||||||
if (home_dir)
|
if (home_dir)
|
||||||
EmuFolders::DataRoot = Path::Combine(home_dir, MAC_DATA_DIR);
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(home_dir, MAC_DATA_DIR));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// make sure it exists
|
// make sure it exists
|
||||||
|
|
|
@ -252,7 +252,7 @@ bool QtHost::ShouldUsePortableMode()
|
||||||
|
|
||||||
void QtHost::SetAppRoot()
|
void QtHost::SetAppRoot()
|
||||||
{
|
{
|
||||||
std::string program_path(FileSystem::GetProgramPath());
|
const std::string program_path = FileSystem::GetProgramPath();
|
||||||
Log_InfoPrintf("Program Path: %s", program_path.c_str());
|
Log_InfoPrintf("Program Path: %s", program_path.c_str());
|
||||||
|
|
||||||
EmuFolders::AppRoot = Path::Canonicalize(Path::GetDirectory(program_path));
|
EmuFolders::AppRoot = Path::Canonicalize(Path::GetDirectory(program_path));
|
||||||
|
@ -295,7 +295,7 @@ void QtHost::SetDataDirectory()
|
||||||
const char* xdg_config_home = getenv("XDG_CONFIG_HOME");
|
const char* xdg_config_home = getenv("XDG_CONFIG_HOME");
|
||||||
if (xdg_config_home && Path::IsAbsolute(xdg_config_home))
|
if (xdg_config_home && Path::IsAbsolute(xdg_config_home))
|
||||||
{
|
{
|
||||||
EmuFolders::DataRoot = Path::Combine(xdg_config_home, "duckstation");
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(xdg_config_home, "duckstation"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -308,14 +308,14 @@ void QtHost::SetDataDirectory()
|
||||||
const std::string share_dir(Path::Combine(local_dir, "share"));
|
const std::string share_dir(Path::Combine(local_dir, "share"));
|
||||||
FileSystem::EnsureDirectoryExists(local_dir.c_str(), false);
|
FileSystem::EnsureDirectoryExists(local_dir.c_str(), false);
|
||||||
FileSystem::EnsureDirectoryExists(share_dir.c_str(), false);
|
FileSystem::EnsureDirectoryExists(share_dir.c_str(), false);
|
||||||
EmuFolders::DataRoot = Path::Combine(share_dir, "duckstation");
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(share_dir, "duckstation"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
static constexpr char MAC_DATA_DIR[] = "Library/Application Support/DuckStation";
|
static constexpr char MAC_DATA_DIR[] = "Library/Application Support/DuckStation";
|
||||||
const char* home_dir = getenv("HOME");
|
const char* home_dir = getenv("HOME");
|
||||||
if (home_dir)
|
if (home_dir)
|
||||||
EmuFolders::DataRoot = Path::Combine(home_dir, MAC_DATA_DIR);
|
EmuFolders::DataRoot = Path::RealPath(Path::Combine(home_dir, MAC_DATA_DIR));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// make sure it exists
|
// make sure it exists
|
||||||
|
|
Loading…
Reference in a new issue