fs/fs_dev: Added fsOpen_TemporaryStorage/fsOpen_CacheStorage and fsdevMountTemporaryStorage/fsdevMountCacheStorage. Minor adjustments.

This commit is contained in:
yellows8 2020-04-03 19:16:26 -04:00
parent 918fe2b4d6
commit fa52f9b046
No known key found for this signature in database
GPG Key ID: 0AF90DA3F1E60E43
4 changed files with 72 additions and 7 deletions

View File

@ -39,6 +39,14 @@ Result fsdevMountBcatSaveData(const char *name, u64 application_id);
/// Mounts the specified DeviceSaveData.
Result fsdevMountDeviceSaveData(const char *name, u64 application_id);
/// Mounts the TemporaryStorage for the current process.
/// Only available on [3.0.0+].
Result fsdevMountTemporaryStorage(const char *name);
/// Mounts the specified CacheStorage.
/// Only available on [3.0.0+].
Result fsdevMountCacheStorage(const char *name, u64 application_id, u16 save_data_index);
/// Mounts the specified SystemSaveData.
Result fsdevMountSystemSaveData(const char *name, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid);

View File

@ -378,6 +378,15 @@ Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id);
/// See \ref FsSaveDataAttribute for application_id.
Result fsOpen_DeviceSaveData(FsFileSystem* out, u64 application_id);
/// Wrapper for fsOpenSaveDataFileSystem, for opening TemporaryStorage.
/// Only available on [3.0.0+].
Result fsOpen_TemporaryStorage(FsFileSystem* out);
/// Wrapper for fsOpenSaveDataFileSystem, for opening CacheStorage.
/// Only available on [3.0.0+].
/// See \ref FsSaveDataAttribute for application_id.
Result fsOpen_CacheStorage(FsFileSystem* out, u64 application_id, u16 save_data_index);
/// Wrapper for fsOpenSaveDataFileSystemBySystemSaveDataId, for opening SystemSaveData.
/// 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

@ -491,6 +491,32 @@ Result fsdevMountDeviceSaveData(const char *name, u64 application_id)
return rc;
}
Result fsdevMountTemporaryStorage(const char *name)
{
FsFileSystem fs;
Result rc = fsOpen_TemporaryStorage(&fs);
if(R_SUCCEEDED(rc))
{
int ret = fsdevMountDevice(name, fs);
if(ret==-1)
rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
}
return rc;
}
Result fsdevMountCacheStorage(const char *name, u64 application_id, u16 save_data_index)
{
FsFileSystem fs;
Result rc = fsOpen_CacheStorage(&fs, application_id, save_data_index);
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,10 +483,6 @@ 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;
@ -495,7 +491,7 @@ Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid) {
attr.uid = uid;
attr.save_data_type = FsSaveDataType_Account;
return _fsOpen_SaveDataFs(out, &attr);
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
}
Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id) {
@ -505,7 +501,7 @@ Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id) {
attr.application_id = application_id;
attr.save_data_type = FsSaveDataType_Bcat;
return _fsOpen_SaveDataFs(out, &attr);
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
}
Result fsOpen_DeviceSaveData(FsFileSystem* out, u64 application_id) {
@ -515,7 +511,33 @@ Result fsOpen_DeviceSaveData(FsFileSystem* out, u64 application_id) {
attr.application_id = application_id;
attr.save_data_type = FsSaveDataType_Device;
return _fsOpen_SaveDataFs(out, &attr);
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
}
Result fsOpen_TemporaryStorage(FsFileSystem* out) {
if (hosversionBefore(3,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
FsSaveDataAttribute attr;
memset(&attr, 0, sizeof(attr));
attr.save_data_type = FsSaveDataType_Temporary;
return fsOpenSaveDataFileSystem(out, FsSaveDataType_Temporary, &attr);
}
Result fsOpen_CacheStorage(FsFileSystem* out, u64 application_id, u16 save_data_index) {
if (hosversionBefore(3,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
FsSaveDataAttribute attr;
memset(&attr, 0, sizeof(attr));
attr.application_id = application_id;
attr.save_data_type = FsSaveDataType_Cache;
attr.save_data_index = save_data_index;
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
}
Result fsOpen_SystemSaveData(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid) {