WFSI: Implement internal Cancel{Title,Patch}Import.
This commit is contained in:
parent
c1817b2c6d
commit
f0aeeeaef6
|
@ -488,6 +488,55 @@ u32 WFSI::GetTmd(u16 group_id, u32 title_id, u64 subtitle_id, u32 address, u32*
|
||||||
return IPC_SUCCESS;
|
return IPC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s32 DeleteTemporaryFiles(const std::string& device_name, u64 title_id)
|
||||||
|
{
|
||||||
|
File::Delete(WFS::NativePath(
|
||||||
|
StringFromFormat("/vol/%s/tmp/%016" PRIx64 ".ini", device_name.c_str(), title_id)));
|
||||||
|
File::Delete(WFS::NativePath(
|
||||||
|
StringFromFormat("/vol/%s/tmp/%016" PRIx64 ".ppcini", device_name.c_str(), title_id)));
|
||||||
|
return IPC_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 WFSI::CancelTitleImport(bool continue_install)
|
||||||
|
{
|
||||||
|
m_arc_unpacker.Reset();
|
||||||
|
|
||||||
|
if (!continue_install)
|
||||||
|
{
|
||||||
|
File::DeleteDirRecursively(
|
||||||
|
WFS::NativePath(StringFromFormat("/vol/%s/_install", m_device_name.c_str())));
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteTemporaryFiles(m_device_name, m_import_title_id);
|
||||||
|
|
||||||
|
return IPC_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 WFSI::CancelPatchImport(bool continue_install)
|
||||||
|
{
|
||||||
|
m_arc_unpacker.Reset();
|
||||||
|
|
||||||
|
if (!continue_install)
|
||||||
|
{
|
||||||
|
File::DeleteDirRecursively(WFS::NativePath(
|
||||||
|
StringFromFormat("/vol/%s/title/%s/%s/_patch", m_device_name.c_str(),
|
||||||
|
m_current_group_id_str.c_str(), m_current_title_id_str.c_str())));
|
||||||
|
|
||||||
|
if (m_patch_type == PatchType::PATCH_TYPE_2)
|
||||||
|
{
|
||||||
|
// Move back _default.dol to default.dol.
|
||||||
|
const std::string content_dir =
|
||||||
|
StringFromFormat("/vol/%s/title/%s/%s/content", m_device_name.c_str(),
|
||||||
|
m_current_group_id_str.c_str(), m_current_title_id_str.c_str());
|
||||||
|
File::Rename(WFS::NativePath(content_dir + "/_default.dol"),
|
||||||
|
WFS::NativePath(content_dir + "/default.dol"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteTemporaryFiles(m_device_name, m_current_title_id);
|
||||||
|
|
||||||
|
return IPC_SUCCESS;
|
||||||
|
}
|
||||||
} // namespace Device
|
} // namespace Device
|
||||||
} // namespace HLE
|
} // namespace HLE
|
||||||
} // namespace IOS
|
} // namespace IOS
|
||||||
|
|
|
@ -49,6 +49,9 @@ private:
|
||||||
void SetCurrentTitleIdAndGroupId(u64 tid, u16 gid);
|
void SetCurrentTitleIdAndGroupId(u64 tid, u16 gid);
|
||||||
void SetImportTitleIdAndGroupId(u64 tid, u16 gid);
|
void SetImportTitleIdAndGroupId(u64 tid, u16 gid);
|
||||||
|
|
||||||
|
s32 CancelTitleImport(bool continue_install);
|
||||||
|
s32 CancelPatchImport(bool continue_install);
|
||||||
|
|
||||||
std::string m_device_name;
|
std::string m_device_name;
|
||||||
|
|
||||||
mbedtls_aes_context m_aes_ctx;
|
mbedtls_aes_context m_aes_ctx;
|
||||||
|
|
Loading…
Reference in New Issue