diff options
Diffstat (limited to 'src/yuzu_cmd/config.cpp')
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 38d896d65..a2ab69cdd 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -16,7 +16,9 @@ | |||
| 16 | #endif | 16 | #endif |
| 17 | 17 | ||
| 18 | #include <inih/cpp/INIReader.h> | 18 | #include <inih/cpp/INIReader.h> |
| 19 | #include "common/file_util.h" | 19 | #include "common/fs/file.h" |
| 20 | #include "common/fs/fs.h" | ||
| 21 | #include "common/fs/path_util.h" | ||
| 20 | #include "common/logging/log.h" | 22 | #include "common/logging/log.h" |
| 21 | #include "common/param_package.h" | 23 | #include "common/param_package.h" |
| 22 | #include "common/settings.h" | 24 | #include "common/settings.h" |
| @@ -30,8 +32,8 @@ namespace FS = Common::FS; | |||
| 30 | 32 | ||
| 31 | Config::Config() { | 33 | Config::Config() { |
| 32 | // TODO: Don't hardcode the path; let the frontend decide where to put the config files. | 34 | // TODO: Don't hardcode the path; let the frontend decide where to put the config files. |
| 33 | sdl2_config_loc = FS::GetUserPath(FS::UserPath::ConfigDir) + "sdl2-config.ini"; | 35 | sdl2_config_loc = FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "sdl2-config.ini"; |
| 34 | sdl2_config = std::make_unique<INIReader>(sdl2_config_loc); | 36 | sdl2_config = std::make_unique<INIReader>(FS::PathToUTF8String(sdl2_config_loc)); |
| 35 | 37 | ||
| 36 | Reload(); | 38 | Reload(); |
| 37 | } | 39 | } |
| @@ -39,20 +41,23 @@ Config::Config() { | |||
| 39 | Config::~Config() = default; | 41 | Config::~Config() = default; |
| 40 | 42 | ||
| 41 | bool Config::LoadINI(const std::string& default_contents, bool retry) { | 43 | bool Config::LoadINI(const std::string& default_contents, bool retry) { |
| 42 | const std::string& location = this->sdl2_config_loc; | 44 | const auto config_loc_str = FS::PathToUTF8String(sdl2_config_loc); |
| 43 | if (sdl2_config->ParseError() < 0) { | 45 | if (sdl2_config->ParseError() < 0) { |
| 44 | if (retry) { | 46 | if (retry) { |
| 45 | LOG_WARNING(Config, "Failed to load {}. Creating file from defaults...", location); | 47 | LOG_WARNING(Config, "Failed to load {}. Creating file from defaults...", |
| 46 | FS::CreateFullPath(location); | 48 | config_loc_str); |
| 47 | FS::WriteStringToFile(true, location, default_contents); | 49 | |
| 48 | sdl2_config = std::make_unique<INIReader>(location); // Reopen file | 50 | void(FS::CreateParentDir(sdl2_config_loc)); |
| 51 | void(FS::WriteStringToFile(sdl2_config_loc, FS::FileType::TextFile, default_contents)); | ||
| 52 | |||
| 53 | sdl2_config = std::make_unique<INIReader>(config_loc_str); | ||
| 49 | 54 | ||
| 50 | return LoadINI(default_contents, false); | 55 | return LoadINI(default_contents, false); |
| 51 | } | 56 | } |
| 52 | LOG_ERROR(Config, "Failed."); | 57 | LOG_ERROR(Config, "Failed."); |
| 53 | return false; | 58 | return false; |
| 54 | } | 59 | } |
| 55 | LOG_INFO(Config, "Successfully loaded {}", location); | 60 | LOG_INFO(Config, "Successfully loaded {}", config_loc_str); |
| 56 | return true; | 61 | return true; |
| 57 | } | 62 | } |
| 58 | 63 | ||
| @@ -327,18 +332,18 @@ void Config::ReadValues() { | |||
| 327 | // Data Storage | 332 | // Data Storage |
| 328 | Settings::values.use_virtual_sd = | 333 | Settings::values.use_virtual_sd = |
| 329 | sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); | 334 | sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); |
| 330 | FS::GetUserPath( | 335 | FS::SetYuzuPath(FS::YuzuPath::NANDDir, |
| 331 | FS::UserPath::NANDDir, | 336 | sdl2_config->Get("Data Storage", "nand_directory", |
| 332 | sdl2_config->Get("Data Storage", "nand_directory", FS::GetUserPath(FS::UserPath::NANDDir))); | 337 | FS::GetYuzuPathString(FS::YuzuPath::NANDDir))); |
| 333 | FS::GetUserPath( | 338 | FS::SetYuzuPath(FS::YuzuPath::SDMCDir, |
| 334 | FS::UserPath::SDMCDir, | 339 | sdl2_config->Get("Data Storage", "sdmc_directory", |
| 335 | sdl2_config->Get("Data Storage", "sdmc_directory", FS::GetUserPath(FS::UserPath::SDMCDir))); | 340 | FS::GetYuzuPathString(FS::YuzuPath::SDMCDir))); |
| 336 | FS::GetUserPath( | 341 | FS::SetYuzuPath(FS::YuzuPath::LoadDir, |
| 337 | FS::UserPath::LoadDir, | 342 | sdl2_config->Get("Data Storage", "load_directory", |
| 338 | sdl2_config->Get("Data Storage", "load_directory", FS::GetUserPath(FS::UserPath::LoadDir))); | 343 | FS::GetYuzuPathString(FS::YuzuPath::LoadDir))); |
| 339 | FS::GetUserPath( | 344 | FS::SetYuzuPath(FS::YuzuPath::DumpDir, |
| 340 | FS::UserPath::DumpDir, | 345 | sdl2_config->Get("Data Storage", "dump_directory", |
| 341 | sdl2_config->Get("Data Storage", "dump_directory", FS::GetUserPath(FS::UserPath::DumpDir))); | 346 | FS::GetYuzuPathString(FS::YuzuPath::DumpDir))); |
| 342 | Settings::values.gamecard_inserted = | 347 | Settings::values.gamecard_inserted = |
| 343 | sdl2_config->GetBoolean("Data Storage", "gamecard_inserted", false); | 348 | sdl2_config->GetBoolean("Data Storage", "gamecard_inserted", false); |
| 344 | Settings::values.gamecard_current_game = | 349 | Settings::values.gamecard_current_game = |