mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-27 13:26:52 +01:00
savedata: implement sceSaveDataConvert's synchronous checks
Co-authored-by: Mac <me@itsmemac.com> Co-authored-by: Senaxx <michelbeld@gmail.com>
This commit is contained in:
@@ -396,6 +396,38 @@ void TestClassicSavePaths() {
|
||||
CHECK(Search(1) == names);
|
||||
}
|
||||
|
||||
void TestConvert() {
|
||||
Reset("CONVERT");
|
||||
const auto source = DirName("save");
|
||||
const auto memory = DirName("sce_sdmemory");
|
||||
struct SaveDataConvert convert {};
|
||||
convert.user_id = 1;
|
||||
convert.src_dir_name = &memory;
|
||||
convert.dst_blocks = 96;
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_PARAMETER);
|
||||
// A missing source fails at once.
|
||||
convert.src_dir_name = &source;
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_NOT_FOUND);
|
||||
struct SaveDataMount3 mount {};
|
||||
mount.user_id = 1;
|
||||
mount.dir_name = &source;
|
||||
mount.mount_mode = 4;
|
||||
mount.blocks = 96;
|
||||
SaveDataMountResult mounted {};
|
||||
CHECK(SaveDataMount3(&mount, &mounted) == OK);
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_BUSY);
|
||||
CHECK(SaveDataUmount2(0, &mounted.mount_point) == OK);
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_NO_NEED_CONVERT);
|
||||
convert.dst_blocks = 95;
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_BLOCKS_FEWER_THAN_SRC);
|
||||
convert.dst_dir_name = &source;
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_EXISTS);
|
||||
for (const uint64_t blocks: {47u, 16385u}) {
|
||||
convert.dst_blocks = blocks;
|
||||
CHECK(SaveDataConvert(&convert) == SAVE_DATA_ERROR_PARAMETER);
|
||||
}
|
||||
}
|
||||
|
||||
void TestGuestSaveIsolation() {
|
||||
Reset("MULTIUSER");
|
||||
const auto name = DirName("slot");
|
||||
@@ -670,6 +702,7 @@ int main(int argc, char** argv) {
|
||||
TestIsolationAndSync();
|
||||
TestFailedWritePreservesSave();
|
||||
TestClassicSavePaths();
|
||||
TestConvert();
|
||||
TestGuestSaveIsolation();
|
||||
TestSaveAllocations();
|
||||
TestClassicSaveParams();
|
||||
|
||||
Reference in New Issue
Block a user