Merge pull request #6816 from leoetlino/kd

IOS/KD: Migrate to new filesystem interface
This commit is contained in:
Anthony 2018-05-11 12:37:10 -07:00 committed by GitHub
commit ee1a175205
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 26 deletions

View File

@ -8,10 +8,10 @@
#include "Common/CommonPaths.h" #include "Common/CommonPaths.h"
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
#include "Common/File.h"
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
#include "Common/Swap.h" #include "Common/Swap.h"
#include "Core/IOS/FS/FileSystem.h"
#include "Core/IOS/Uids.h"
namespace IOS namespace IOS
{ {
@ -19,43 +19,41 @@ namespace HLE
{ {
namespace NWC24 namespace NWC24
{ {
NWC24Config::NWC24Config() constexpr const char CONFIG_PATH[] = "/" WII_WC24CONF_DIR "/nwc24msg.cfg";
NWC24Config::NWC24Config(std::shared_ptr<FS::FileSystem> fs) : m_fs{std::move(fs)}
{ {
m_path = File::GetUserPath(D_SESSION_WIIROOT_IDX) + "/" WII_WC24CONF_DIR "/nwc24msg.cfg";
ReadConfig(); ReadConfig();
} }
void NWC24Config::ReadConfig() void NWC24Config::ReadConfig()
{ {
if (!File::IOFile(m_path, "rb").ReadBytes(&m_data, sizeof(m_data))) if (const auto file = m_fs->OpenFile(PID_KD, PID_KD, CONFIG_PATH, FS::Mode::Read))
{ {
ResetConfig(); if (file->Read(&m_data, 1))
} {
else const s32 config_error = CheckNwc24Config();
{ if (config_error)
const s32 config_error = CheckNwc24Config(); ERROR_LOG(IOS_WC24, "There is an error in the config for for WC24: %d", config_error);
if (config_error)
ERROR_LOG(IOS_WC24, "There is an error in the config for for WC24: %d", config_error); return;
}
} }
ResetConfig();
} }
void NWC24Config::WriteConfig() const void NWC24Config::WriteConfig() const
{ {
if (!File::Exists(m_path)) constexpr FS::Mode rw_mode = FS::Mode::ReadWrite;
{ m_fs->CreateFullPath(PID_KD, PID_KD, CONFIG_PATH, 0, rw_mode, rw_mode, rw_mode);
if (!File::CreateFullPath(File::GetUserPath(D_SESSION_WIIROOT_IDX) + "/" WII_WC24CONF_DIR)) const auto file = m_fs->CreateAndOpenFile(PID_KD, PID_KD, CONFIG_PATH, rw_mode, rw_mode, rw_mode);
{ if (!file || !file->Write(&m_data, 1))
ERROR_LOG(IOS_WC24, "Failed to create directory for WC24"); ERROR_LOG(IOS_WC24, "Failed to open or write WC24 config file");
}
}
File::IOFile(m_path, "wb").WriteBytes(&m_data, sizeof(m_data));
} }
void NWC24Config::ResetConfig() void NWC24Config::ResetConfig()
{ {
if (File::Exists(m_path)) m_fs->Delete(PID_KD, PID_KD, CONFIG_PATH);
File::Delete(m_path);
constexpr const char* urls[5] = { constexpr const char* urls[5] = {
"https://amw.wc24.wii.com/cgi-bin/account.cgi", "http://rcw.wc24.wii.com/cgi-bin/check.cgi", "https://amw.wc24.wii.com/cgi-bin/account.cgi", "http://rcw.wc24.wii.com/cgi-bin/check.cgi",

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#include <memory>
#include <string> #include <string>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
@ -11,6 +12,10 @@ namespace IOS
{ {
namespace HLE namespace HLE
{ {
namespace FS
{
class FileSystem;
}
namespace NWC24 namespace NWC24
{ {
enum ErrorCode : s32 enum ErrorCode : s32
@ -41,7 +46,7 @@ public:
MAX_PASSWORD_LENGTH = 0x20, MAX_PASSWORD_LENGTH = 0x20,
}; };
NWC24Config(); explicit NWC24Config(std::shared_ptr<FS::FileSystem> fs);
void ReadConfig(); void ReadConfig();
void WriteConfig() const; void WriteConfig() const;
@ -94,7 +99,7 @@ private:
}; };
#pragma pack(pop) #pragma pack(pop)
std::string m_path; std::shared_ptr<FS::FileSystem> m_fs;
ConfigData m_data; ConfigData m_data;
}; };
} // namespace NWC24 } // namespace NWC24

View File

@ -26,7 +26,8 @@ namespace HLE
{ {
namespace Device namespace Device
{ {
NetKDRequest::NetKDRequest(Kernel& ios, const std::string& device_name) : Device(ios, device_name) NetKDRequest::NetKDRequest(Kernel& ios, const std::string& device_name)
: Device(ios, device_name), config{ios.GetFS()}
{ {
} }