mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Use UTF-8 literals where applicable
This commit is contained in:
parent
506a4691bb
commit
c97c0f8297
29 changed files with 237 additions and 801 deletions
|
@ -330,69 +330,36 @@ internal class DeliveryCacheStorageManager
|
|||
return 1;
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> DeliveryCacheMountNamePrefix => // bcat-dc-
|
||||
new[] { (byte)'b', (byte)'c', (byte)'a', (byte)'t', (byte)'-', (byte)'d', (byte)'c', (byte)'-' };
|
||||
/// <summary>"<c>bcat-dc-</c>"</summary>
|
||||
private static ReadOnlySpan<byte> DeliveryCacheMountNamePrefix => "bcat-dc-"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> RootPath => // :/
|
||||
new[] { (byte)':', (byte)'/' };
|
||||
/// <summary>"<c>:/</c>"</summary>
|
||||
private static ReadOnlySpan<byte> RootPath => ":/"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> PassphrasePath => // :/passphrase.bin
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'p', (byte) 'a', (byte) 's', (byte) 's', (byte) 'p', (byte) 'h',
|
||||
(byte) 'r', (byte) 'a', (byte) 's', (byte) 'e', (byte) '.', (byte) 'b', (byte) 'i', (byte) 'n'
|
||||
};
|
||||
/// <summary>"<c>:/passphrase.bin</c>"</summary>
|
||||
private static ReadOnlySpan<byte> PassphrasePath => ":/passphrase.bin"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> DeliveryListPath => // :/list.msgpack
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'l', (byte) 'i', (byte) 's', (byte) 't', (byte) '.', (byte) 'm',
|
||||
(byte) 's', (byte) 'g', (byte) 'p', (byte) 'a', (byte) 'c', (byte) 'k'
|
||||
};
|
||||
/// <summary>"<c>:/list.msgpack</c>"</summary>
|
||||
private static ReadOnlySpan<byte> DeliveryListPath => ":/list.msgpack"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> EtagPath => // :/etag.bin
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'e', (byte) 't', (byte) 'a', (byte) 'g', (byte) '.', (byte) 'b',
|
||||
(byte) 'i', (byte) 'n'
|
||||
};
|
||||
/// <summary>"<c>:/etag.bin</c>"</summary>
|
||||
private static ReadOnlySpan<byte> EtagPath => ":/etag.bin"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> NaRequiredPath => // :/na_required
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'n', (byte) 'a', (byte) '_', (byte) 'r', (byte) 'e', (byte) 'q',
|
||||
(byte) 'u', (byte) 'i', (byte) 'r', (byte) 'e', (byte) 'd'
|
||||
};
|
||||
/// <summary>"<c>:/na_required</c>"</summary>
|
||||
private static ReadOnlySpan<byte> NaRequiredPath => ":/na_required"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> IndexLockPath => // :/index.lock
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'i', (byte) 'n', (byte) 'd', (byte) 'e', (byte) 'x', (byte) '.',
|
||||
(byte) 'l', (byte) 'o', (byte) 'c', (byte) 'k'
|
||||
};
|
||||
/// <summary>"<c>:/index.lock</c>"</summary>
|
||||
private static ReadOnlySpan<byte> IndexLockPath => ":/index.lock"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> DirectoriesPath => // :/directories
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'd', (byte) 'i', (byte) 'r', (byte) 'e', (byte) 'c', (byte) 't',
|
||||
(byte) 'o', (byte) 'r', (byte) 'i', (byte) 'e', (byte) 's'
|
||||
};
|
||||
/// <summary>"<c>:/directories</c>"</summary>
|
||||
private static ReadOnlySpan<byte> DirectoriesPath => ":/directories"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> FilesMetaFileName => // files.meta
|
||||
new[]
|
||||
{
|
||||
(byte) 'f', (byte) 'i', (byte) 'l', (byte) 'e', (byte) 's', (byte) '.', (byte) 'm', (byte) 'e',
|
||||
(byte) 't', (byte) 'a'
|
||||
};
|
||||
/// <summary>"<c>files.meta</c>"</summary>
|
||||
private static ReadOnlySpan<byte> FilesMetaFileName => "files.meta"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> DirectoriesMetaPath => // :/directories.meta
|
||||
new[]
|
||||
{
|
||||
(byte) ':', (byte) '/', (byte) 'd', (byte) 'i', (byte) 'r', (byte) 'e', (byte) 'c', (byte) 't',
|
||||
(byte) 'o', (byte) 'r', (byte) 'i', (byte) 'e', (byte) 's', (byte) '.', (byte) 'm', (byte) 'e',
|
||||
(byte) 't', (byte) 'a'
|
||||
};
|
||||
/// <summary>"<c>:/directories.meta</c>"</summary>
|
||||
private static ReadOnlySpan<byte> DirectoriesMetaPath => ":/directories.meta"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> FilesDirectoryName => // files
|
||||
new[] { (byte)'f', (byte)'i', (byte)'l', (byte)'e', (byte)'s' };
|
||||
/// <summary>"<c>files</c>"</summary>
|
||||
private static ReadOnlySpan<byte> FilesDirectoryName => "files"u8;
|
||||
}
|
|
@ -537,9 +537,5 @@ public class Package1
|
|||
return (Package1Section)(-1);
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> LegacyDateCutoff => // 20181107
|
||||
new[]
|
||||
{
|
||||
(byte) '2', (byte) '0', (byte) '1', (byte) '8', (byte) '1', (byte) '1', (byte) '0', (byte) '7'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LegacyDateCutoff => "20181107"u8;
|
||||
}
|
|
@ -45,5 +45,5 @@ public static class Log
|
|||
}
|
||||
|
||||
/// <summary>"<c>$</c>"</summary>
|
||||
public static ReadOnlySpan<byte> EmptyModuleName => new[] { (byte)'$' }; // "$"
|
||||
public static ReadOnlySpan<byte> EmptyModuleName => "$"u8;
|
||||
}
|
|
@ -165,6 +165,7 @@ namespace LibHac.Fs.Impl
|
|||
private Buffer32 _buffer;
|
||||
|
||||
[UnscopedRef]
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private ReadOnlySpan<byte> ToValueString(int value)
|
||||
{
|
||||
bool success = Utf8Formatter.TryFormat(value, _buffer.Bytes, out int length);
|
||||
|
@ -180,9 +181,9 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case Priority.Realtime: return new[] { (byte)'R', (byte)'e', (byte)'a', (byte)'l', (byte)'t', (byte)'i', (byte)'m', (byte)'e' };
|
||||
case Priority.Normal: return new[] { (byte)'N', (byte)'o', (byte)'r', (byte)'m', (byte)'a', (byte)'l' };
|
||||
case Priority.Low: return new[] { (byte)'L', (byte)'o', (byte)'w' };
|
||||
case Priority.Realtime: return "Realtime"u8;
|
||||
case Priority.Normal: return "Normal"u8;
|
||||
case Priority.Low: return "Low"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -192,10 +193,10 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case PriorityRaw.Realtime: return new[] { (byte)'R', (byte)'e', (byte)'a', (byte)'l', (byte)'t', (byte)'i', (byte)'m', (byte)'e' };
|
||||
case PriorityRaw.Normal: return new[] { (byte)'N', (byte)'o', (byte)'r', (byte)'m', (byte)'a', (byte)'l' };
|
||||
case PriorityRaw.Low: return new[] { (byte)'L', (byte)'o', (byte)'w' };
|
||||
case PriorityRaw.Background: return new[] { (byte)'B', (byte)'a', (byte)'c', (byte)'k', (byte)'g', (byte)'r', (byte)'o', (byte)'u', (byte)'n', (byte)'d' };
|
||||
case PriorityRaw.Realtime: return "Realtime"u8;
|
||||
case PriorityRaw.Normal: return "Normal"u8;
|
||||
case PriorityRaw.Low: return "Low"u8;
|
||||
case PriorityRaw.Background: return "Background"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -205,8 +206,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case ImageDirectoryId.Nand: return new[] { (byte)'N', (byte)'a', (byte)'n', (byte)'d' };
|
||||
case ImageDirectoryId.SdCard: return new[] { (byte)'S', (byte)'d', (byte)'C', (byte)'a', (byte)'r', (byte)'d' };
|
||||
case ImageDirectoryId.Nand: return "Nand"u8;
|
||||
case ImageDirectoryId.SdCard: return "SdCard"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -216,9 +217,9 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case ContentStorageId.System: return new[] { (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
case ContentStorageId.User: return new[] { (byte)'U', (byte)'s', (byte)'e', (byte)'r' };
|
||||
case ContentStorageId.SdCard: return new[] { (byte)'S', (byte)'d', (byte)'C', (byte)'a', (byte)'r', (byte)'d' };
|
||||
case ContentStorageId.System: return "System"u8;
|
||||
case ContentStorageId.User: return "User"u8;
|
||||
case ContentStorageId.SdCard: return "SdCard"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -228,10 +229,10 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case GameCardPartition.Update: return new[] { (byte)'U', (byte)'p', (byte)'d', (byte)'a', (byte)'t', (byte)'e' };
|
||||
case GameCardPartition.Normal: return new[] { (byte)'N', (byte)'o', (byte)'r', (byte)'m', (byte)'a', (byte)'l' };
|
||||
case GameCardPartition.Secure: return new[] { (byte)'S', (byte)'e', (byte)'c', (byte)'u', (byte)'r', (byte)'e' };
|
||||
case GameCardPartition.Logo: return new[] { (byte)'L', (byte)'o', (byte)'g', (byte)'o' };
|
||||
case GameCardPartition.Update: return "Update"u8;
|
||||
case GameCardPartition.Normal: return "Normal"u8;
|
||||
case GameCardPartition.Secure: return "Secure"u8;
|
||||
case GameCardPartition.Logo: return "Logo"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -241,10 +242,10 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case SaveDataSpaceId.System: return new[] { (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
case SaveDataSpaceId.User: return new[] { (byte)'U', (byte)'s', (byte)'e', (byte)'r' };
|
||||
case SaveDataSpaceId.SdSystem: return new[] { (byte)'S', (byte)'d', (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
case SaveDataSpaceId.ProperSystem: return new[] { (byte)'P', (byte)'r', (byte)'o', (byte)'p', (byte)'e', (byte)'r', (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
case SaveDataSpaceId.System: return "System"u8;
|
||||
case SaveDataSpaceId.User: return "User"u8;
|
||||
case SaveDataSpaceId.SdSystem: return "SdSystem"u8;
|
||||
case SaveDataSpaceId.ProperSystem: return "ProperSystem"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -254,8 +255,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case SaveDataFormatType.Normal: return new[] { (byte)'N', (byte)'o', (byte)'r', (byte)'m', (byte)'a', (byte)'l' };
|
||||
case SaveDataFormatType.NoJournal: return new[] { (byte)'N', (byte)'o', (byte)'J', (byte)'o', (byte)'u', (byte)'r', (byte)'n', (byte)'a', (byte)'l' };
|
||||
case SaveDataFormatType.Normal: return "Normal"u8;
|
||||
case SaveDataFormatType.NoJournal: return "NoJournal"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -265,11 +266,11 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case ContentType.Meta: return new[] { (byte)'M', (byte)'e', (byte)'t', (byte)'a' };
|
||||
case ContentType.Control: return new[] { (byte)'C', (byte)'o', (byte)'n', (byte)'t', (byte)'r', (byte)'o', (byte)'l' };
|
||||
case ContentType.Manual: return new[] { (byte)'M', (byte)'a', (byte)'n', (byte)'u', (byte)'a', (byte)'l' };
|
||||
case ContentType.Logo: return new[] { (byte)'L', (byte)'o', (byte)'g', (byte)'o' };
|
||||
case ContentType.Data: return new[] { (byte)'D', (byte)'a', (byte)'t', (byte)'a' };
|
||||
case ContentType.Meta: return "Meta"u8;
|
||||
case ContentType.Control: return "Control"u8;
|
||||
case ContentType.Manual: return "Manual"u8;
|
||||
case ContentType.Logo: return "Logo"u8;
|
||||
case ContentType.Data: return "Data"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -279,23 +280,23 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case BisPartitionId.BootPartition1Root: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'i', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'1', (byte)'R', (byte)'o', (byte)'o', (byte)'t' };
|
||||
case BisPartitionId.BootPartition2Root: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'i', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'2', (byte)'R', (byte)'o', (byte)'o', (byte)'t' };
|
||||
case BisPartitionId.UserDataRoot: return new[] { (byte)'U', (byte)'s', (byte)'e', (byte)'r', (byte)'D', (byte)'a', (byte)'t', (byte)'a', (byte)'R', (byte)'o', (byte)'o', (byte)'t' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part1: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'1' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part2: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'2' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part3: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'3' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part4: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'4' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part5: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'5' };
|
||||
case BisPartitionId.BootConfigAndPackage2Part6: return new[] { (byte)'B', (byte)'o', (byte)'o', (byte)'t', (byte)'C', (byte)'o', (byte)'n', (byte)'f', (byte)'i', (byte)'g', (byte)'A', (byte)'n', (byte)'d', (byte)'P', (byte)'a', (byte)'c', (byte)'k', (byte)'a', (byte)'g', (byte)'e', (byte)'2', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'6' };
|
||||
case BisPartitionId.CalibrationBinary: return new[] { (byte)'C', (byte)'a', (byte)'l', (byte)'i', (byte)'b', (byte)'r', (byte)'a', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'B', (byte)'i', (byte)'n', (byte)'a', (byte)'r', (byte)'y' };
|
||||
case BisPartitionId.CalibrationFile: return new[] { (byte)'C', (byte)'a', (byte)'l', (byte)'i', (byte)'b', (byte)'r', (byte)'a', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'F', (byte)'i', (byte)'l', (byte)'e' };
|
||||
case BisPartitionId.SafeMode: return new[] { (byte)'S', (byte)'a', (byte)'f', (byte)'e', (byte)'M', (byte)'o', (byte)'d', (byte)'e' };
|
||||
case BisPartitionId.User: return new[] { (byte)'U', (byte)'s', (byte)'e', (byte)'r' };
|
||||
case BisPartitionId.System: return new[] { (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
case BisPartitionId.SystemProperEncryption: return new[] { (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m', (byte)'P', (byte)'r', (byte)'o', (byte)'p', (byte)'e', (byte)'r', (byte)'E', (byte)'n', (byte)'c', (byte)'r', (byte)'y', (byte)'p', (byte)'t', (byte)'i', (byte)'o', (byte)'n' };
|
||||
case BisPartitionId.SystemProperPartition: return new[] { (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m', (byte)'P', (byte)'r', (byte)'o', (byte)'p', (byte)'e', (byte)'r', (byte)'P', (byte)'a', (byte)'r', (byte)'t', (byte)'i', (byte)'t', (byte)'i', (byte)'o', (byte)'n' };
|
||||
case (BisPartitionId)35: return new[] { (byte)'I', (byte)'n', (byte)'v', (byte)'a', (byte)'l', (byte)'i', (byte)'d' };
|
||||
case BisPartitionId.BootPartition1Root: return "BootPartition1Root"u8;
|
||||
case BisPartitionId.BootPartition2Root: return "BootPartition2Root"u8;
|
||||
case BisPartitionId.UserDataRoot: return "UserDataRoot"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part1: return "BootConfigAndPackage2Part1"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part2: return "BootConfigAndPackage2Part2"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part3: return "BootConfigAndPackage2Part3"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part4: return "BootConfigAndPackage2Part4"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part5: return "BootConfigAndPackage2Part5"u8;
|
||||
case BisPartitionId.BootConfigAndPackage2Part6: return "BootConfigAndPackage2Part6"u8;
|
||||
case BisPartitionId.CalibrationBinary: return "CalibrationBinary"u8;
|
||||
case BisPartitionId.CalibrationFile: return "CalibrationFile"u8;
|
||||
case BisPartitionId.SafeMode: return "SafeMode"u8;
|
||||
case BisPartitionId.User: return "User"u8;
|
||||
case BisPartitionId.System: return "System"u8;
|
||||
case BisPartitionId.SystemProperEncryption: return "SystemProperEncryption"u8;
|
||||
case BisPartitionId.SystemProperPartition: return "SystemProperPartition"u8;
|
||||
case (BisPartitionId)35: return "Invalid"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -305,8 +306,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case DirectoryEntryType.Directory: return new[] { (byte)'D', (byte)'i', (byte)'r', (byte)'e', (byte)'c', (byte)'t', (byte)'o', (byte)'r', (byte)'y' };
|
||||
case DirectoryEntryType.File: return new[] { (byte)'F', (byte)'i', (byte)'l', (byte)'e' };
|
||||
case DirectoryEntryType.Directory: return "Directory"u8;
|
||||
case DirectoryEntryType.File: return "File"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -316,7 +317,7 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value.Flags)
|
||||
{
|
||||
case MountHostOptionFlag.PseudoCaseSensitive: return new[] { (byte)'M', (byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)'H', (byte)'o', (byte)'s', (byte)'t', (byte)'O', (byte)'p', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'F', (byte)'l', (byte)'a', (byte)'g', (byte)'_', (byte)'P', (byte)'s', (byte)'e', (byte)'u', (byte)'d', (byte)'o', (byte)'C', (byte)'a', (byte)'s', (byte)'e', (byte)'S', (byte)'e', (byte)'n', (byte)'s', (byte)'i', (byte)'t', (byte)'i', (byte)'v', (byte)'e' };
|
||||
case MountHostOptionFlag.PseudoCaseSensitive: return "MountHostOptionFlag_PseudoCaseSensitive"u8;
|
||||
default: return ToValueString((int)value.Flags);
|
||||
}
|
||||
}
|
||||
|
@ -326,12 +327,12 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case MemoryCapacity.Capacity1GB: return new[] { (byte)'1', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity2GB: return new[] { (byte)'2', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity4GB: return new[] { (byte)'4', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity8GB: return new[] { (byte)'8', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity16GB: return new[] { (byte)'1', (byte)'6', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity32GB: return new[] { (byte)'3', (byte)'2', (byte)'G', (byte)'B' };
|
||||
case MemoryCapacity.Capacity1GB: return "1GB"u8;
|
||||
case MemoryCapacity.Capacity2GB: return "2GB"u8;
|
||||
case MemoryCapacity.Capacity4GB: return "4GB"u8;
|
||||
case MemoryCapacity.Capacity8GB: return "8GB"u8;
|
||||
case MemoryCapacity.Capacity16GB: return "16GB"u8;
|
||||
case MemoryCapacity.Capacity32GB: return "32GB"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -341,8 +342,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case SelSec.T1: return new[] { (byte)'T', (byte)'1' };
|
||||
case SelSec.T2: return new[] { (byte)'T', (byte)'2' };
|
||||
case SelSec.T1: return "T1"u8;
|
||||
case SelSec.T2: return "T2"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -352,8 +353,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case KekIndex.Version0: return new[] { (byte)'V', (byte)'e', (byte)'r', (byte)'s', (byte)'i', (byte)'o', (byte)'n', (byte)'0' };
|
||||
case KekIndex.ForDev: return new[] { (byte)'V', (byte)'e', (byte)'r', (byte)'s', (byte)'i', (byte)'o', (byte)'n', (byte)'F', (byte)'o', (byte)'r', (byte)'D', (byte)'e', (byte)'v' };
|
||||
case KekIndex.Version0: return "Version0"u8;
|
||||
case KekIndex.ForDev: return "VersionForDev"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -363,8 +364,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case AccessControl1ClockRate.ClockRate25MHz: return new[] { (byte)'2', (byte)'5', (byte)' ', (byte)'M', (byte)'H', (byte)'z' };
|
||||
case AccessControl1ClockRate.ClockRate50MHz: return new[] { (byte)'5', (byte)'0', (byte)' ', (byte)'M', (byte)'H', (byte)'z' };
|
||||
case AccessControl1ClockRate.ClockRate25MHz: return "25 MHz"u8;
|
||||
case AccessControl1ClockRate.ClockRate50MHz: return "50 MHz"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -374,12 +375,12 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case FwVersion.ForDev: return new[] { (byte)'F', (byte)'o', (byte)'r', (byte)'D', (byte)'e', (byte)'v' };
|
||||
case FwVersion.Since1_0_0: return new[] { (byte)'1', (byte)'.', (byte)'0', (byte)'.', (byte)'0' };
|
||||
case FwVersion.Since4_0_0: return new[] { (byte)'4', (byte)'.', (byte)'0', (byte)'.', (byte)'0' };
|
||||
case FwVersion.Since9_0_0: return new[] { (byte)'9', (byte)'.', (byte)'0', (byte)'.', (byte)'0' };
|
||||
case FwVersion.Since11_0_0: return new[] { (byte)'1', (byte)'1', (byte)'.', (byte)'0', (byte)'.', (byte)'0' };
|
||||
case FwVersion.Since12_0_0: return new[] { (byte)'1', (byte)'2', (byte)'.', (byte)'0', (byte)'.', (byte)'0' };
|
||||
case FwVersion.ForDev: return "ForDev"u8;
|
||||
case FwVersion.Since1_0_0: return "1.0.0"u8;
|
||||
case FwVersion.Since4_0_0: return "4.0.0"u8;
|
||||
case FwVersion.Since9_0_0: return "9.0.0"u8;
|
||||
case FwVersion.Since11_0_0: return "11.0.0"u8;
|
||||
case FwVersion.Since12_0_0: return "12.0.0"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -389,8 +390,8 @@ namespace LibHac.Fs.Impl
|
|||
{
|
||||
switch (value)
|
||||
{
|
||||
case GameCardCompatibilityType.Normal: return new[] { (byte)'N', (byte)'o', (byte)'r', (byte)'m', (byte)'a', (byte)'l' };
|
||||
case GameCardCompatibilityType.Terra: return new[] { (byte)'T', (byte)'e', (byte)'r', (byte)'r', (byte)'a' };
|
||||
case GameCardCompatibilityType.Normal: return "Normal"u8;
|
||||
case GameCardCompatibilityType.Terra: return "Terra"u8;
|
||||
default: return ToValueString((int)value);
|
||||
}
|
||||
}
|
||||
|
@ -828,456 +829,174 @@ namespace LibHac.Fs.Impl
|
|||
internal static class AccessLogStrings
|
||||
{
|
||||
/// <summary>"<c>$fs</c>"</summary>
|
||||
public static ReadOnlySpan<byte> FsModuleName => // "$fs"
|
||||
new[] { (byte)'$', (byte)'f', (byte)'s' };
|
||||
public static ReadOnlySpan<byte> FsModuleName => "$fs"u8;
|
||||
|
||||
/// <summary>"<c>0.17.0</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogLibHacVersion => // "0.17.0"
|
||||
new[]
|
||||
{
|
||||
(byte)'0', (byte)'.', (byte)'1', (byte)'7', (byte)'.', (byte)'0'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogLibHacVersion => "0.17.0"u8;
|
||||
|
||||
/// <summary>"<c>"</c>"</summary>
|
||||
public static byte LogQuote => (byte)'"';
|
||||
|
||||
/// <summary>"<c>true</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogTrue => // "true"
|
||||
new[] { (byte)'t', (byte)'r', (byte)'u', (byte)'e' };
|
||||
public static ReadOnlySpan<byte> LogTrue => "true"u8;
|
||||
|
||||
/// <summary>"<c>false</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogFalse => // "false"
|
||||
new[] { (byte)'f', (byte)'a', (byte)'l', (byte)'s', (byte)'e' };
|
||||
public static ReadOnlySpan<byte> LogFalse => "false"u8;
|
||||
|
||||
/// <summary>"<c>, entry_buffer_count: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogEntryBufferCount => // ", entry_buffer_count: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'e', (byte)'n', (byte)'t', (byte)'r', (byte)'y', (byte)'_',
|
||||
(byte)'b', (byte)'u', (byte)'f', (byte)'f', (byte)'e', (byte)'r', (byte)'_', (byte)'c',
|
||||
(byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogEntryBufferCount => ", entry_buffer_count: "u8;
|
||||
|
||||
/// <summary>"<c>, entry_count: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogEntryCount => // ", entry_count: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'e', (byte)'n', (byte)'t', (byte)'r', (byte)'y', (byte)'_',
|
||||
(byte)'c', (byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogEntryCount => ", entry_count: "u8;
|
||||
|
||||
/// <summary>"<c>, offset: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogOffset => // ", offset: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'o', (byte)'f', (byte)'f', (byte)'s', (byte)'e', (byte)'t',
|
||||
(byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogOffset => ", offset: "u8;
|
||||
|
||||
/// <summary>"<c>, size: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSize => // ", size: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'i', (byte)'z', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSize => ", size: "u8;
|
||||
|
||||
/// <summary>"<c>, read_size: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogReadSize => // ", read_size: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'r', (byte)'e', (byte)'a', (byte)'d', (byte)'_', (byte)'s',
|
||||
(byte)'i', (byte)'z', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogReadSize => ", read_size: "u8;
|
||||
|
||||
/// <summary>"<c>, write_option: Flush</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogWriteOptionFlush => // ", write_option: Flush"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'w', (byte)'r', (byte)'i', (byte)'t', (byte)'e', (byte)'_',
|
||||
(byte)'o', (byte)'p', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)':', (byte)' ',
|
||||
(byte)'F', (byte)'l', (byte)'u', (byte)'s', (byte)'h'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogWriteOptionFlush => ", write_option: Flush"u8;
|
||||
|
||||
/// <summary>"<c>, open_mode: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogOpenMode => // ", open_mode: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'o', (byte)'p', (byte)'e', (byte)'n', (byte)'_', (byte)'m',
|
||||
(byte)'o', (byte)'d', (byte)'e', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogOpenMode => ", open_mode: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, path: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogPath => // ", path: ""
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'p', (byte)'a', (byte)'t', (byte)'h', (byte)':', (byte)' ',
|
||||
(byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogPath => ", path: \""u8;
|
||||
|
||||
/// <summary>"<c>", new_path: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogNewPath => // "", new_path: ""
|
||||
new[]
|
||||
{
|
||||
(byte)'"', (byte)',', (byte)' ', (byte)'n', (byte)'e', (byte)'w', (byte)'_', (byte)'p',
|
||||
(byte)'a', (byte)'t', (byte)'h', (byte)':', (byte)' ', (byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogNewPath => "\", new_path: \""u8;
|
||||
|
||||
/// <summary>"<c>", entry_type: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogEntryType => // "", entry_type: "
|
||||
new[]
|
||||
{
|
||||
(byte)'"', (byte)',', (byte)' ', (byte)'e', (byte)'n', (byte)'t', (byte)'r', (byte)'y',
|
||||
(byte)'_', (byte)'t', (byte)'y', (byte)'p', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogEntryType => "\", entry_type: "u8;
|
||||
|
||||
/// <summary>"<c>, name: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogName => // ", name: ""
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'n', (byte)'a', (byte)'m', (byte)'e', (byte)':', (byte)' ',
|
||||
(byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogName => ", name: \""u8;
|
||||
|
||||
/// <summary>"<c>", commit_option: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogCommitOption => // "", commit_option: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)'"', (byte)',', (byte)' ', (byte)'c', (byte)'o', (byte)'m', (byte)'m', (byte)'i',
|
||||
(byte)'t', (byte)'_', (byte)'o', (byte)'p', (byte)'t', (byte)'i', (byte)'o', (byte)'n',
|
||||
(byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogCommitOption => "\", commit_option: 0x"u8;
|
||||
|
||||
/// <summary>"<c>", is_mounted: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogIsMounted => // "", is_mounted: ""
|
||||
new[]
|
||||
{
|
||||
(byte)'"', (byte)',', (byte)' ', (byte)'i', (byte)'s', (byte)'_', (byte)'m', (byte)'o',
|
||||
(byte)'u', (byte)'n', (byte)'t', (byte)'e', (byte)'d', (byte)':', (byte)' ', (byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogIsMounted => "\", is_mounted: \""u8;
|
||||
|
||||
/// <summary>"<c>, applicationid: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogApplicationId => // ", applicationid: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'a', (byte)'p', (byte)'p', (byte)'l', (byte)'i', (byte)'c',
|
||||
(byte)'a', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'i', (byte)'d', (byte)':',
|
||||
(byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogApplicationId => ", applicationid: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, programid: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogProgramId => // ", programid: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'p', (byte)'r', (byte)'o', (byte)'g', (byte)'r', (byte)'a',
|
||||
(byte)'m', (byte)'i', (byte)'d', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogProgramId => ", programid: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, dataid: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogDataId => // ", dataid: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'d', (byte)'a', (byte)'t', (byte)'a', (byte)'i', (byte)'d',
|
||||
(byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogDataId => ", dataid: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, bispartitionid: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogBisPartitionId => // ", bispartitionid: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'b', (byte)'i', (byte)'s', (byte)'p', (byte)'a', (byte)'r',
|
||||
(byte)'t', (byte)'i', (byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)'i', (byte)'d',
|
||||
(byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogBisPartitionId => ", bispartitionid: "u8;
|
||||
|
||||
/// <summary>"<c>, content_type: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogContentType => // ", content_type: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'c', (byte)'o', (byte)'n', (byte)'t', (byte)'e', (byte)'n',
|
||||
(byte)'t', (byte)'_', (byte)'t', (byte)'y', (byte)'p', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogContentType => ", content_type: "u8;
|
||||
|
||||
/// <summary>"<c>, contentstorageid: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogContentStorageId => // ", contentstorageid: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'c', (byte)'o', (byte)'n', (byte)'t', (byte)'e', (byte)'n',
|
||||
(byte)'t', (byte)'s', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)'i', (byte)'d', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogContentStorageId => ", contentstorageid: "u8;
|
||||
|
||||
/// <summary>"<c>, imagedirectoryid: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogImageDirectoryId => // ", imagedirectoryid: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'i', (byte)'m', (byte)'a', (byte)'g', (byte)'e', (byte)'d',
|
||||
(byte)'i', (byte)'r', (byte)'e', (byte)'c', (byte)'t', (byte)'o', (byte)'r', (byte)'y',
|
||||
(byte)'i', (byte)'d', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogImageDirectoryId => ", imagedirectoryid: "u8;
|
||||
|
||||
/// <summary>"<c>, gamecard_handle: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogGameCardHandle => // ", gamecard_handle: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'g', (byte)'a', (byte)'m', (byte)'e', (byte)'c', (byte)'a',
|
||||
(byte)'r', (byte)'d', (byte)'_', (byte)'h', (byte)'a', (byte)'n', (byte)'d', (byte)'l',
|
||||
(byte)'e', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogGameCardHandle => ", gamecard_handle: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, gamecard_partition: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogGameCardPartition => // ", gamecard_partition: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'g', (byte)'a', (byte)'m', (byte)'e', (byte)'c', (byte)'a',
|
||||
(byte)'r', (byte)'d', (byte)'_', (byte)'p', (byte)'a', (byte)'r', (byte)'t', (byte)'i',
|
||||
(byte)'t', (byte)'i', (byte)'o', (byte)'n', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogGameCardPartition => ", gamecard_partition: "u8;
|
||||
|
||||
/// <summary>"<c>, mount_host_option: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogMountHostOption => // ", mount_host_option: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'m', (byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)'_',
|
||||
(byte)'h', (byte)'o', (byte)'s', (byte)'t', (byte)'_', (byte)'o', (byte)'p', (byte)'t',
|
||||
(byte)'i', (byte)'o', (byte)'n', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogMountHostOption => ", mount_host_option: "u8;
|
||||
|
||||
/// <summary>"<c>, root_path: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogRootPath => // ", root_path: ""
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'r', (byte)'o', (byte)'o', (byte)'t', (byte)'_', (byte)'p',
|
||||
(byte)'a', (byte)'t', (byte)'h', (byte)':', (byte)' ', (byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogRootPath => ", root_path: \""u8;
|
||||
|
||||
/// <summary>"<c>, userid: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogUserId => // ", userid: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'u', (byte)'s', (byte)'e', (byte)'r', (byte)'i', (byte)'d',
|
||||
(byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogUserId => ", userid: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, index: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogIndex => // ", index: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'i', (byte)'n', (byte)'d', (byte)'e', (byte)'x', (byte)':',
|
||||
(byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogIndex => ", index: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_owner_id: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataOwnerId => // ", save_data_owner_id: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'o', (byte)'w', (byte)'n', (byte)'e',
|
||||
(byte)'r', (byte)'_', (byte)'i', (byte)'d', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataOwnerId => ", save_data_owner_id: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, save_data_size: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataSize => // ", save_data_size: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'s', (byte)'i', (byte)'z', (byte)'e',
|
||||
(byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataSize => ", save_data_size: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_journal_size: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataJournalSize => // ", save_data_journal_size: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'j', (byte)'o', (byte)'u', (byte)'r',
|
||||
(byte)'n', (byte)'a', (byte)'l', (byte)'_', (byte)'s', (byte)'i', (byte)'z', (byte)'e',
|
||||
(byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataJournalSize => ", save_data_journal_size: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_flags: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataFlags => // ", save_data_flags: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'f', (byte)'l', (byte)'a', (byte)'g',
|
||||
(byte)'s', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataFlags => ", save_data_flags: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, savedataid: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataId => // ", savedataid: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'d', (byte)'a',
|
||||
(byte)'t', (byte)'a', (byte)'i', (byte)'d', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataId => ", savedataid: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, savedataspaceid: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataSpaceId => // ", savedataspaceid: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'d', (byte)'a',
|
||||
(byte)'t', (byte)'a', (byte)'s', (byte)'p', (byte)'a', (byte)'c', (byte)'e', (byte)'i',
|
||||
(byte)'d', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataSpaceId => ", savedataspaceid: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_format_type: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataFormatType => // ", save_data_format_type: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'f', (byte)'o', (byte)'r', (byte)'m',
|
||||
(byte)'a', (byte)'t', (byte)'_', (byte)'t', (byte)'y', (byte)'p', (byte)'e', (byte)':',
|
||||
(byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataFormatType => ", save_data_format_type: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_time_stamp: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataTimeStamp => // ", save_data_time_stamp: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'t', (byte)'i', (byte)'m', (byte)'e',
|
||||
(byte)'_', (byte)'s', (byte)'t', (byte)'a', (byte)'m', (byte)'p', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataTimeStamp => ", save_data_time_stamp: "u8;
|
||||
|
||||
/// <summary>"<c>, save_data_commit_id: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSaveDataCommitId => // ", save_data_commit_id: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'_', (byte)'d',
|
||||
(byte)'a', (byte)'t', (byte)'a', (byte)'_', (byte)'c', (byte)'o', (byte)'m', (byte)'m',
|
||||
(byte)'i', (byte)'t', (byte)'_', (byte)'i', (byte)'d', (byte)':', (byte)' ', (byte)'0',
|
||||
(byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSaveDataCommitId => ", save_data_commit_id: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, restore_flag: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogRestoreFlag => // ", restore_flag: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'r', (byte)'e', (byte)'s', (byte)'t', (byte)'o', (byte)'r',
|
||||
(byte)'e', (byte)'_', (byte)'f', (byte)'l', (byte)'a', (byte)'g', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogRestoreFlag => ", restore_flag: "u8;
|
||||
|
||||
/// <summary>"<c>sdk_version: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSdkVersion => // "sdk_version: "
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'d', (byte)'k', (byte)'_', (byte)'v', (byte)'e', (byte)'r', (byte)'s',
|
||||
(byte)'i', (byte)'o', (byte)'n', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSdkVersion => "sdk_version: "u8;
|
||||
|
||||
/// <summary>"<c>, spec: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogSpec => // ", spec: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'p', (byte)'e', (byte)'c', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogSpec => ", spec: "u8;
|
||||
|
||||
/// <summary>"<c>NX</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogNx => // "NX"
|
||||
new[] { (byte)'N', (byte)'X' };
|
||||
public static ReadOnlySpan<byte> LogNx => "NX"u8;
|
||||
|
||||
/// <summary>"<c>, program_index: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogProgramIndex => // ", program_index: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'p', (byte)'r', (byte)'o', (byte)'g', (byte)'r', (byte)'a',
|
||||
(byte)'m', (byte)'_', (byte)'i', (byte)'n', (byte)'d', (byte)'e', (byte)'x', (byte)':',
|
||||
(byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogProgramIndex => ", program_index: "u8;
|
||||
|
||||
/// <summary>"<c>, for_system: true</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogForSystem => // ", for_system: true"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'f', (byte)'o', (byte)'r', (byte)'_', (byte)'s', (byte)'y',
|
||||
(byte)'s', (byte)'t', (byte)'e', (byte)'m', (byte)':', (byte)' ', (byte)'t', (byte)'r',
|
||||
(byte)'u', (byte)'e'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogForSystem => ", for_system: true"u8;
|
||||
|
||||
/// <summary>"<c>"FS_ACCESS: { </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogLineStart => // "FS_ACCESS: { "
|
||||
new[]
|
||||
{
|
||||
(byte)'F', (byte)'S', (byte)'_', (byte)'A', (byte)'C', (byte)'C', (byte)'E', (byte)'S',
|
||||
(byte)'S', (byte)':', (byte)' ', (byte)'{', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogLineStart => "FS_ACCESS: { "u8;
|
||||
|
||||
/// <summary>"<c> }\n</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogLineEnd => // " }\n"
|
||||
new[] { (byte)' ', (byte)'}', (byte)'\n' };
|
||||
public static ReadOnlySpan<byte> LogLineEnd => " }\n"u8;
|
||||
|
||||
/// <summary>"<c>start: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogStart => // "start: "
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'t', (byte)'a', (byte)'r', (byte)'t', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogStart => "start: "u8;
|
||||
|
||||
/// <summary>"<c>, end: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogEnd => // ", end: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'e', (byte)'n', (byte)'d', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogEnd => ", end: "u8;
|
||||
|
||||
/// <summary>"<c>, result: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogResult => // ", result: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'r', (byte)'e', (byte)'s', (byte)'u', (byte)'l', (byte)'t',
|
||||
(byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogResult => ", result: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, handle: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogHandle => // ", handle: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'h', (byte)'a', (byte)'n', (byte)'d', (byte)'l', (byte)'e',
|
||||
(byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogHandle => ", handle: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, priority: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogPriority => // ", priority: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'p', (byte)'r', (byte)'i', (byte)'o', (byte)'r', (byte)'i',
|
||||
(byte)'t', (byte)'y', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogPriority => ", priority: "u8;
|
||||
|
||||
/// <summary>"<c>, function: "</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogFunction => // ", function: ""
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'f', (byte)'u', (byte)'n', (byte)'c', (byte)'t', (byte)'i',
|
||||
(byte)'o', (byte)'n', (byte)':', (byte)' ', (byte)'"'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogFunction => ", function: \""u8;
|
||||
|
||||
/// <summary>"<c>, cachestoragelist_handle: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogCacheStorageListHandle =>
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'c', (byte)'a', (byte)'c', (byte)'h', (byte)'e', (byte)'s',
|
||||
(byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e', (byte)'l', (byte)'i',
|
||||
(byte)'s', (byte)'t', (byte)'_', (byte)'h', (byte)'a', (byte)'n', (byte)'d', (byte)'l',
|
||||
(byte)'e', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogCacheStorageListHandle => ", cachestoragelist_handle: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, infobuffercount: 0x</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogInfoBufferCount =>
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'i', (byte)'n', (byte)'f', (byte)'o', (byte)'b', (byte)'u',
|
||||
(byte)'f', (byte)'f', (byte)'e', (byte)'r', (byte)'c', (byte)'o', (byte)'u', (byte)'n',
|
||||
(byte)'t', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogInfoBufferCount => ", infobuffercount: 0x</c>"u8;
|
||||
|
||||
/// <summary>"<c>, cache_storage_count: </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogCacheStorageCount =>
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'c', (byte)'a', (byte)'c', (byte)'h', (byte)'e', (byte)'_',
|
||||
(byte)'s', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e', (byte)'_',
|
||||
(byte)'c', (byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)':', (byte)' '
|
||||
};
|
||||
public static ReadOnlySpan<byte> LogCacheStorageCount => ", cache_storage_count: "u8;
|
||||
}
|
||||
}
|
|
@ -673,7 +673,7 @@ public ref struct Path
|
|||
|
||||
Span<byte> writeBuffer = GetWriteBuffer();
|
||||
|
||||
ReadOnlySpan<byte> search = new[] { (byte)':', (byte)'/', (byte)'/', (byte)'/' }; // ":///"
|
||||
ReadOnlySpan<byte> search = ":///"u8;
|
||||
int index = StringUtils.Find(writeBuffer, search);
|
||||
if (index >= 0)
|
||||
{
|
||||
|
@ -681,8 +681,7 @@ public ref struct Path
|
|||
writeBuffer[index + 3] = AltDirectorySeparator;
|
||||
}
|
||||
|
||||
ReadOnlySpan<byte> hostMountUnc = new[] // "@Host://"
|
||||
{ (byte)'@', (byte)'H', (byte)'o', (byte)'s', (byte)'t', (byte)':', (byte)'/', (byte)'/' };
|
||||
ReadOnlySpan<byte> hostMountUnc = "@Host://"u8;
|
||||
if (StringUtils.Compare(writeBuffer, hostMountUnc, 8) == 0)
|
||||
{
|
||||
writeBuffer[6] = AltDirectorySeparator;
|
||||
|
@ -1258,7 +1257,7 @@ public static class PathFunctions
|
|||
/// <see cref="ResultFs.InvalidArgument"/>: <paramref name="pathBuffer"/> was too small to contain the built path.</returns>
|
||||
internal static Result SetUpFixedPathSaveMetaName(scoped ref Path path, Span<byte> pathBuffer, uint metaType)
|
||||
{
|
||||
ReadOnlySpan<byte> metaExtension = new[] { (byte)'.', (byte)'m', (byte)'e', (byte)'t', (byte)'a' }; // ".meta"
|
||||
ReadOnlySpan<byte> metaExtension = ".meta"u8;
|
||||
|
||||
var sb = new U8StringBuilder(pathBuffer);
|
||||
sb.Append((byte)'/').AppendFormat(metaType, 'x', 8).Append(metaExtension);
|
||||
|
@ -1280,11 +1279,7 @@ public static class PathFunctions
|
|||
/// <see cref="ResultFs.InvalidArgument"/>: <paramref name="pathBuffer"/> was too small to contain the built path.</returns>
|
||||
internal static Result SetUpFixedPathSaveMetaDir(scoped ref Path path, Span<byte> pathBuffer, ulong saveDataId)
|
||||
{
|
||||
ReadOnlySpan<byte> metaDirectoryName = new[]
|
||||
{
|
||||
(byte)'/', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'M', (byte)'e', (byte)'t',
|
||||
(byte)'a', (byte)'/'
|
||||
};
|
||||
ReadOnlySpan<byte> metaDirectoryName = "/saveMeta/"u8;
|
||||
|
||||
var sb = new U8StringBuilder(pathBuffer);
|
||||
sb.Append(metaDirectoryName).AppendFormat(saveDataId, 'x', 16);
|
||||
|
|
|
@ -16,15 +16,9 @@ namespace LibHac.Fs;
|
|||
/// <remarks>Based on nnSdk 13.4.0 (FS 13.1.0)</remarks>
|
||||
public static class PathFormatter
|
||||
{
|
||||
private static ReadOnlySpan<byte> InvalidCharacter =>
|
||||
new[] { (byte)':', (byte)'*', (byte)'?', (byte)'<', (byte)'>', (byte)'|' };
|
||||
|
||||
private static ReadOnlySpan<byte> InvalidCharacterForHostName =>
|
||||
new[] { (byte)':', (byte)'*', (byte)'<', (byte)'>', (byte)'|', (byte)'$' };
|
||||
|
||||
private static ReadOnlySpan<byte> InvalidCharacterForMountName =>
|
||||
new[] { (byte)'*', (byte)'?', (byte)'<', (byte)'>', (byte)'|' };
|
||||
|
||||
private static ReadOnlySpan<byte> InvalidCharacter => ":*?<>|"u8;
|
||||
private static ReadOnlySpan<byte> InvalidCharacterForHostName => ":*<>|$"u8;
|
||||
private static ReadOnlySpan<byte> InvalidCharacterForMountName => "*?<>|"u8;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private static Result CheckHostName(ReadOnlySpan<byte> name)
|
||||
|
|
|
@ -126,8 +126,7 @@ public static class PathUtility
|
|||
/*
|
||||
The optimized code is equivalent to this:
|
||||
|
||||
ReadOnlySpan<byte> invalidChars = new[]
|
||||
{(byte) ':', (byte) '*', (byte) '?', (byte) '<', (byte) '>', (byte) '|'};
|
||||
ReadOnlySpan<byte> invalidChars = ":*?<>|"u8;
|
||||
|
||||
for (int i = 0; i < invalidChars.Length; i++)
|
||||
{
|
||||
|
|
|
@ -24,9 +24,5 @@ internal static class CommonPaths
|
|||
public const char GameCardFileSystemMountNameNormalSuffix = 'N';
|
||||
public const char GameCardFileSystemMountNameSecureSuffix = 'S';
|
||||
|
||||
public static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => // Nintendo
|
||||
new[]
|
||||
{
|
||||
(byte)'N', (byte)'i', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'d', (byte)'o'
|
||||
};
|
||||
public static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => "Nintendo"u8;
|
||||
}
|
|
@ -527,107 +527,46 @@ internal class FileSystemAccessor : IDisposable
|
|||
}
|
||||
|
||||
/// <summary>"<c>$fs</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogFsModuleName => new[] { (byte)'$', (byte)'f', (byte)'s' }; // "$fs"
|
||||
private static ReadOnlySpan<byte> LogFsModuleName => "$fs"u8;
|
||||
|
||||
/// <summary>"<c>------ FS ERROR INFORMATION ------\n</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogFsErrorInfo => // "------ FS ERROR INFORMATION ------\n"
|
||||
new[]
|
||||
{
|
||||
(byte)'-', (byte)'-', (byte)'-', (byte)'-', (byte)'-', (byte)'-', (byte)' ', (byte)'F',
|
||||
(byte)'S', (byte)' ', (byte)'E', (byte)'R', (byte)'R', (byte)'O', (byte)'R', (byte)' ',
|
||||
(byte)'I', (byte)'N', (byte)'F', (byte)'O', (byte)'R', (byte)'M', (byte)'A', (byte)'T',
|
||||
(byte)'I', (byte)'O', (byte)'N', (byte)' ', (byte)'-', (byte)'-', (byte)'-', (byte)'-',
|
||||
(byte)'-', (byte)'-', (byte)'\n'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogFsErrorInfo => "------ FS ERROR INFORMATION ------\n"u8;
|
||||
|
||||
/// <summary>"<c>Error: File not closed</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogFileNotClosed => // "Error: File not closed"
|
||||
new[]
|
||||
{
|
||||
(byte)'E', (byte)'r', (byte)'r', (byte)'o', (byte)'r', (byte)':', (byte)' ', (byte)'F',
|
||||
(byte)'i', (byte)'l', (byte)'e', (byte)' ', (byte)'n', (byte)'o', (byte)'t', (byte)' ',
|
||||
(byte)'c', (byte)'l', (byte)'o', (byte)'s', (byte)'e', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogFileNotClosed => "Error: File not closed"u8;
|
||||
|
||||
/// <summary>"<c>Error: Directory not closed</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogDirectoryNotClosed => // "Error: Directory not closed"
|
||||
new[]
|
||||
{
|
||||
(byte)'E', (byte)'r', (byte)'r', (byte)'o', (byte)'r', (byte)':', (byte)' ', (byte)'D',
|
||||
(byte)'i', (byte)'r', (byte)'e', (byte)'c', (byte)'t', (byte)'o', (byte)'r', (byte)'y',
|
||||
(byte)' ', (byte)'n', (byte)'o', (byte)'t', (byte)' ', (byte)'c', (byte)'l', (byte)'o',
|
||||
(byte)'s', (byte)'e', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogDirectoryNotClosed => "Error: Directory not closed"u8;
|
||||
|
||||
/// <summary>"<c> (mount_name: "</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogMountName => // " (mount_name: ""
|
||||
new[]
|
||||
{
|
||||
(byte)' ', (byte)'(', (byte)'m', (byte)'o', (byte)'u', (byte)'n', (byte)'t', (byte)'_',
|
||||
(byte)'n', (byte)'a', (byte)'m', (byte)'e', (byte)':', (byte)' ', (byte)'"'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogMountName => " (mount_name: \""u8;
|
||||
|
||||
/// <summary>"<c>", count: </c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogCount => // "", count: "
|
||||
new[]
|
||||
{
|
||||
(byte)'"', (byte)',', (byte)' ', (byte)'c', (byte)'o', (byte)'u', (byte)'n', (byte)'t',
|
||||
(byte)':', (byte)' '
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogCount => "\", count: "u8;
|
||||
|
||||
/// <summary>"<c>)\n</c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogLineEnd => new[] { (byte)')', (byte)'\n' }; // ")\n"
|
||||
public static ReadOnlySpan<byte> LogLineEnd => ")\n"u8;
|
||||
|
||||
/// <summary>"<c> | </c>"</summary>
|
||||
public static ReadOnlySpan<byte> LogOrOperator => new[] { (byte)' ', (byte)'|', (byte)' ' }; // " | "
|
||||
public static ReadOnlySpan<byte> LogOrOperator => " | "u8;
|
||||
|
||||
/// <summary>"<c>OpenMode_Read</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogOpenModeRead => // "OpenMode_Read"
|
||||
new[]
|
||||
{
|
||||
(byte)'O', (byte)'p', (byte)'e', (byte)'n', (byte)'M', (byte)'o', (byte)'d', (byte)'e',
|
||||
(byte)'_', (byte)'R', (byte)'e', (byte)'a', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogOpenModeRead => "OpenMode_Read"u8;
|
||||
|
||||
/// <summary>"<c>OpenMode_Write</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogOpenModeWrite => // "OpenMode_Write"
|
||||
new[]
|
||||
{
|
||||
(byte)'O', (byte)'p', (byte)'e', (byte)'n', (byte)'M', (byte)'o', (byte)'d', (byte)'e',
|
||||
(byte)'_', (byte)'W', (byte)'r', (byte)'i', (byte)'t', (byte)'e'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogOpenModeWrite => "OpenMode_Write"u8;
|
||||
|
||||
/// <summary>"<c>OpenMode_AllowAppend</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogOpenModeAppend => // "OpenMode_AllowAppend"
|
||||
new[]
|
||||
{
|
||||
(byte)'O', (byte)'p', (byte)'e', (byte)'n', (byte)'M', (byte)'o', (byte)'d', (byte)'e',
|
||||
(byte)'_', (byte)'A', (byte)'l', (byte)'l', (byte)'o', (byte)'w', (byte)'A', (byte)'p',
|
||||
(byte)'p', (byte)'e', (byte)'n', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogOpenModeAppend => "OpenMode_AllowAppend"u8;
|
||||
|
||||
/// <summary>"<c> handle: 0x</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogHandle => // " handle: 0x"
|
||||
new[]
|
||||
{
|
||||
(byte)' ', (byte)' ', (byte)' ', (byte)' ', (byte)' ', (byte)'h', (byte)'a', (byte)'n',
|
||||
(byte)'d', (byte)'l', (byte)'e', (byte)':', (byte)' ', (byte)'0', (byte)'x'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogHandle => " handle: 0x"u8;
|
||||
|
||||
/// <summary>"<c>, open_mode: </c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogOpenMode => // ", open_mode: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'o', (byte)'p', (byte)'e', (byte)'n', (byte)'_', (byte)'m',
|
||||
(byte)'o', (byte)'d', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
private static ReadOnlySpan<byte> LogOpenMode => ", open_mode: "u8;
|
||||
|
||||
/// <summary>"<c>, size:</c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogSize => // ", size: "
|
||||
new[]
|
||||
{
|
||||
(byte)',', (byte)' ', (byte)'s', (byte)'i', (byte)'z', (byte)'e', (byte)':', (byte)' '
|
||||
};
|
||||
/// <summary>"<c>, size: </c>"</summary>
|
||||
private static ReadOnlySpan<byte> LogSize => ", size: "u8;
|
||||
|
||||
private void DumpUnclosedAccessorList(OpenMode fileOpenModeMask, OpenDirectoryMode directoryOpenModeMask)
|
||||
{
|
||||
|
|
|
@ -458,10 +458,10 @@ public static class UserFileSystem
|
|||
{
|
||||
UnsafeHelpers.SkipParamInit(out freeSpace);
|
||||
|
||||
if (subPath.IsEmpty() && StringUtils.Compare(subPath, new[] { (byte)'/' }) != 0)
|
||||
if (subPath.IsEmpty() && StringUtils.Compare(subPath, "/"u8) != 0)
|
||||
return ResultFs.InvalidMountName.Log();
|
||||
|
||||
return fileSystem.GetFreeSpaceSize(out freeSpace, new U8Span(new[] { (byte)'/' }));
|
||||
return fileSystem.GetFreeSpaceSize(out freeSpace, new U8Span("/"u8));
|
||||
}
|
||||
|
||||
if (fs.Impl.IsEnabledAccessLog() && fileSystem.IsEnabledAccessLog())
|
||||
|
|
|
@ -93,7 +93,7 @@ public static class UserFileSystemPrivate
|
|||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
res = fileSystem.QueryEntry(SpanHelpers.AsByteSpan(ref info), ReadOnlySpan<byte>.Empty,
|
||||
QueryId.QueryUnpreparedFileInformation, new U8Span(new[] { (byte)'/' }));
|
||||
QueryId.QueryUnpreparedFileInformation, new U8Span("/"u8));
|
||||
fs.Impl.AbortIfNeeded(res);
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -8,88 +8,50 @@ public static class CommonMountNames
|
|||
|
||||
// Filesystem names.
|
||||
/// <summary>"<c>@Host</c>"</summary>
|
||||
public static ReadOnlySpan<byte> HostRootFileSystemMountName => // "@Host"
|
||||
new[] { (byte)'@', (byte)'H', (byte)'o', (byte)'s', (byte)'t' };
|
||||
public static ReadOnlySpan<byte> HostRootFileSystemMountName => "@Host"u8;
|
||||
|
||||
/// <summary>"<c>@Sdcard</c>"</summary>
|
||||
public static ReadOnlySpan<byte> SdCardFileSystemMountName => // "@Sdcard"
|
||||
new[] { (byte)'@', (byte)'S', (byte)'d', (byte)'c', (byte)'a', (byte)'r', (byte)'d' };
|
||||
public static ReadOnlySpan<byte> SdCardFileSystemMountName => "@Sdcard"u8;
|
||||
|
||||
/// <summary>"<c>@Gc</c>"</summary>
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountName => // "@Gc"
|
||||
new[] { (byte)'@', (byte)'G', (byte)'c' };
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountName => "@Gc"u8;
|
||||
|
||||
/// <summary>"<c>U</c>"</summary>
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameUpdateSuffix => // "U"
|
||||
new[] { (byte)'U' };
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameUpdateSuffix => "U"u8;
|
||||
|
||||
/// <summary>"<c>N</c>"</summary>
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameNormalSuffix => // "N"
|
||||
new[] { (byte)'N' };
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameNormalSuffix => "N"u8;
|
||||
|
||||
/// <summary>"<c>S</c>"</summary>
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameSecureSuffix => // "S"
|
||||
new[] { (byte)'S' };
|
||||
public static ReadOnlySpan<byte> GameCardFileSystemMountNameSecureSuffix => "S"u8;
|
||||
|
||||
// Built-in storage names.
|
||||
/// <summary>"<c>@CalibFile</c>"</summary>
|
||||
public static ReadOnlySpan<byte> BisCalibrationFilePartitionMountName => // "@CalibFile"
|
||||
new[]
|
||||
{
|
||||
(byte)'@', (byte)'C', (byte)'a', (byte)'l', (byte)'i', (byte)'b', (byte)'F', (byte)'i',
|
||||
(byte)'l', (byte)'e'
|
||||
};
|
||||
public static ReadOnlySpan<byte> BisCalibrationFilePartitionMountName => "@CalibFile"u8;
|
||||
|
||||
/// <summary>"<c>@Safe</c>"</summary>
|
||||
public static ReadOnlySpan<byte> BisSafeModePartitionMountName => // "@Safe"
|
||||
new[] { (byte)'@', (byte)'S', (byte)'a', (byte)'f', (byte)'e' };
|
||||
public static ReadOnlySpan<byte> BisSafeModePartitionMountName => "@Safe"u8;
|
||||
|
||||
/// <summary>"<c>@User</c>"</summary>
|
||||
public static ReadOnlySpan<byte> BisUserPartitionMountName => // "@User"
|
||||
new[] { (byte)'@', (byte)'U', (byte)'s', (byte)'e', (byte)'r' };
|
||||
public static ReadOnlySpan<byte> BisUserPartitionMountName => "@User"u8;
|
||||
|
||||
/// <summary>"<c>@System</c>"</summary>
|
||||
public static ReadOnlySpan<byte> BisSystemPartitionMountName => // "@System"
|
||||
new[] { (byte)'@', (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m' };
|
||||
public static ReadOnlySpan<byte> BisSystemPartitionMountName => "@System"u8;
|
||||
|
||||
//Content storage names.
|
||||
/// <summary>"<c>@SystemContent</c>"</summary>
|
||||
public static ReadOnlySpan<byte> ContentStorageSystemMountName => // "@SystemContent"
|
||||
new[]
|
||||
{
|
||||
(byte)'@', (byte)'S', (byte)'y', (byte)'s', (byte)'t', (byte)'e', (byte)'m', (byte)'C',
|
||||
(byte)'o', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'t'
|
||||
};
|
||||
public static ReadOnlySpan<byte> ContentStorageSystemMountName => "@SystemContent"u8;
|
||||
|
||||
/// <summary>"<c>@UserContent</c>"</summary>
|
||||
public static ReadOnlySpan<byte> ContentStorageUserMountName => // "@UserContent"
|
||||
new[]
|
||||
{
|
||||
(byte)'@', (byte)'U', (byte)'s', (byte)'e', (byte)'r', (byte)'C', (byte)'o', (byte)'n',
|
||||
(byte)'t', (byte)'e', (byte)'n', (byte)'t'
|
||||
};
|
||||
public static ReadOnlySpan<byte> ContentStorageUserMountName => "@UserContent"u8;
|
||||
|
||||
/// <summary>"<c>@SdCardContent</c>"</summary>
|
||||
public static ReadOnlySpan<byte> ContentStorageSdCardMountName => // "@SdCardContent"
|
||||
new[]
|
||||
{
|
||||
(byte)'@', (byte)'S', (byte)'d', (byte)'C', (byte)'a', (byte)'r', (byte)'d', (byte)'C',
|
||||
(byte)'o', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'t'
|
||||
};
|
||||
public static ReadOnlySpan<byte> ContentStorageSdCardMountName => "@SdCardContent"u8;
|
||||
|
||||
// Registered update partition
|
||||
/// <summary>"<c>@RegUpdate</c>"</summary>
|
||||
public static ReadOnlySpan<byte> RegisteredUpdatePartitionMountName => // "@RegUpdate"
|
||||
new[]
|
||||
{
|
||||
(byte)'@', (byte)'R', (byte)'e', (byte)'g', (byte)'U', (byte)'p', (byte)'d', (byte)'a',
|
||||
(byte)'t', (byte)'e'
|
||||
};
|
||||
public static ReadOnlySpan<byte> RegisteredUpdatePartitionMountName => "@RegUpdate"u8;
|
||||
|
||||
/// <summary>"<c>@Nintendo</c>"</summary>
|
||||
public static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => // "Nintendo"
|
||||
new[]
|
||||
{
|
||||
(byte)'N', (byte)'i', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'d', (byte)'o'
|
||||
};
|
||||
/// <summary>"<c>Nintendo</c>"</summary>
|
||||
public static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => "Nintendo"u8;
|
||||
}
|
|
@ -61,10 +61,5 @@ public static class CustomStorage
|
|||
}
|
||||
|
||||
/// <summary>"<c>CustomStorage0</c>"</summary>
|
||||
private static ReadOnlySpan<byte> CustomStorageDirectoryName =>
|
||||
new[]
|
||||
{
|
||||
(byte)'C', (byte)'u', (byte)'s', (byte)'t', (byte)'o', (byte)'m', (byte)'S', (byte)'t',
|
||||
(byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e', (byte)'0'
|
||||
};
|
||||
private static ReadOnlySpan<byte> CustomStorageDirectoryName => "CustomStorage0"u8;
|
||||
}
|
|
@ -24,8 +24,7 @@ namespace LibHac.Fs.Shim;
|
|||
public static class Host
|
||||
{
|
||||
/// <summary>"<c>@Host:/</c>"</summary>
|
||||
private static ReadOnlySpan<byte> HostRootFileSystemPath =>
|
||||
new[] { (byte)'@', (byte)'H', (byte)'o', (byte)'s', (byte)'t', (byte)':', (byte)'/' };
|
||||
private static ReadOnlySpan<byte> HostRootFileSystemPath => "@Host:/"u8;
|
||||
|
||||
private const int HostRootFileSystemPathLength = 7;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ public static class SignedSystemPartition
|
|||
static Result Operate(ref bool isValid, FileSystemAccessor fileSystem)
|
||||
{
|
||||
Result res = fileSystem.QueryEntry(SpanHelpers.AsByteSpan(ref isValid), ReadOnlySpan<byte>.Empty,
|
||||
QueryId.IsSignedSystemPartition, new U8Span(new[] { (byte)'/' }));
|
||||
QueryId.IsSignedSystemPartition, new U8Span("/"u8));
|
||||
|
||||
if (res.IsFailure())
|
||||
{
|
||||
|
|
|
@ -64,13 +64,5 @@ internal readonly struct AccessLogService
|
|||
}
|
||||
|
||||
/// <summary>"<c>FS_ACCESS: { multi_program_tag: true }\n</c>"</summary>
|
||||
private static ReadOnlySpan<byte> MultiProgramTag => // FS_ACCESS: { multi_program_tag: true }\n
|
||||
new[]
|
||||
{
|
||||
(byte)'F', (byte)'S', (byte)'_', (byte)'A', (byte)'C', (byte)'C', (byte)'E', (byte)'S',
|
||||
(byte)'S', (byte)':', (byte)' ', (byte)'{', (byte)' ', (byte)'m', (byte)'u', (byte)'l',
|
||||
(byte)'t', (byte)'i', (byte)'_', (byte)'p', (byte)'r', (byte)'o', (byte)'g', (byte)'r',
|
||||
(byte)'a', (byte)'m', (byte)'_', (byte)'t', (byte)'a', (byte)'g', (byte)':', (byte)' ',
|
||||
(byte)'t', (byte)'r', (byte)'u', (byte)'e', (byte)' ', (byte)'}', (byte)'\n'
|
||||
};
|
||||
private static ReadOnlySpan<byte> MultiProgramTag => "FS_ACCESS: { multi_program_tag: true }\n"u8;
|
||||
}
|
|
@ -292,7 +292,7 @@ public class FileSystemInterfaceAdapter : IFileSystemSf
|
|||
_baseFileSystem.Destroy();
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> RootDir => new[] { (byte)'/' };
|
||||
private static ReadOnlySpan<byte> RootDir => "/"u8;
|
||||
|
||||
private Result SetUpPath(ref Path fsPath, in PathSf sfPath)
|
||||
{
|
||||
|
|
|
@ -55,8 +55,7 @@ internal class MultiCommitManager : IMultiCommitManager
|
|||
private const long CommitContextFileSize = 0x200;
|
||||
|
||||
/// <summary>"<c>/commitinfo</c>"</summary>
|
||||
private static ReadOnlySpan<byte> CommitContextFileName =>
|
||||
new[] { (byte)'/', (byte)'c', (byte)'o', (byte)'m', (byte)'m', (byte)'i', (byte)'t', (byte)'i', (byte)'n', (byte)'f', (byte)'o' };
|
||||
private static ReadOnlySpan<byte> CommitContextFileName => "/commitinfo"u8;
|
||||
|
||||
private SharedRef<ISaveDataMultiCommitCoreInterface> _multiCommitInterface;
|
||||
private readonly SharedRef<IFileSystem>[] _fileSystems;
|
||||
|
|
|
@ -480,7 +480,7 @@ public class NcaFileSystemServiceImpl
|
|||
{
|
||||
UnsafeHelpers.SkipParamInit(out isDirectory);
|
||||
|
||||
ReadOnlySpan<byte> mountSeparator = new[] { (byte)':', (byte)'/' };
|
||||
ReadOnlySpan<byte> mountSeparator = ":/"u8;
|
||||
|
||||
if (StringUtils.Compare(mountSeparator, path, mountSeparator.Length) != 0)
|
||||
{
|
||||
|
@ -502,8 +502,8 @@ public class NcaFileSystemServiceImpl
|
|||
|
||||
ReadOnlySpan<byte> fileExtension = path.Value.Slice(pathLen - 4);
|
||||
|
||||
ReadOnlySpan<byte> ncaExtension = new[] { (byte)'.', (byte)'n', (byte)'c', (byte)'a' };
|
||||
ReadOnlySpan<byte> nspExtension = new[] { (byte)'.', (byte)'n', (byte)'s', (byte)'p' };
|
||||
ReadOnlySpan<byte> ncaExtension = ".nca"u8;
|
||||
ReadOnlySpan<byte> nspExtension = ".nsp"u8;
|
||||
|
||||
if (StringUtils.CompareCaseInsensitive(fileExtension, ncaExtension) == 0 ||
|
||||
StringUtils.CompareCaseInsensitive(fileExtension, nspExtension) == 0)
|
||||
|
@ -531,8 +531,7 @@ public class NcaFileSystemServiceImpl
|
|||
using var pathRoot = new Path();
|
||||
using var pathData = new Path();
|
||||
|
||||
Result res = PathFunctions.SetUpFixedPath(ref pathData.Ref(),
|
||||
new[] { (byte)'/', (byte)'d', (byte)'a', (byte)'t', (byte)'a' });
|
||||
Result res = PathFunctions.SetUpFixedPath(ref pathData.Ref(), "/data"u8);
|
||||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
res = pathRoot.Combine(in path, in pathData);
|
||||
|
@ -551,7 +550,7 @@ public class NcaFileSystemServiceImpl
|
|||
private Result ParseNsp(ref U8Span path, ref SharedRef<IFileSystem> outFileSystem,
|
||||
ref SharedRef<IFileSystem> baseFileSystem)
|
||||
{
|
||||
ReadOnlySpan<byte> nspExtension = new[] { (byte)'.', (byte)'n', (byte)'s', (byte)'p' };
|
||||
ReadOnlySpan<byte> nspExtension = ".nsp"u8;
|
||||
|
||||
// Search for the end of the nsp part of the path
|
||||
int nspPathLen = 0;
|
||||
|
@ -648,17 +647,17 @@ public class NcaFileSystemServiceImpl
|
|||
return Result.Success;
|
||||
|
||||
case FileSystemProxyType.Code:
|
||||
dirName = new[] { (byte)'/', (byte)'c', (byte)'o', (byte)'d', (byte)'e', (byte)'/' };
|
||||
dirName = "/code/"u8;
|
||||
break;
|
||||
case FileSystemProxyType.Rom:
|
||||
case FileSystemProxyType.Control:
|
||||
case FileSystemProxyType.Manual:
|
||||
case FileSystemProxyType.Meta:
|
||||
case FileSystemProxyType.RegisteredUpdate:
|
||||
dirName = new[] { (byte)'/', (byte)'d', (byte)'a', (byte)'t', (byte)'a', (byte)'/' };
|
||||
dirName = "/data/"u8;
|
||||
break;
|
||||
case FileSystemProxyType.Logo:
|
||||
dirName = new[] { (byte)'/', (byte)'l', (byte)'o', (byte)'g', (byte)'o', (byte)'/' };
|
||||
dirName = "/logo/"u8;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -905,17 +904,9 @@ public class NcaFileSystemServiceImpl
|
|||
}
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => // Nintendo
|
||||
new[]
|
||||
{
|
||||
(byte)'N', (byte)'i', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'d', (byte)'o'
|
||||
};
|
||||
private static ReadOnlySpan<byte> SdCardNintendoRootDirectoryName => "Nintendo"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> ContentStorageDirectoryName => // Contents
|
||||
new[]
|
||||
{
|
||||
(byte)'C', (byte)'o', (byte)'n', (byte)'t', (byte)'e', (byte)'n', (byte)'t', (byte)'s'
|
||||
};
|
||||
private static ReadOnlySpan<byte> ContentStorageDirectoryName => "Contents"u8;
|
||||
}
|
||||
|
||||
public readonly struct InternalProgramIdRangeForSpeedEmulation
|
||||
|
|
|
@ -621,7 +621,7 @@ internal class SaveDataFileSystemService : ISaveDataTransferCoreInterface, ISave
|
|||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
using var pathRoot = new Path();
|
||||
res = PathFunctions.SetUpFixedPath(ref pathRoot.Ref(), new[] { (byte)'/' });
|
||||
res = PathFunctions.SetUpFixedPath(ref pathRoot.Ref(), "/"u8);
|
||||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
fileSystem.Get.GetFreeSpaceSize(out long freeSpaceSize, in pathRoot);
|
||||
|
@ -854,7 +854,7 @@ internal class SaveDataFileSystemService : ISaveDataTransferCoreInterface, ISave
|
|||
|
||||
if (path.Str[0] == NullTerminator)
|
||||
{
|
||||
res = saveDataRootPath.Initialize(new[] { (byte)'.' });
|
||||
res = saveDataRootPath.Initialize("."u8);
|
||||
if (res.IsFailure()) return res.Miss();
|
||||
}
|
||||
else
|
||||
|
@ -2583,7 +2583,7 @@ internal class SaveDataFileSystemService : ISaveDataTransferCoreInterface, ISave
|
|||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
using var pathRoot = new Path();
|
||||
res = PathFunctions.SetUpFixedPath(ref pathRoot.Ref(), new[] { (byte)'/' });
|
||||
res = PathFunctions.SetUpFixedPath(ref pathRoot.Ref(), "/"u8);
|
||||
if (res.IsFailure()) return res.Miss();
|
||||
|
||||
res = fileSystem.Get.CleanDirectoryRecursively(in pathRoot);
|
||||
|
|
|
@ -346,12 +346,7 @@ public class SaveDataFileSystemServiceImpl : IDisposable
|
|||
|
||||
public Result DeleteAllSaveDataMetas(ulong saveDataId, SaveDataSpaceId spaceId)
|
||||
{
|
||||
ReadOnlySpan<byte> metaDirName = // /saveMeta
|
||||
new[]
|
||||
{
|
||||
(byte)'/', (byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'M', (byte)'e', (byte)'t',
|
||||
(byte)'a'
|
||||
};
|
||||
ReadOnlySpan<byte> metaDirName = "/saveMeta"u8;
|
||||
|
||||
Unsafe.SkipInit(out Array18<byte> saveDataIdDirectoryNameBuffer);
|
||||
|
||||
|
@ -697,11 +692,11 @@ public class SaveDataFileSystemServiceImpl : IDisposable
|
|||
|
||||
if (spaceId == SaveDataSpaceId.Temporary)
|
||||
{
|
||||
saveDirName = new[] { (byte)'/', (byte)'t', (byte)'e', (byte)'m', (byte)'p' }; // /temp
|
||||
saveDirName = "/temp"u8;
|
||||
}
|
||||
else
|
||||
{
|
||||
saveDirName = new[] { (byte)'/', (byte)'s', (byte)'a', (byte)'v', (byte)'e' }; // /save
|
||||
saveDirName = "/save"u8;
|
||||
}
|
||||
|
||||
res = PathFunctions.SetUpFixedPath(ref saveDataAreaDirectoryName.Ref(), saveDirName);
|
||||
|
|
|
@ -37,15 +37,9 @@ public class SaveDataIndexer : ISaveDataIndexer
|
|||
private const long LastPublishedIdFileSize = sizeof(long);
|
||||
private const int MaxPathLength = 0x30;
|
||||
|
||||
private static ReadOnlySpan<byte> LastPublishedIdFileName => // lastPublishedId
|
||||
new[]
|
||||
{
|
||||
(byte)'l', (byte)'a', (byte)'s', (byte)'t', (byte)'P', (byte)'u', (byte)'b', (byte)'l',
|
||||
(byte)'i', (byte)'s', (byte)'h', (byte)'e', (byte)'d', (byte)'I', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> LastPublishedIdFileName => "lastPublishedId"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> MountDelimiter => // :/
|
||||
new[] { (byte)':', (byte)'/' };
|
||||
private static ReadOnlySpan<byte> MountDelimiter => ":/"u8;
|
||||
|
||||
private delegate void SaveDataValueTransform(ref SaveDataIndexerValue value, ReadOnlySpan<byte> updateData);
|
||||
|
||||
|
|
|
@ -231,36 +231,16 @@ internal class SaveDataIndexerManager : ISaveDataIndexerManager, IDisposable
|
|||
}
|
||||
|
||||
/// <summary>"<c>saveDataIxrDb</c>"</summary>
|
||||
private static ReadOnlySpan<byte> BisIndexerMountName =>
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'D', (byte)'a', (byte)'t', (byte)'a',
|
||||
(byte)'I', (byte)'x', (byte)'r', (byte)'D', (byte)'b'
|
||||
};
|
||||
private static ReadOnlySpan<byte> BisIndexerMountName => "saveDataIxrDb"u8;
|
||||
|
||||
/// <summary>"<c>saveDataIxrDbSd</c>"</summary>
|
||||
private static ReadOnlySpan<byte> SdCardIndexerMountName =>
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'D', (byte)'a', (byte)'t', (byte)'a',
|
||||
(byte)'I', (byte)'x', (byte)'r', (byte)'D', (byte)'b', (byte)'S', (byte)'d'
|
||||
};
|
||||
private static ReadOnlySpan<byte> SdCardIndexerMountName => "saveDataIxrDbSd"u8;
|
||||
|
||||
/// <summary>"<c>saveDataIxrDbPr</c>"</summary>
|
||||
private static ReadOnlySpan<byte> ProperBisIndexerMountName =>
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'D', (byte)'a', (byte)'t', (byte)'a',
|
||||
(byte)'I', (byte)'x', (byte)'r', (byte)'D', (byte)'b', (byte)'P', (byte)'r'
|
||||
};
|
||||
private static ReadOnlySpan<byte> ProperBisIndexerMountName => "saveDataIxrDbPr"u8;
|
||||
|
||||
/// <summary>"<c>saveDataIxrDbSf</c>"</summary>
|
||||
private static ReadOnlySpan<byte> SafeModeIndexerMountName =>
|
||||
new[]
|
||||
{
|
||||
(byte)'s', (byte)'a', (byte)'v', (byte)'e', (byte)'D', (byte)'a', (byte)'t', (byte)'a',
|
||||
(byte)'I', (byte)'x', (byte)'r', (byte)'D', (byte)'b', (byte)'S', (byte)'f'
|
||||
};
|
||||
private static ReadOnlySpan<byte> SafeModeIndexerMountName => "saveDataIxrDbSf"u8;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -525,7 +525,7 @@ public class ConcatenationFileSystem : IFileSystem
|
|||
base.Dispose();
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> RootPath => new[] { (byte)'/' };
|
||||
private static ReadOnlySpan<byte> RootPath => "/"u8;
|
||||
|
||||
/// <summary>
|
||||
/// Appends the two-digit-padded <paramref name="index"/> to the given <see cref="Path"/>.
|
||||
|
|
|
@ -30,10 +30,10 @@ public class DirectorySaveDataFileSystem : ISaveDataFileSystem
|
|||
{
|
||||
private const int IdealWorkBufferSize = 0x100000; // 1 MiB
|
||||
|
||||
private static ReadOnlySpan<byte> CommittedDirectoryName => new[] { (byte)'/', (byte)'0' };
|
||||
private static ReadOnlySpan<byte> ModifiedDirectoryName => new[] { (byte)'/', (byte)'1' };
|
||||
private static ReadOnlySpan<byte> SynchronizingDirectoryName => new[] { (byte)'/', (byte)'_' };
|
||||
private static ReadOnlySpan<byte> LockFileName => new[] { (byte)'/', (byte)'.', (byte)'l', (byte)'o', (byte)'c', (byte)'k' };
|
||||
private static ReadOnlySpan<byte> CommittedDirectoryName => "/0"u8;
|
||||
private static ReadOnlySpan<byte> ModifiedDirectoryName => "/1"u8;
|
||||
private static ReadOnlySpan<byte> SynchronizingDirectoryName => "/_"u8;
|
||||
private static ReadOnlySpan<byte> LockFileName => "/.lock"u8;
|
||||
|
||||
private IFileSystem _baseFs;
|
||||
private SdkMutexType _mutex;
|
||||
|
@ -735,26 +735,11 @@ public class DirectorySaveDataFileSystem : ISaveDataFileSystem
|
|||
// always writing the extra data directly to the /extradata file.
|
||||
// Everything below this point is a LibHac extension.
|
||||
|
||||
private static ReadOnlySpan<byte> CommittedExtraDataName => // "/ExtraData0"
|
||||
new[]
|
||||
{
|
||||
(byte)'/', (byte)'E', (byte)'x', (byte)'t', (byte)'r', (byte)'a', (byte)'D', (byte)'a',
|
||||
(byte)'t', (byte)'a', (byte)'0'
|
||||
};
|
||||
private static ReadOnlySpan<byte> CommittedExtraDataName => "/ExtraData0"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> ModifiedExtraDataName => // "/ExtraData1"
|
||||
new[]
|
||||
{
|
||||
(byte)'/', (byte)'E', (byte)'x', (byte)'t', (byte)'r', (byte)'a', (byte)'D', (byte)'a',
|
||||
(byte)'t', (byte)'a', (byte)'1'
|
||||
};
|
||||
private static ReadOnlySpan<byte> ModifiedExtraDataName => "/ExtraData1"u8;
|
||||
|
||||
private static ReadOnlySpan<byte> SynchronizingExtraDataName => // "/ExtraData_"
|
||||
new[]
|
||||
{
|
||||
(byte)'/', (byte)'E', (byte)'x', (byte)'t', (byte)'r', (byte)'a', (byte)'D', (byte)'a',
|
||||
(byte)'t', (byte)'a', (byte)'_'
|
||||
};
|
||||
private static ReadOnlySpan<byte> SynchronizingExtraDataName => "/ExtraData_"u8;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the save data's extra data files.
|
||||
|
|
|
@ -744,74 +744,20 @@ public class HierarchicalIntegrityVerificationStorage : IStorage
|
|||
}
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::Master</c>"</summary>
|
||||
public static ReadOnlySpan<byte> MasterKey => // "HierarchicalIntegrityVerificationStorage::Master"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'M', (byte)'a', (byte)'s', (byte)'t', (byte)'e', (byte)'r'
|
||||
};
|
||||
public static ReadOnlySpan<byte> MasterKey => "HierarchicalIntegrityVerificationStorage::Master"u8;
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::L1</c>"</summary>
|
||||
public static ReadOnlySpan<byte> L1Key => // "HierarchicalIntegrityVerificationStorage::L1"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'L', (byte)'1'
|
||||
};
|
||||
public static ReadOnlySpan<byte> L1Key => "HierarchicalIntegrityVerificationStorage::L1"u8;
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::L2</c>"</summary>
|
||||
public static ReadOnlySpan<byte> L2Key => // "HierarchicalIntegrityVerificationStorage::L2"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'L', (byte)'2'
|
||||
};
|
||||
public static ReadOnlySpan<byte> L2Key => "HierarchicalIntegrityVerificationStorage::L2"u8;
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::L3</c>"</summary>
|
||||
public static ReadOnlySpan<byte> L3Key => // "HierarchicalIntegrityVerificationStorage::L3"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'L', (byte)'3'
|
||||
};
|
||||
public static ReadOnlySpan<byte> L3Key => "HierarchicalIntegrityVerificationStorage::L3"u8;
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::L4</c>"</summary>
|
||||
public static ReadOnlySpan<byte> L4Key => // "HierarchicalIntegrityVerificationStorage::L4"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'L', (byte)'4'
|
||||
};
|
||||
public static ReadOnlySpan<byte> L4Key => "HierarchicalIntegrityVerificationStorage::L4"u8;
|
||||
|
||||
/// <summary>"<c>HierarchicalIntegrityVerificationStorage::L5</c>"</summary>
|
||||
public static ReadOnlySpan<byte> L5Key => // "HierarchicalIntegrityVerificationStorage::L5"
|
||||
new[]
|
||||
{
|
||||
(byte)'H', (byte)'i', (byte)'e', (byte)'r', (byte)'a', (byte)'r', (byte)'c', (byte)'h',
|
||||
(byte)'i', (byte)'c', (byte)'a', (byte)'l', (byte)'I', (byte)'n', (byte)'t', (byte)'e',
|
||||
(byte)'g', (byte)'r', (byte)'i', (byte)'t', (byte)'y', (byte)'V', (byte)'e', (byte)'r',
|
||||
(byte)'i', (byte)'f', (byte)'i', (byte)'c', (byte)'a', (byte)'t', (byte)'i', (byte)'o',
|
||||
(byte)'n', (byte)'S', (byte)'t', (byte)'o', (byte)'r', (byte)'a', (byte)'g', (byte)'e',
|
||||
(byte)':', (byte)':', (byte)'L', (byte)'5'
|
||||
};
|
||||
public static ReadOnlySpan<byte> L5Key => "HierarchicalIntegrityVerificationStorage::L5"u8;
|
||||
}
|
|
@ -55,9 +55,7 @@ public class PartitionFileSystemCore<T> : IFileSystem where T : unmanaged, IPart
|
|||
if (!_isInitialized)
|
||||
return ResultFs.PreconditionViolation.Log();
|
||||
|
||||
ReadOnlySpan<byte> rootPath = new[] { (byte)'/' };
|
||||
|
||||
if (path != rootPath)
|
||||
if (path != "/"u8)
|
||||
return ResultFs.PathNotFound.Log();
|
||||
|
||||
outDirectory.Reset(new PartitionDirectory(this, mode));
|
||||
|
@ -95,7 +93,7 @@ public class PartitionFileSystemCore<T> : IFileSystem where T : unmanaged, IPart
|
|||
if (path.IsEmpty() || pathStr[0] != '/')
|
||||
return ResultFs.InvalidPathFormat.Log();
|
||||
|
||||
ReadOnlySpan<byte> rootPath = new[] { (byte)'/' };
|
||||
ReadOnlySpan<byte> rootPath = "/"u8;
|
||||
|
||||
if (StringUtils.Compare(rootPath, pathStr, 2) == 0)
|
||||
{
|
||||
|
|
|
@ -33,7 +33,7 @@ internal static class Utility
|
|||
public IFileSystem DestFileSystem;
|
||||
}
|
||||
|
||||
private static ReadOnlySpan<byte> RootPath => new[] { (byte)'/' };
|
||||
private static ReadOnlySpan<byte> RootPath => "/"u8;
|
||||
|
||||
private static Result IterateDirectoryRecursivelyInternal(IFileSystem fs, ref Path workPath,
|
||||
ref DirectoryEntry dirEntry, FsIterationTask onEnterDir, FsIterationTask onExitDir, FsIterationTask onFile,
|
||||
|
|
|
@ -24,12 +24,7 @@ public class FlatMapKeyValueStore<TKey> : IDisposable where TKey : unmanaged, IE
|
|||
private MemoryResource _memoryResource;
|
||||
private MemoryResource _memoryResourceForAutoBuffers;
|
||||
|
||||
private static ReadOnlySpan<byte> ArchiveFileName => // /imkvdb.arc
|
||||
new[]
|
||||
{
|
||||
(byte)'/', (byte)'i', (byte)'m', (byte)'k', (byte)'v', (byte)'d', (byte)'b', (byte)'.',
|
||||
(byte)'a', (byte)'r', (byte)'c'
|
||||
};
|
||||
private static ReadOnlySpan<byte> ArchiveFileName => "/imkvdb.arc"u8;
|
||||
|
||||
public int Count => _index.Count;
|
||||
|
||||
|
|
Loading…
Reference in a new issue