WFSI: Adapt FINALIZE_TITLE_INSTALL for patch support.

This commit is contained in:
Pierre Bourdon committed 2017-08-22 23:14:00 +02:00
1 parent db24c94c6e
commit 76bbfbb511
1 file changed
+20 -2
+20 -2
View File
@@ -244,7 +244,9 @@ IPCCommandResult WFSI::IOCtl(const IOCtlRequest& request)
case IOCTL_WFSI_FINALIZE_TITLE_INSTALL: case IOCTL_WFSI_FINALIZE_TITLE_INSTALL:
{ {
// TODO(wfs): Handle patches. std::string tmd_path;
if (m_patch_type == NOT_A_PATCH)
{
std::string title_install_dir = StringFromFormat("/vol/%s/_install/%s", m_device_name.c_str(), std::string title_install_dir = StringFromFormat("/vol/%s/_install/%s", m_device_name.c_str(),
m_import_title_id_str.c_str()); m_import_title_id_str.c_str());
std::string title_final_dir = std::string title_final_dir =
@@ -252,14 +254,30 @@ IPCCommandResult WFSI::IOCtl(const IOCtlRequest& request)
m_import_group_id_str.c_str(), m_import_title_id_str.c_str()); m_import_group_id_str.c_str(), m_import_title_id_str.c_str());
File::Rename(WFS::NativePath(title_install_dir), WFS::NativePath(title_final_dir)); File::Rename(WFS::NativePath(title_install_dir), WFS::NativePath(title_final_dir));
std::string tmd_path = StringFromFormat("/vol/%s/title/%s/%s/meta/%016" PRIx64 ".tmd", tmd_path = StringFromFormat("/vol/%s/title/%s/%s/meta/%016" PRIx64 ".tmd",
m_device_name.c_str(), m_import_group_id_str.c_str(), m_device_name.c_str(), m_import_group_id_str.c_str(),
m_import_title_id_str.c_str(), m_import_title_id); m_import_title_id_str.c_str(), m_import_title_id);
}
else
{
std::string patch_dir =
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());
File::DeleteDirRecursively(WFS::NativePath(patch_dir));
tmd_path = StringFromFormat("/vol/%s/title/%s/%s/meta/%016" PRIx64 ".tmd",
m_device_name.c_str(), m_current_group_id_str.c_str(),
m_current_title_id_str.c_str(), m_import_title_id);
}
File::IOFile tmd_file(WFS::NativePath(tmd_path), "wb"); File::IOFile tmd_file(WFS::NativePath(tmd_path), "wb");
tmd_file.WriteBytes(m_tmd.GetBytes().data(), m_tmd.GetBytes().size()); tmd_file.WriteBytes(m_tmd.GetBytes().data(), m_tmd.GetBytes().size());
break; break;
} }
case IOCTL_WFSI_FINALIZE_PATCH_INSTALL:
break;
case IOCTL_WFSI_DELETE_TITLE: case IOCTL_WFSI_DELETE_TITLE:
// Bytes 0-4: ?? // Bytes 0-4: ??
// Bytes 4-8: game id // Bytes 4-8: game id