fs/fsdev: Added fsdevMountDeviceSaveData/fsOpen_DeviceSaveData, and minor other adjustments.

This commit is contained in:
yellows8 2020-03-18 22:33:15 -04:00
parent 31f871a74f
commit f0f21507db
No known key found for this signature in database
GPG Key ID: 0AF90DA3F1E60E43
4 changed files with 37 additions and 3 deletions

View File

@ -33,6 +33,9 @@ Result fsdevMountSdmc(void);
/// Mounts the specified save data.
Result fsdevMountSaveData(const char *name, u64 application_id, AccountUid uid);
/// Mounts the specified DeviceSaveData.
Result fsdevMountDeviceSaveData(const char *name, u64 application_id);
/// Mounts the specified system save data.
Result fsdevMountSystemSaveData(const char *name, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid);

View File

@ -367,10 +367,14 @@ Result fsGetGlobalAccessLogMode(u32* out_mode);
Result fsCreate_SystemSaveDataWithOwner(FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid, u64 owner_id, s64 size, s64 journal_size, u32 flags);
Result fsCreate_SystemSaveData(FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, s64 size, s64 journal_size, u32 flags);
/// Wrapper(s) for fsOpenSaveDataFileSystem.
/// See FsSave for program_id and uid.
/// Wrapper for fsOpenSaveDataFileSystem.
/// See \ref FsSaveDataAttribute for application_id and uid.
Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid);
/// Wrapper for fsOpenSaveDataFileSystem, for opening DeviceSaveData.
/// See \ref FsSaveDataAttribute for application_id.
Result fsOpen_DeviceSaveData(FsFileSystem* out, u64 application_id);
/// Wrapper for fsOpenSaveDataFileSystemBySystemSaveDataId.
/// WARNING: You can brick when writing to SystemSaveData, if the data is corrupted etc.
Result fsOpen_SystemSaveData(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid);

View File

@ -465,6 +465,19 @@ Result fsdevMountSaveData(const char *name, u64 application_id, AccountUid uid)
return rc;
}
Result fsdevMountDeviceSaveData(const char *name, u64 application_id)
{
FsFileSystem fs;
Result rc = fsOpen_DeviceSaveData(&fs, application_id);
if(R_SUCCEEDED(rc))
{
int ret = fsdevMountDevice(name, fs);
if(ret==-1)
rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
}
return rc;
}
Result fsdevMountSystemSaveData(const char *name, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid)
{
FsFileSystem fs;

View File

@ -483,6 +483,10 @@ Result fsCreate_SystemSaveData(FsSaveDataSpaceId save_data_space_id, u64 system_
}
// Wrapper(s) for fsOpenSaveDataFileSystem.
static Result _fsOpen_SaveDataFs(FsFileSystem* out, FsSaveDataAttribute *attr) {
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, attr);
}
Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid) {
FsSaveDataAttribute attr;
@ -491,7 +495,17 @@ Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid) {
attr.uid = uid;
attr.save_data_type = FsSaveDataType_Account;
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
return _fsOpen_SaveDataFs(out, &attr);
}
Result fsOpen_DeviceSaveData(FsFileSystem* out, u64 application_id) {
FsSaveDataAttribute attr;
memset(&attr, 0, sizeof(attr));
attr.application_id = application_id;
attr.save_data_type = FsSaveDataType_Device;
return _fsOpen_SaveDataFs(out, &attr);
}
Result fsOpen_SystemSaveData(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid) {