|
@@ -16,6 +16,8 @@
|
|
|
|
|
|
|
|
#include <boost/algorithm/string/replace.hpp>
|
|
#include <boost/algorithm/string/replace.hpp>
|
|
|
|
|
|
|
|
|
|
+#include "common/string_util.h"
|
|
|
|
|
+
|
|
|
namespace FS = Common::FS;
|
|
namespace FS = Common::FS;
|
|
|
|
|
|
|
|
Config::Config(const ConfigType config_type)
|
|
Config::Config(const ConfigType config_type)
|
|
@@ -56,16 +58,43 @@ void Config::Initialize(const std::optional<std::string> config_path) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Config::WriteToIni() const {
|
|
void Config::WriteToIni() const {
|
|
|
- if (const SI_Error rc = config->SaveFile(config_loc.c_str(), false); rc < 0) {
|
|
|
|
|
|
|
+ FILE* fp = nullptr;
|
|
|
|
|
+#ifdef _WIN32
|
|
|
|
|
+ fp = _wfopen(Common::UTF8ToUTF16W(config_loc).data(), L"wb");
|
|
|
|
|
+#else
|
|
|
|
|
+ fp = fopen(config_loc.c_str(), "wb");
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
|
|
+ CSimpleIniA::FileWriter writer(fp);
|
|
|
|
|
+ const SI_Error rc = config->Save(writer, false);
|
|
|
|
|
+ if (rc < 0) {
|
|
|
LOG_ERROR(Frontend, "Config file could not be saved!");
|
|
LOG_ERROR(Frontend, "Config file could not be saved!");
|
|
|
}
|
|
}
|
|
|
|
|
+ fclose(fp);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Config::SetUpIni() {
|
|
void Config::SetUpIni() {
|
|
|
config = std::make_unique<CSimpleIniA>();
|
|
config = std::make_unique<CSimpleIniA>();
|
|
|
config->SetUnicode(true);
|
|
config->SetUnicode(true);
|
|
|
config->SetSpaces(false);
|
|
config->SetSpaces(false);
|
|
|
- config->LoadFile(config_loc.c_str());
|
|
|
|
|
|
|
+
|
|
|
|
|
+ FILE* fp = nullptr;
|
|
|
|
|
+#ifdef _WIN32
|
|
|
|
|
+ _wfopen_s(&fp, Common::UTF8ToUTF16W(config_loc).data(), L"rb, ccs=UTF-8");
|
|
|
|
|
+ if (fp == nullptr) {
|
|
|
|
|
+ fp = _wfopen(Common::UTF8ToUTF16W(config_loc).data(), L"wb, ccs=UTF-8");
|
|
|
|
|
+ }
|
|
|
|
|
+#else
|
|
|
|
|
+ fp = fopen(config_loc.c_str(), "rb");
|
|
|
|
|
+ if (fp == nullptr) {
|
|
|
|
|
+ fp = fopen(config_loc.c_str(), "wb");
|
|
|
|
|
+ }
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
|
|
+ if (SI_Error rc = config->LoadFile(fp); rc < 0) {
|
|
|
|
|
+ LOG_ERROR(Frontend, "Config file could not be loaded!");
|
|
|
|
|
+ }
|
|
|
|
|
+ fclose(fp);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool Config::IsCustomConfig() const {
|
|
bool Config::IsCustomConfig() const {
|