Deduplicate some code

This commit is contained in:
Ada 2024-03-08 13:12:39 +00:00
parent d4594446bd
commit 6e48c7fbdd
No known key found for this signature in database
GPG key ID: 066E56D5C9F4E50D
2 changed files with 15 additions and 5 deletions

View file

@ -230,6 +230,10 @@ void ExtSaveDataArchive::clear(const FSPath& path) const {
} }
void ExtSaveDataArchive::saveIcon(const std::vector<u8>& data) const { void ExtSaveDataArchive::saveIcon(const std::vector<u8>& data) const {
if (data.empty()) {
return;
}
const fs::path iconPath = IOFile::getAppData() / backingFolder / "icon"; const fs::path iconPath = IOFile::getAppData() / backingFolder / "icon";
IOFile file(iconPath, "wb"); IOFile file(iconPath, "wb");
file.setSize(data.size()); file.setSize(data.size());

View file

@ -572,22 +572,28 @@ void FSService::createExtSaveData(u32 messagePointer) {
.duplicateData = false .duplicateData = false
}; };
FSPath path = readPath(PathType::Binary, messagePointer + 4, 32); FSPath path = readPath(PathType::Binary, messagePointer + 4, 32);
FSPath smdh = readPath(PathType::Binary, smdhPointer, smdhSize);
ExtSaveDataArchive* selected = nullptr;
switch(mediaType) { switch(mediaType) {
case MediaType::NAND: case MediaType::NAND:
sharedExtSaveData_nand.format(path, info); selected = &sharedExtSaveData_nand;
sharedExtSaveData_nand.saveIcon(smdh.binary);
break; break;
case MediaType::SD: case MediaType::SD:
extSaveData_sdmc.format(path, info); selected = &extSaveData_sdmc;
extSaveData_sdmc.saveIcon(smdh.binary);
break; break;
default: default:
Helpers::warn("FS::CreateExtSaveData - Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType)); Helpers::warn("FS::CreateExtSaveData - Unhandled ExtSaveData MediaType %d", static_cast<s32>(mediaType));
break; break;
} }
if (selected != nullptr) {
selected->format(path, info);
if(smdhSize > 0) {
const FSPath smdh = readPath(PathType::Binary, smdhPointer, smdhSize);
selected->saveIcon(smdh.binary);
}
}
mem.write32(messagePointer, IPC::responseHeader(0x0851, 1, 0)); mem.write32(messagePointer, IPC::responseHeader(0x0851, 1, 0));
mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 4, Result::Success);
} }