aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
diff options
context:
space:
mode:
authorTSRBerry <20988865+TSRBerry@users.noreply.github.com>2023-07-16 19:31:14 +0200
committerGitHub <noreply@github.com>2023-07-16 19:31:14 +0200
commit326749498bed4360e5a4b11fc67d5ec7cb9a3076 (patch)
treeae21fb26f99b401ca4e9efaab72b679a81c22369 /src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
parentfec8291c17fa106c28f58b56419e90d49a41a1ea (diff)
[Ryujinx.HLE] Address dotnet-format issues (#5380)1.1.962
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0052 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2208 warnings * Address or silence dotnet format CA1806 and a few CA1854 warnings * Address dotnet format CA2211 warnings * Address dotnet format CA1822 warnings * Address or silence dotnet format CA1069 warnings * Make dotnet format succeed in style mode * Address or silence dotnet format CA2211 warnings * Address review comments * Address dotnet format CA2208 warnings properly * Make ProcessResult readonly * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Add previously silenced warnings back I have no clue how these disappeared * Revert formatting changes for while and for-loops * Format if-blocks correctly * Run dotnet format style after rebase * Run dotnet format whitespace after rebase * Run dotnet format style after rebase * Run dotnet format analyzers after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Disable 'prefer switch expression' rule * Add comments to disabled warnings * Fix a few disabled warnings * Fix naming rule violation, Convert shader properties to auto-property and convert values to const * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Start working on disabled warnings * Fix and silence a few dotnet-format warnings again * Run dotnet format after rebase * Use using declaration instead of block syntax * Address IDE0251 warnings * Address a few disabled IDE0060 warnings * Silence IDE0060 in .editorconfig * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Fix naming rule violations * Fix typo * Add trailing commas, use targeted new and use array initializer * Fix build issues * Fix remaining build issues * Remove SuppressMessage for CA1069 where possible * Address dotnet format issues * Address formatting issues Co-authored-by: Ac_K <acoustik666@gmail.com> * Add GetHashCode implementation for RenderingSurfaceInfo * Explicitly silence CA1822 for every affected method in Syscall * Address formatting issues in Demangler.cs * Address review feedback Co-authored-by: Ac_K <acoustik666@gmail.com> * Revert marking service methods as static * Next dotnet format pass * Address review feedback --------- Co-authored-by: Ac_K <acoustik666@gmail.com>
Diffstat (limited to 'src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs')
-rw-r--r--src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs125
1 files changed, 83 insertions, 42 deletions
diff --git a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
index 83604b42..807020c6 100644
--- a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
+++ b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
@@ -26,14 +26,14 @@ namespace Ryujinx.HLE.FileSystem
{
public class VirtualFileSystem : IDisposable
{
- public static string SafeNandPath = Path.Combine(AppDataManager.DefaultNandDir, "safe");
- public static string SystemNandPath = Path.Combine(AppDataManager.DefaultNandDir, "system");
- public static string UserNandPath = Path.Combine(AppDataManager.DefaultNandDir, "user");
+ public static readonly string SafeNandPath = Path.Combine(AppDataManager.DefaultNandDir, "safe");
+ public static readonly string SystemNandPath = Path.Combine(AppDataManager.DefaultNandDir, "system");
+ public static readonly string UserNandPath = Path.Combine(AppDataManager.DefaultNandDir, "user");
- public KeySet KeySet { get; private set; }
- public EmulatedGameCard GameCard { get; private set; }
- public EmulatedSdCard SdCard { get; private set; }
- public ModLoader ModLoader { get; private set; }
+ public KeySet KeySet { get; private set; }
+ public EmulatedGameCard GameCard { get; private set; }
+ public EmulatedSdCard SdCard { get; private set; }
+ public ModLoader ModLoader { get; private set; }
private readonly ConcurrentDictionary<ulong, Stream> _romFsByPid;
@@ -85,15 +85,15 @@ namespace Ryujinx.HLE.FileSystem
return _romFsByPid[pid];
}
- public string GetFullPath(string basePath, string fileName)
+ public static string GetFullPath(string basePath, string fileName)
{
if (fileName.StartsWith("//"))
{
- fileName = fileName.Substring(2);
+ fileName = fileName[2..];
}
else if (fileName.StartsWith('/'))
{
- fileName = fileName.Substring(1);
+ fileName = fileName[1..];
}
else
{
@@ -110,10 +110,10 @@ namespace Ryujinx.HLE.FileSystem
return fullPath;
}
- internal string GetSdCardPath() => MakeFullPath(AppDataManager.DefaultSdcardDir);
- public string GetNandPath() => MakeFullPath(AppDataManager.DefaultNandDir);
+ internal static string GetSdCardPath() => MakeFullPath(AppDataManager.DefaultSdcardDir);
+ public static string GetNandPath() => MakeFullPath(AppDataManager.DefaultNandDir);
- public string SwitchPathToSystemPath(string switchPath)
+ public static string SwitchPathToSystemPath(string switchPath)
{
string[] parts = switchPath.Split(":");
@@ -125,7 +125,7 @@ namespace Ryujinx.HLE.FileSystem
return GetFullPath(MakeFullPath(parts[0]), parts[1]);
}
- public string SystemPathToSwitchPath(string systemPath)
+ public static string SystemPathToSwitchPath(string systemPath)
{
string baseSystemPath = AppDataManager.BaseDirPath + Path.DirectorySeparatorChar;
@@ -148,7 +148,7 @@ namespace Ryujinx.HLE.FileSystem
return null;
}
- private string MakeFullPath(string path, bool isDirectory = true)
+ private static string MakeFullPath(string path, bool isDirectory = true)
{
// Handles Common Switch Content Paths
switch (path)
@@ -185,7 +185,7 @@ namespace Ryujinx.HLE.FileSystem
public void InitializeFsServer(LibHac.Horizon horizon, out HorizonClient fsServerClient)
{
- LocalFileSystem serverBaseFs = new LocalFileSystem(AppDataManager.BaseDirPath);
+ LocalFileSystem serverBaseFs = new(AppDataManager.BaseDirPath);
fsServerClient = horizon.CreatePrivilegedHorizonClient();
var fsServer = new FileSystemServer(fsServerClient);
@@ -207,7 +207,7 @@ namespace Ryujinx.HLE.FileSystem
DeviceOperator = fsServerObjects.DeviceOperator,
ExternalKeySet = KeySet.ExternalKeySet,
FsCreators = fsServerObjects.FsCreators,
- RandomGenerator = randomGenerator
+ RandomGenerator = randomGenerator,
};
FileSystemServerInitializer.InitializeWithConfig(fsServerClient, fsServer, fsServerConfig);
@@ -282,16 +282,28 @@ namespace Ryujinx.HLE.FileSystem
public static Result FixExtraData(HorizonClient hos)
{
Result rc = GetSystemSaveList(hos, out List<ulong> systemSaveIds);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
rc = FixUnindexedSystemSaves(hos, systemSaveIds);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
rc = FixExtraDataInSpaceId(hos, SaveDataSpaceId.System);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
rc = FixExtraDataInSpaceId(hos, SaveDataSpaceId.User);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
return Result.Success;
}
@@ -303,15 +315,23 @@ namespace Ryujinx.HLE.FileSystem
using var iterator = new UniqueRef<SaveDataIterator>();
Result rc = hos.Fs.OpenSaveDataIterator(ref iterator.Ref, spaceId);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
while (true)
{
rc = iterator.Get.ReadSaveDataInfo(out long count, info);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
if (count == 0)
+ {
return Result.Success;
+ }
for (int i = 0; i < count; i++)
{
@@ -351,7 +371,9 @@ namespace Ryujinx.HLE.FileSystem
private static Result CreateSaveDataDirectory(HorizonClient hos, in SaveDataInfo info)
{
if (info.SpaceId != SaveDataSpaceId.User && info.SpaceId != SaveDataSpaceId.System)
+ {
return Result.Success;
+ }
const string MountName = "SaveDir";
var mountNameU8 = MountName.ToU8Span();
@@ -360,11 +382,15 @@ namespace Ryujinx.HLE.FileSystem
{
SaveDataSpaceId.System => BisPartitionId.System,
SaveDataSpaceId.User => BisPartitionId.User,
- _ => throw new ArgumentOutOfRangeException()
+ _ => throw new ArgumentOutOfRangeException(nameof(info), info.SpaceId, null),
};
Result rc = hos.Fs.MountBis(mountNameU8, partitionId);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
+
try
{
var path = $"{MountName}:/save/{info.SaveDataId:x16}".ToU8Span();
@@ -391,28 +417,38 @@ namespace Ryujinx.HLE.FileSystem
var mountName = "system".ToU8Span();
DirectoryHandle handle = default;
- List<ulong> localList = new List<ulong>();
+ List<ulong> localList = new();
try
{
Result rc = hos.Fs.MountBis(mountName, BisPartitionId.System);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
rc = hos.Fs.OpenDirectory(out handle, "system:/save".ToU8Span(), OpenDirectoryMode.All);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
- DirectoryEntry entry = new DirectoryEntry();
+ DirectoryEntry entry = new();
while (true)
{
rc = hos.Fs.ReadDirectory(out long readCount, SpanHelpers.AsSpan(ref entry), handle);
- if (rc.IsFailure()) return rc;
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
if (readCount == 0)
+ {
break;
+ }
- if (Utf8Parser.TryParse(entry.Name, out ulong saveDataId, out int bytesRead, 'x') &&
- bytesRead == 16 && (long)saveDataId < 0)
+ if (Utf8Parser.TryParse(entry.Name, out ulong saveDataId, out int bytesRead, 'x') && bytesRead == 16 && (long)saveDataId < 0)
{
localList.Add(saveDataId);
}
@@ -440,7 +476,7 @@ namespace Ryujinx.HLE.FileSystem
// Only save data IDs added to SystemExtraDataFixInfo will be fixed.
private static Result FixUnindexedSystemSaves(HorizonClient hos, List<ulong> existingSaveIds)
{
- foreach (var fixInfo in SystemExtraDataFixInfo)
+ foreach (var fixInfo in _systemExtraDataFixInfo)
{
if (!existingSaveIds.Contains(fixInfo.StaticSaveDataId))
{
@@ -472,7 +508,9 @@ namespace Ryujinx.HLE.FileSystem
if (!rc.IsSuccess())
{
if (!ResultFs.TargetNotFound.Includes(rc))
+ {
return rc;
+ }
// We'll reach this point only if the save data directory exists but it's not in the save data indexer.
// Creating the save will add it to the indexer while leaving its existing contents intact.
@@ -492,7 +530,7 @@ namespace Ryujinx.HLE.FileSystem
OwnerId = info.OwnerId,
Flags = info.Flags,
DataSize = info.DataSize,
- JournalSize = info.JournalSize
+ JournalSize = info.JournalSize,
};
// Make a mask for writing the entire extra data
@@ -507,9 +545,11 @@ namespace Ryujinx.HLE.FileSystem
{
wasFixNeeded = true;
- Result rc = hos.Fs.Impl.ReadSaveDataFileSystemExtraData(out SaveDataExtraData extraData, info.SpaceId,
- info.SaveDataId);
- if (rc.IsFailure()) return rc;
+ Result rc = hos.Fs.Impl.ReadSaveDataFileSystemExtraData(out SaveDataExtraData extraData, info.SpaceId, info.SaveDataId);
+ if (rc.IsFailure())
+ {
+ return rc;
+ }
// The extra data should have program ID or static save data ID set if it's valid.
// We only try to fix the extra data if the info from the save data indexer has a program ID or static save data ID.
@@ -543,7 +583,7 @@ namespace Ryujinx.HLE.FileSystem
else
{
// Try to match the system save with one of the known saves
- foreach (ExtraDataFixInfo fixInfo in SystemExtraDataFixInfo)
+ foreach (ExtraDataFixInfo fixInfo in _systemExtraDataFixInfo)
{
if (extraData.Attribute.StaticSaveDataId == fixInfo.StaticSaveDataId)
{
@@ -573,7 +613,7 @@ namespace Ryujinx.HLE.FileSystem
public long JournalSize;
}
- private static readonly ExtraDataFixInfo[] SystemExtraDataFixInfo =
+ private static readonly ExtraDataFixInfo[] _systemExtraDataFixInfo =
{
new ExtraDataFixInfo()
{
@@ -581,7 +621,7 @@ namespace Ryujinx.HLE.FileSystem
OwnerId = 0x010000000000001F,
Flags = SaveDataFlags.KeepAfterResettingSystemSaveDataWithoutUserSaveData,
DataSize = 0x10000,
- JournalSize = 0x10000
+ JournalSize = 0x10000,
},
new ExtraDataFixInfo()
{
@@ -589,12 +629,13 @@ namespace Ryujinx.HLE.FileSystem
OwnerId = 0x0100000000001009,
Flags = SaveDataFlags.None,
DataSize = 0xC000,
- JournalSize = 0xC000
- }
+ JournalSize = 0xC000,
+ },
};
public void Dispose()
{
+ GC.SuppressFinalize(this);
Dispose(true);
}