From 90e223e75ba142224d56858e94caf53c0546c08e Mon Sep 17 00:00:00 2001 From: Pablo Curiel Date: Tue, 15 Dec 2020 00:20:03 -0400 Subject: [PATCH] fs: Added fsCreateSaveDataFileSystem() and fsDeleteSaveDataFileSystem(). --- nx/include/switch/services/fs.h | 9 +++++++++ nx/source/services/fs.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/nx/include/switch/services/fs.h b/nx/include/switch/services/fs.h index e2e1d38e..bd9b2d5d 100644 --- a/nx/include/switch/services/fs.h +++ b/nx/include/switch/services/fs.h @@ -88,6 +88,13 @@ typedef struct { u8 unused[0x190]; ///< Uninitialized. } FsSaveDataExtraData; +/// FsSaveMeta +typedef struct { + u32 meta_file_size; + u8 meta_index; + u8 unk[0x0B]; +} FsSaveMeta; + /// SaveDataCreationInfo typedef struct { s64 save_data_size; ///< Size of the save data. @@ -323,6 +330,8 @@ Result fsOpenBisStorage(FsStorage* out, FsBisPartitionId partitionId); /// Do not call this directly, see fs_dev.h. Result fsOpenSdCardFileSystem(FsFileSystem* out); +Result fsDeleteSaveDataFileSystem(u64 application_id); +Result fsCreateSaveDataFileSystem(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info, const FsSaveMeta* meta); Result fsCreateSaveDataFileSystemBySystemSaveDataId(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info); Result fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId save_data_space_id, u64 saveID); ///< [2.0.0+] diff --git a/nx/source/services/fs.c b/nx/source/services/fs.c index d4b6321c..f2e61d38 100644 --- a/nx/source/services/fs.c +++ b/nx/source/services/fs.c @@ -224,6 +224,24 @@ Result fsOpenSdCardFileSystem(FsFileSystem* out) { return _fsCmdGetSession(&g_fsSrv, &out->s, 18); } +Result fsDeleteSaveDataFileSystem(u64 application_id) { + const struct { + u64 application_id; + } in = { application_id }; + + return _fsObjectDispatchIn(&g_fsSrv, 21, in); +} + +Result fsCreateSaveDataFileSystem(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info, const FsSaveMeta* meta) { + const struct { + FsSaveDataAttribute attr; + FsSaveDataCreationInfo creation_info; + FsSaveMeta meta; + } in = { *attr, *creation_info, *meta }; + + return _fsObjectDispatchIn(&g_fsSrv, 22, in); +} + Result fsCreateSaveDataFileSystemBySystemSaveDataId(const FsSaveDataAttribute* attr, const FsSaveDataCreationInfo* creation_info) { const struct { FsSaveDataAttribute attr;