[STFS] Use new source generator based big endian marshaller

This commit is contained in:
2025-10-21 10:50:51 +01:00
parent 66ce90a155
commit 6d3e8515f9
3 changed files with 18 additions and 11 deletions

View File

@@ -26,7 +26,7 @@ public sealed partial class Stfs
stream.ReadExactly(hdr, 0, hdr.Length);
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft)) return false;
@@ -51,7 +51,7 @@ public sealed partial class Stfs
// Reverse positions that hold UTF16-BE strings
ReverseShorts(hdr, 0x0411, 0x1300);
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft)) return;
@@ -78,7 +78,7 @@ public sealed partial class Stfs
if(header.Magic == PackageMagic.Console)
{
ConsolePackage consolePackage = Marshal.ByteArrayToStructureBigEndian<ConsolePackage>(hdr);
ConsolePackage consolePackage = Marshal.ByteArrayToStructureBigEndianGenerated<ConsolePackage>(hdr);
sb.AppendFormat(Localization.Certificate_owner_console_ID_0_1_2_3_4,
consolePackage.CertificateOwnerConsoleId[0],

View File

@@ -23,7 +23,7 @@ public sealed partial class Stfs
_stream.ReadExactly(hdr, 0, hdr.Length);
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft))
return ErrorNumber.InvalidArgument;
@@ -56,7 +56,7 @@ public sealed partial class Stfs
do
{
FileTableEntry entry = Marshal.ByteArrayToStructureBigEndian<FileTableEntry>(buffer, in_pos, entrySize);
FileTableEntry entry = Marshal.ByteArrayToStructureBigEndianGenerated<FileTableEntry>(buffer, in_pos, entrySize);
if(entry.FilenameLength == 0) break;

View File

@@ -1,5 +1,6 @@
using System;
using System.Runtime.InteropServices;
using Aaru.CommonTypes.Attributes;
namespace Aaru.Archives;
@@ -8,7 +9,8 @@ public sealed partial class Stfs
#region Nested type: ConsolePackage
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
struct ConsolePackage
[SwapEndian]
partial struct ConsolePackage
{
public PackageMagic Magic;
public ushort PkCertificateSize;
@@ -49,7 +51,8 @@ public sealed partial class Stfs
#region Nested type: FileTableEntry
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct FileTableEntry
[SwapEndian]
partial struct FileTableEntry
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x28)]
public byte[] Filename;
@@ -73,7 +76,8 @@ public sealed partial class Stfs
#region Nested type: LicenseEntry
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
struct LicenseEntry
[SwapEndian]
partial struct LicenseEntry
{
public long LicenseId;
public int LicenseBits;
@@ -85,7 +89,8 @@ public sealed partial class Stfs
#region Nested type: LocalizedString
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
struct LocalizedString
[SwapEndian]
partial struct LocalizedString
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string Name;
@@ -96,7 +101,8 @@ public sealed partial class Stfs
#region Nested type: Metadata
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
struct Metadata
[SwapEndian]
partial struct Metadata
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public LicenseEntry[] Licensing;
@@ -157,7 +163,8 @@ public sealed partial class Stfs
#region Nested type: RemotePackage
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
struct RemotePackage
[SwapEndian]
partial struct RemotePackage
{
public PackageMagic Magic;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]