mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
fs/fs_dev: Added fsOpenReadOnlySaveDataFileSystem and fsOpen_SaveDataReadOnly/fsdevMountSaveDataReadOnly. Minor adjustments.
This commit is contained in:
parent
fa52f9b046
commit
c82c8b8760
@ -33,6 +33,10 @@ Result fsdevMountSdmc(void);
|
|||||||
/// Mounts the specified SaveData.
|
/// Mounts the specified SaveData.
|
||||||
Result fsdevMountSaveData(const char *name, u64 application_id, AccountUid uid);
|
Result fsdevMountSaveData(const char *name, u64 application_id, AccountUid uid);
|
||||||
|
|
||||||
|
/// Mounts the specified SaveData as ReadOnly.
|
||||||
|
/// Only available on [2.0.0+].
|
||||||
|
Result fsdevMountSaveDataReadOnly(const char *name, u64 application_id, AccountUid uid);
|
||||||
|
|
||||||
/// Mounts the specified BcatSaveData.
|
/// Mounts the specified BcatSaveData.
|
||||||
Result fsdevMountBcatSaveData(const char *name, u64 application_id);
|
Result fsdevMountBcatSaveData(const char *name, u64 application_id);
|
||||||
|
|
||||||
|
@ -323,16 +323,17 @@ Result fsOpenBisStorage(FsStorage* out, FsBisPartitionId partitionId);
|
|||||||
Result fsOpenSdCardFileSystem(FsFileSystem* out);
|
Result fsOpenSdCardFileSystem(FsFileSystem* out);
|
||||||
|
|
||||||
Result fsCreateSaveDataFileSystemBySystemSaveDataId(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info);
|
Result fsCreateSaveDataFileSystemBySystemSaveDataId(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info);
|
||||||
Result fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId save_data_space_id, u64 saveID); /// [2.0.0+]
|
Result fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId save_data_space_id, u64 saveID); ///< [2.0.0+]
|
||||||
|
|
||||||
Result fsIsExFatSupported(bool* out);
|
Result fsIsExFatSupported(bool* out);
|
||||||
|
|
||||||
Result fsOpenGameCardFileSystem(FsFileSystem* out, const FsGameCardHandle* handle, FsGameCardPartition partition);
|
Result fsOpenGameCardFileSystem(FsFileSystem* out, const FsGameCardHandle* handle, FsGameCardPartition partition);
|
||||||
|
|
||||||
Result fsExtendSaveDataFileSystem(FsSaveDataSpaceId save_data_space_id, u64 saveID, s64 dataSize, s64 journalSize); /// [3.0.0+]
|
Result fsExtendSaveDataFileSystem(FsSaveDataSpaceId save_data_space_id, u64 saveID, s64 dataSize, s64 journalSize); ///< [3.0.0+]
|
||||||
|
|
||||||
Result fsOpenSaveDataFileSystem(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr);
|
Result fsOpenSaveDataFileSystem(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr);
|
||||||
Result fsOpenSaveDataFileSystemBySystemSaveDataId(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr);
|
Result fsOpenSaveDataFileSystemBySystemSaveDataId(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr);
|
||||||
|
Result fsOpenReadOnlySaveDataFileSystem(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr); ///< [2.0.0+].
|
||||||
|
|
||||||
Result fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(void* buf, size_t len, FsSaveDataSpaceId save_data_space_id, u64 saveID);
|
Result fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(void* buf, size_t len, FsSaveDataSpaceId save_data_space_id, u64 saveID);
|
||||||
Result fsReadSaveDataFileSystemExtraData(void* buf, size_t len, u64 saveID);
|
Result fsReadSaveDataFileSystemExtraData(void* buf, size_t len, u64 saveID);
|
||||||
@ -342,7 +343,7 @@ Result fsOpenSaveDataInfoReader(FsSaveDataInfoReader* out, FsSaveDataSpaceId sav
|
|||||||
|
|
||||||
Result fsOpenImageDirectoryFileSystem(FsFileSystem* out, FsImageDirectoryId image_directory_id);
|
Result fsOpenImageDirectoryFileSystem(FsFileSystem* out, FsImageDirectoryId image_directory_id);
|
||||||
Result fsOpenContentStorageFileSystem(FsFileSystem* out, FsContentStorageId content_storage_id);
|
Result fsOpenContentStorageFileSystem(FsFileSystem* out, FsContentStorageId content_storage_id);
|
||||||
Result fsOpenCustomStorageFileSystem(FsFileSystem* out, FsCustomStorageId custom_storage_id); /// [7.0.0+]
|
Result fsOpenCustomStorageFileSystem(FsFileSystem* out, FsCustomStorageId custom_storage_id); ///< [7.0.0+]
|
||||||
|
|
||||||
Result fsOpenDataStorageByCurrentProcess(FsStorage* out);
|
Result fsOpenDataStorageByCurrentProcess(FsStorage* out);
|
||||||
Result fsOpenDataStorageByDataId(FsStorage* out, u64 dataId, NcmStorageId storageId);
|
Result fsOpenDataStorageByDataId(FsStorage* out, u64 dataId, NcmStorageId storageId);
|
||||||
@ -371,6 +372,11 @@ Result fsCreate_SystemSaveData(FsSaveDataSpaceId save_data_space_id, u64 system_
|
|||||||
/// See \ref FsSaveDataAttribute for application_id and uid.
|
/// See \ref FsSaveDataAttribute for application_id and uid.
|
||||||
Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid);
|
Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid);
|
||||||
|
|
||||||
|
/// Wrapper for fsOpenReadOnlySaveDataFileSystem.
|
||||||
|
/// Only available on [2.0.0+].
|
||||||
|
/// See \ref FsSaveDataAttribute for application_id and uid.
|
||||||
|
Result fsOpen_SaveDataReadOnly(FsFileSystem* out, u64 application_id, AccountUid uid);
|
||||||
|
|
||||||
/// Wrapper for fsOpenSaveDataFileSystem, for opening BcatSaveData.
|
/// Wrapper for fsOpenSaveDataFileSystem, for opening BcatSaveData.
|
||||||
Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id);
|
Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id);
|
||||||
|
|
||||||
|
@ -465,6 +465,19 @@ Result fsdevMountSaveData(const char *name, u64 application_id, AccountUid uid)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result fsdevMountSaveDataReadOnly(const char *name, u64 application_id, AccountUid uid)
|
||||||
|
{
|
||||||
|
FsFileSystem fs;
|
||||||
|
Result rc = fsOpen_SaveDataReadOnly(&fs, application_id, uid);
|
||||||
|
if(R_SUCCEEDED(rc))
|
||||||
|
{
|
||||||
|
int ret = fsdevMountDevice(name, fs);
|
||||||
|
if(ret==-1)
|
||||||
|
rc = MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
Result fsdevMountBcatSaveData(const char *name, u64 application_id)
|
Result fsdevMountBcatSaveData(const char *name, u64 application_id)
|
||||||
{
|
{
|
||||||
FsFileSystem fs;
|
FsFileSystem fs;
|
||||||
|
@ -293,6 +293,22 @@ Result fsOpenSaveDataFileSystemBySystemSaveDataId(FsFileSystem* out, FsSaveDataS
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result fsOpenReadOnlySaveDataFileSystem(FsFileSystem* out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr) {
|
||||||
|
if (hosversionBefore(2,0,0))
|
||||||
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
|
|
||||||
|
const struct {
|
||||||
|
u8 save_data_space_id;
|
||||||
|
u8 pad[7];
|
||||||
|
FsSaveDataAttribute attr;
|
||||||
|
} in = { (u8)save_data_space_id, {0}, *attr };
|
||||||
|
|
||||||
|
return _fsObjectDispatchIn(&g_fsSrv, 53, in,
|
||||||
|
.out_num_objects = 1,
|
||||||
|
.out_objects = &out->s,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Result fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(void* buf, size_t len, FsSaveDataSpaceId save_data_space_id, u64 saveID) {
|
Result fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(void* buf, size_t len, FsSaveDataSpaceId save_data_space_id, u64 saveID) {
|
||||||
if (hosversionBefore(3,0,0))
|
if (hosversionBefore(3,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
@ -494,6 +510,17 @@ Result fsOpen_SaveData(FsFileSystem* out, u64 application_id, AccountUid uid) {
|
|||||||
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
|
return fsOpenSaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result fsOpen_SaveDataReadOnly(FsFileSystem* out, u64 application_id, AccountUid uid) {
|
||||||
|
FsSaveDataAttribute attr;
|
||||||
|
|
||||||
|
memset(&attr, 0, sizeof(attr));
|
||||||
|
attr.application_id = application_id;
|
||||||
|
attr.uid = uid;
|
||||||
|
attr.save_data_type = FsSaveDataType_Account;
|
||||||
|
|
||||||
|
return fsOpenReadOnlySaveDataFileSystem(out, FsSaveDataSpaceId_User, &attr);
|
||||||
|
}
|
||||||
|
|
||||||
Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id) {
|
Result fsOpen_BcatSaveData(FsFileSystem* out, u64 application_id) {
|
||||||
FsSaveDataAttribute attr;
|
FsSaveDataAttribute attr;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user