diff --git a/src/LibHac/FsService/FileSystemProxy.cs b/src/LibHac/FsService/FileSystemProxy.cs index 64a688fc..1725da97 100644 --- a/src/LibHac/FsService/FileSystemProxy.cs +++ b/src/LibHac/FsService/FileSystemProxy.cs @@ -1176,6 +1176,12 @@ namespace LibHac.FsService return Result.Success; } + public Result OpenMultiCommitManager(out IMultiCommitManager commitManager) + { + commitManager = new MultiCommitManager(this); + return Result.Success; + } + internal Result OpenMultiCommitContextSaveData(out IFileSystem fileSystem) { fileSystem = default; diff --git a/src/LibHac/FsService/IFileSystemProxy.cs b/src/LibHac/FsService/IFileSystemProxy.cs index e4b1c9ce..15711c93 100644 --- a/src/LibHac/FsService/IFileSystemProxy.cs +++ b/src/LibHac/FsService/IFileSystemProxy.cs @@ -100,5 +100,6 @@ namespace LibHac.FsService Result GetProgramIndexForAccessLog(out int programIndex, out int programCount); Result OverrideSaveDataTransferTokenSignVerificationKey(ReadOnlySpan key); Result CorruptSaveDataFileSystemByOffset(SaveDataSpaceId spaceId, ulong saveDataId, long offset); + Result OpenMultiCommitManager(out IMultiCommitManager commitManager); } } \ No newline at end of file diff --git a/src/LibHac/FsService/Impl/MultiCommitManager.cs b/src/LibHac/FsService/Impl/MultiCommitManager.cs index db7bbf9c..66361e15 100644 --- a/src/LibHac/FsService/Impl/MultiCommitManager.cs +++ b/src/LibHac/FsService/Impl/MultiCommitManager.cs @@ -142,13 +142,13 @@ namespace LibHac.FsService.Impl return rc; } - [StructLayout(LayoutKind.Sequential, Size = 0x18)] + [StructLayout(LayoutKind.Explicit, Size = 0x18)] private struct CommitContext { - public int Version; - public CommitState State; - public int FileSystemCount; - public long CommitCount; // I think? + [FieldOffset(0x00)] public int Version; + [FieldOffset(0x04)] public CommitState State; + [FieldOffset(0x08)] public int FileSystemCount; + [FieldOffset(0x10)] public long CommitCount; // I think? } private enum CommitState