diff options
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Fs')
11 files changed, 227 insertions, 106 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs index ba924db8..599025e3 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/FileSystemProxyHelper.cs @@ -25,7 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy try { - LocalStorage storage = new LocalStorage(pfsPath, FileAccess.Read, FileMode.Open); + LocalStorage storage = new(pfsPath, FileAccess.Read, FileMode.Open); using SharedRef<LibHac.Fs.Fsa.IFileSystem> nsp = new(new PartitionFileSystem(storage)); ImportTitleKeysFromNsp(nsp.Get, context.Device.System.KeySet); @@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy try { - Nca nca = new Nca(context.Device.System.KeySet, ncaStorage); + Nca nca = new(context.Device.System.KeySet, ncaStorage); if (!nca.SectionExists(NcaSectionType.Data)) { @@ -83,14 +83,14 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy if (archivePath.Extension == ".nsp" && File.Exists(archivePath.FullName)) { - FileStream pfsFile = new FileStream( + FileStream pfsFile = new( archivePath.FullName.TrimEnd(Path.DirectorySeparatorChar), FileMode.Open, FileAccess.Read); try { - PartitionFileSystem nsp = new PartitionFileSystem(pfsFile.AsStorage()); + PartitionFileSystem nsp = new(pfsFile.AsStorage()); ImportTitleKeysFromNsp(nsp, context.Device.System.KeySet); @@ -125,7 +125,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy if (result.IsSuccess()) { - Ticket ticket = new Ticket(ticketFile.Get.AsStream()); + Ticket ticket = new(ticketFile.Get.AsStream()); var titleKey = ticket.GetTitleKey(keySet); if (titleKey != null) diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs index b9759449..70d3a6bd 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs @@ -20,14 +20,12 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy ulong bufferAddress = context.Request.ReceiveBuff[0].Position; ulong bufferLen = context.Request.ReceiveBuff[0].Size; - using (var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true)) - { - Result result = _baseDirectory.Get.Read(out long entriesRead, new OutBuffer(region.Memory.Span)); + using var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true); + Result result = _baseDirectory.Get.Read(out long entriesRead, new OutBuffer(region.Memory.Span)); - context.ResponseData.Write(entriesRead); + context.ResponseData.Write(entriesRead); - return (ResultCode)result.Value; - } + return (ResultCode)result.Value; } [CommandCmif(1)] diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFile.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFile.cs index 4bc58ae5..dcc34a75 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFile.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFile.cs @@ -26,16 +26,14 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy context.RequestData.BaseStream.Position += 4; long offset = context.RequestData.ReadInt64(); - long size = context.RequestData.ReadInt64(); + long size = context.RequestData.ReadInt64(); - using (var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true)) - { - Result result = _baseFile.Get.Read(out long bytesRead, offset, new OutBuffer(region.Memory.Span), size, readOption); + using var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true); + Result result = _baseFile.Get.Read(out long bytesRead, offset, new OutBuffer(region.Memory.Span), size, readOption); - context.ResponseData.Write(bytesRead); + context.ResponseData.Write(bytesRead); - return (ResultCode)result.Value; - } + return (ResultCode)result.Value; } [CommandCmif(1)] @@ -48,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy context.RequestData.BaseStream.Position += 4; long offset = context.RequestData.ReadInt64(); - long size = context.RequestData.ReadInt64(); + long size = context.RequestData.ReadInt64(); byte[] data = new byte[context.Request.SendBuff[0].Size]; @@ -92,4 +90,4 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy } } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs index 9effa79d..4c5c5624 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IFileSystem.cs @@ -115,7 +115,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy if (result.IsSuccess()) { - IFile fileInterface = new IFile(ref file.Ref); + IFile fileInterface = new(ref file.Ref); MakeObject(context, fileInterface); } @@ -136,7 +136,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy if (result.IsSuccess()) { - IDirectory dirInterface = new IDirectory(ref dir.Ref); + IDirectory dirInterface = new(ref dir.Ref); MakeObject(context, dirInterface); } @@ -210,4 +210,4 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy } } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IStorage.cs b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IStorage.cs index 54c7b800..4299a6c7 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IStorage.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IStorage.cs @@ -1,7 +1,6 @@ using LibHac; using LibHac.Common; using LibHac.Sf; -using Ryujinx.HLE.HOS.Ipc; namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy { @@ -19,7 +18,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy public ResultCode Read(ServiceCtx context) { ulong offset = context.RequestData.ReadUInt64(); - ulong size = context.RequestData.ReadUInt64(); + ulong size = context.RequestData.ReadUInt64(); if (context.Request.ReceiveBuff.Count > 0) { @@ -32,12 +31,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy size = bufferLen; } - using (var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true)) - { - Result result = _baseStorage.Get.Read((long)offset, new OutBuffer(region.Memory.Span), (long)size); + using var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true); + Result result = _baseStorage.Get.Read((long)offset, new OutBuffer(region.Memory.Span), (long)size); - return (ResultCode)result.Value; - } + return (ResultCode)result.Value; } return ResultCode.Success; @@ -62,4 +59,4 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy } } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs index e961e9b1..644e1a17 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxy.cs @@ -18,7 +18,6 @@ using static Ryujinx.HLE.Utilities.StringUtils; using GameCardHandle = System.UInt32; using IFileSystem = LibHac.FsSrv.Sf.IFileSystem; using IStorage = LibHac.FsSrv.Sf.IStorage; -using RightsId = LibHac.Fs.RightsId; namespace Ryujinx.HLE.HOS.Services.Fs { @@ -48,14 +47,16 @@ namespace Ryujinx.HLE.HOS.Services.Fs // -> object<nn::fssrv::sf::IFileSystem> contentFs public ResultCode OpenFileSystemWithId(ServiceCtx context) { +#pragma warning disable IDE0059 // Remove unnecessary value assignment FileSystemType fileSystemType = (FileSystemType)context.RequestData.ReadInt32(); ulong titleId = context.RequestData.ReadUInt64(); +#pragma warning restore IDE0059 string switchPath = ReadUtf8String(context); - string fullPath = context.Device.FileSystem.SwitchPathToSystemPath(switchPath); + string fullPath = FileSystem.VirtualFileSystem.SwitchPathToSystemPath(switchPath); if (!File.Exists(fullPath)) { - if (fullPath.Contains(".")) + if (fullPath.Contains('.')) { ResultCode result = FileSystemProxyHelper.OpenFileSystemFromInternalFile(context, fullPath, out FileSystemProxy.IFileSystem fileSystem); @@ -70,7 +71,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs return ResultCode.PathDoesNotExist; } - FileStream fileStream = new FileStream(fullPath, FileMode.Open, FileAccess.Read); + FileStream fileStream = new(fullPath, FileMode.Open, FileAccess.Read); string extension = System.IO.Path.GetExtension(fullPath); if (extension == ".nca") @@ -109,7 +110,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenBisFileSystem(ref fileSystem.Ref, in path, bisPartitionId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -124,7 +128,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var storage = new SharedRef<IStorage>(); Result result = _baseFileSystemProxy.Get.OpenBisStorage(ref storage.Ref, bisPartitionId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref)); @@ -145,7 +152,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenSdCardFileSystem(ref fileSystem.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -221,7 +231,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode IsExFatSupported(ServiceCtx context) { Result result = _baseFileSystemProxy.Get.IsExFatSupported(out bool isSupported); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(isSupported); @@ -247,7 +260,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var storage = new SharedRef<IStorage>(); Result result = _baseFileSystemProxy.Get.OpenGameCardStorage(ref storage.Ref, handle, partitionId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IStorage(ref storage.Ref)); @@ -263,7 +279,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenGameCardFileSystem(ref fileSystem.Ref, handle, partitionId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -298,7 +317,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ushort index = context.RequestData.ReadUInt16(); Result result = _baseFileSystemProxy.Get.GetCacheStorageSize(out long dataSize, out long journalSize, index); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(dataSize); context.ResponseData.Write(journalSize); @@ -338,7 +360,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystem(ref fileSystem.Ref, spaceId, in attribute); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -354,7 +379,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataFileSystemBySystemSaveDataId(ref fileSystem.Ref, spaceId, in attribute); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -370,7 +398,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenReadOnlySaveDataFileSystem(ref fileSystem.Ref, spaceId, in attribute); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -388,7 +419,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs context.Memory.Read(context.Request.ReceiveBuff[0].Position, extraDataBuffer); Result result = _baseFileSystemProxy.Get.ReadSaveDataFileSystemExtraDataBySaveDataSpaceId(new OutBuffer(extraDataBuffer), spaceId, saveDataId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.Memory.Write(context.Request.ReceiveBuff[0].Position, extraDataBuffer); @@ -405,7 +439,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs context.Memory.Read(context.Request.ReceiveBuff[0].Position, extraDataBuffer); Result result = _baseFileSystemProxy.Get.ReadSaveDataFileSystemExtraData(new OutBuffer(extraDataBuffer), saveDataId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.Memory.Write(context.Request.ReceiveBuff[0].Position, extraDataBuffer); @@ -432,7 +469,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReader(ref infoReader.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref)); @@ -447,7 +487,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderBySaveDataSpaceId(ref infoReader.Ref, spaceId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref)); @@ -461,7 +504,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderOnlyCacheStorage(ref infoReader.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref)); @@ -477,7 +523,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataInternalStorageFileSystem(ref fileSystem.Ref, spaceId, saveDataId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -518,14 +567,15 @@ namespace Ryujinx.HLE.HOS.Services.Fs ulong bufferAddress = context.Request.ReceiveBuff[0].Position; ulong bufferLen = context.Request.ReceiveBuff[0].Size; - using (var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true)) + using var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true); + Result result = _baseFileSystemProxy.Get.FindSaveDataWithFilter(out long count, new OutBuffer(region.Memory.Span), spaceId, in filter); + if (result.IsFailure()) { - Result result = _baseFileSystemProxy.Get.FindSaveDataWithFilter(out long count, new OutBuffer(region.Memory.Span), spaceId, in filter); - if (result.IsFailure()) return (ResultCode)result.Value; - - context.ResponseData.Write(count); + return (ResultCode)result.Value; } + context.ResponseData.Write(count); + return ResultCode.Success; } @@ -537,7 +587,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var infoReader = new SharedRef<LibHac.FsSrv.Sf.ISaveDataInfoReader>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataInfoReaderWithFilter(ref infoReader.Ref, spaceId, in filter); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new ISaveDataInfoReader(ref infoReader.Ref)); @@ -554,7 +607,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs context.Memory.Read(context.Request.ReceiveBuff[0].Position, outputBuffer); Result result = _baseFileSystemProxy.Get.ReadSaveDataFileSystemExtraDataBySaveDataAttribute(new OutBuffer(outputBuffer), spaceId, in attribute); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.Memory.Write(context.Request.ReceiveBuff[0].Position, outputBuffer); @@ -589,7 +645,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs context.Memory.Read(context.Request.ReceiveBuff[0].Position, outputBuffer); Result result = _baseFileSystemProxy.Get.ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute(new OutBuffer(outputBuffer), spaceId, in attribute, new InBuffer(maskBuffer)); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.Memory.Write(context.Request.ReceiveBuff[0].Position, outputBuffer); @@ -605,7 +664,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var file = new SharedRef<LibHac.FsSrv.Sf.IFile>(); Result result = _baseFileSystemProxy.Get.OpenSaveDataMetaFile(ref file.Ref, spaceId, in attribute, metaType); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new IFile(ref file.Ref)); @@ -623,7 +685,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs context.Memory.Read(context.Request.ReceiveBuff[0].Position, outputBuffer); Result result = _baseFileSystemProxy.Get.ListAccessibleSaveDataOwnerId(out int readCount, new OutBuffer(outputBuffer), programId, startIndex, bufferCount); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(readCount); @@ -637,7 +702,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenImageDirectoryFileSystem(ref fileSystem.Ref, directoryId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -651,7 +719,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenBaseFileSystem(ref fileSystem.Ref, fileSystemId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -665,7 +736,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenContentStorageFileSystem(ref fileSystem.Ref, contentStorageId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -679,7 +753,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenCloudBackupWorkStorageFileSystem(ref fileSystem.Ref, storageId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -693,7 +770,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenCustomStorageFileSystem(ref fileSystem.Ref, customStorageId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -718,7 +798,9 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode OpenDataStorageByDataId(ServiceCtx context) { StorageId storageId = (StorageId)context.RequestData.ReadByte(); +#pragma warning disable IDE0059 // Remove unnecessary value assignment byte[] padding = context.RequestData.ReadBytes(7); +#pragma warning restore IDE0059 ulong titleId = context.RequestData.ReadUInt64(); // We do a mitm here to find if the request is for an AOC. @@ -750,7 +832,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs if (installedStorage != StorageId.None) { string contentPath = context.Device.System.ContentManager.GetInstalledContentPath(titleId, storageId, contentType); - string installPath = context.Device.FileSystem.SwitchPathToSystemPath(contentPath); + string installPath = FileSystem.VirtualFileSystem.SwitchPathToSystemPath(contentPath); if (!string.IsNullOrWhiteSpace(installPath)) { @@ -761,7 +843,7 @@ namespace Ryujinx.HLE.HOS.Services.Fs try { LibHac.Fs.IStorage ncaStorage = new LocalStorage(ncaPath, FileAccess.Read, FileMode.Open); - Nca nca = new Nca(context.Device.System.KeySet, ncaStorage); + Nca nca = new(context.Device.System.KeySet, ncaStorage); LibHac.Fs.IStorage romfsStorage = nca.OpenStorage(NcaSectionType.Data, context.Device.System.FsIntegrityCheckLevel); using var sharedStorage = new SharedRef<LibHac.Fs.IStorage>(romfsStorage); using var sfStorage = new SharedRef<IStorage>(new StorageInterfaceAdapter(ref sharedStorage.Ref)); @@ -829,7 +911,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var deviceOperator = new SharedRef<LibHac.FsSrv.Sf.IDeviceOperator>(); Result result = _baseFileSystemProxy.Get.OpenDeviceOperator(ref deviceOperator.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new IDeviceOperator(ref deviceOperator.Ref)); @@ -843,7 +928,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs long journalSize = context.RequestData.ReadInt64(); Result result = _baseFileSystemProxy.Get.QuerySaveDataTotalSize(out long totalSize, dataSize, journalSize); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(totalSize); @@ -907,7 +995,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ProgramId programId = context.RequestData.ReadStruct<ProgramId>(); Result result = _baseFileSystemProxy.Get.GetRightsId(out RightsId rightsId, programId, storageId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.WriteStruct(rightsId); @@ -935,7 +1026,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ref readonly var path = ref FileSystemProxyHelper.GetFspPath(context); Result result = _baseFileSystemProxy.Get.GetRightsIdByPath(out RightsId rightsId, in path); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.WriteStruct(rightsId); @@ -948,7 +1042,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ref readonly var path = ref FileSystemProxyHelper.GetFspPath(context); Result result = _baseFileSystemProxy.Get.GetRightsIdAndKeyGenerationByPath(out RightsId rightsId, out byte keyGeneration, in path); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(keyGeneration); context.ResponseData.BaseStream.Seek(7, SeekOrigin.Current); @@ -973,7 +1070,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs SaveDataSpaceId spaceId = context.RequestData.ReadStruct<SaveDataSpaceId>(); Result result = _baseFileSystemProxy.Get.GetFreeSpaceSizeForSaveData(out long freeSpaceSize, spaceId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(freeSpaceSize); @@ -1008,7 +1108,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ulong saveDataId = context.RequestData.ReadUInt64(); Result result = _baseFileSystemProxy.Get.QuerySaveDataInternalStorageTotalSize(out long size, spaceId, saveDataId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(size); @@ -1022,7 +1125,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ulong saveDataId = context.RequestData.ReadUInt64(); Result result = _baseFileSystemProxy.Get.GetSaveDataCommitId(out long commitId, spaceId, saveDataId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(commitId); @@ -1059,7 +1165,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode IsSdCardAccessible(ServiceCtx context) { Result result = _baseFileSystemProxy.Get.IsSdCardAccessible(out bool isAccessible); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(isAccessible); @@ -1072,7 +1181,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs ulong processId = context.RequestData.ReadUInt64(); Result result = _baseFileSystemProxy.Get.IsAccessFailureDetected(out bool isDetected, processId); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(isDetected); @@ -1099,7 +1211,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode GetAndClearErrorInfo(ServiceCtx context) { Result result = _baseFileSystemProxy.Get.GetAndClearErrorInfo(out FileSystemProxyErrorInfo errorInfo); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.WriteStruct(errorInfo); @@ -1195,7 +1310,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var fileSystem = new SharedRef<IFileSystem>(); Result result = _baseFileSystemProxy.Get.OpenRegisteredUpdatePartition(ref fileSystem.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new FileSystemProxy.IFileSystem(ref fileSystem.Ref)); @@ -1206,7 +1324,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode GetAndClearMemoryReportInfo(ServiceCtx context) { Result result = _baseFileSystemProxy.Get.GetAndClearMemoryReportInfo(out MemoryReportInfo reportInfo); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.WriteStruct(reportInfo); @@ -1217,7 +1338,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs public ResultCode GetProgramIndexForAccessLog(ServiceCtx context) { Result result = _baseFileSystemProxy.Get.GetProgramIndexForAccessLog(out int programIndex, out int programCount); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(programIndex); context.ResponseData.Write(programCount); @@ -1231,7 +1355,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs FsStackUsageThreadType threadType = context.RequestData.ReadStruct<FsStackUsageThreadType>(); Result result = _baseFileSystemProxy.Get.GetFsStackUsage(out uint usage, threadType); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } context.ResponseData.Write(usage); @@ -1290,7 +1417,10 @@ namespace Ryujinx.HLE.HOS.Services.Fs using var commitManager = new SharedRef<LibHac.FsSrv.Sf.IMultiCommitManager>(); Result result = _baseFileSystemProxy.Get.OpenMultiCommitManager(ref commitManager.Ref); - if (result.IsFailure()) return (ResultCode)result.Value; + if (result.IsFailure()) + { + return (ResultCode)result.Value; + } MakeObject(context, new IMultiCommitManager(ref commitManager.Ref)); @@ -1305,4 +1435,4 @@ namespace Ryujinx.HLE.HOS.Services.Fs } } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs index a40821b9..c3e22875 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/IFileSystemProxyForLoader.cs @@ -5,4 +5,4 @@ { public IFileSystemProxyForLoader(ServiceCtx context) { } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs b/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs index e11eadf5..4554a053 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/IProgramRegistry.cs @@ -5,4 +5,4 @@ { public IProgramRegistry(ServiceCtx context) { } } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs b/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs index 0611375b..022d7b81 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/ISaveDataInfoReader.cs @@ -20,14 +20,12 @@ namespace Ryujinx.HLE.HOS.Services.Fs ulong bufferAddress = context.Request.ReceiveBuff[0].Position; ulong bufferLen = context.Request.ReceiveBuff[0].Size; - using (var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true)) - { - Result result = _baseReader.Get.Read(out long readCount, new OutBuffer(region.Memory.Span)); + using var region = context.Memory.GetWritableRegion(bufferAddress, (int)bufferLen, true); + Result result = _baseReader.Get.Read(out long readCount, new OutBuffer(region.Memory.Span)); - context.ResponseData.Write(readCount); + context.ResponseData.Write(readCount); - return (ResultCode)result.Value; - } + return (ResultCode)result.Value; } protected override void Dispose(bool isDisposing) diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Fs/ResultCode.cs index 8f87142b..e04bd7be 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/ResultCode.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/ResultCode.cs @@ -2,15 +2,15 @@ namespace Ryujinx.HLE.HOS.Services.Fs { enum ResultCode { - ModuleId = 2, + ModuleId = 2, ErrorCodeShift = 9, Success = 0, - PathDoesNotExist = (1 << ErrorCodeShift) | ModuleId, - PathAlreadyExists = (2 << ErrorCodeShift) | ModuleId, - PathAlreadyInUse = (7 << ErrorCodeShift) | ModuleId, + PathDoesNotExist = (1 << ErrorCodeShift) | ModuleId, + PathAlreadyExists = (2 << ErrorCodeShift) | ModuleId, + PathAlreadyInUse = (7 << ErrorCodeShift) | ModuleId, PartitionNotFound = (1001 << ErrorCodeShift) | ModuleId, - InvalidInput = (6001 << ErrorCodeShift) | ModuleId + InvalidInput = (6001 << ErrorCodeShift) | ModuleId, } -}
\ No newline at end of file +} diff --git a/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs b/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs index f12c1661..369df9b6 100644 --- a/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs +++ b/src/Ryujinx.HLE/HOS/Services/Fs/Types/FileSystemType.cs @@ -2,11 +2,11 @@ { enum FileSystemType { - Logo = 2, - ContentControl = 3, - ContentManual = 4, - ContentMeta = 5, - ContentData = 6, - ApplicationPackage = 7 + Logo = 2, + ContentControl = 3, + ContentManual = 4, + ContentMeta = 5, + ContentData = 6, + ApplicationPackage = 7, } -}
\ No newline at end of file +} |