diff --git a/Aaru.Filesystems/RBF/Info.cs b/Aaru.Filesystems/RBF/Info.cs index 63f696a22..2ef9878b0 100644 --- a/Aaru.Filesystems/RBF/Info.cs +++ b/Aaru.Filesystems/RBF/Info.cs @@ -69,8 +69,8 @@ public sealed partial class RBF if(sector.Length < Marshal.SizeOf()) return false; - IdSector rbfSb = Marshal.ByteArrayToStructureBigEndian(sector); - NewIdSector rbf9000Sb = Marshal.ByteArrayToStructureBigEndian(sector); + IdSector rbfSb = Marshal.ByteArrayToStructureBigEndianGenerated(sector); + NewIdSector rbf9000Sb = Marshal.ByteArrayToStructureBigEndianGenerated(sector); AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_equals_1_or_2_expected_3_or_4, @@ -115,8 +115,8 @@ public sealed partial class RBF if(sector.Length < Marshal.SizeOf()) return; - rbfSb = Marshal.ByteArrayToStructureBigEndian(sector); - rbf9000Sb = Marshal.ByteArrayToStructureBigEndian(sector); + rbfSb = Marshal.ByteArrayToStructureBigEndianGenerated(sector); + rbf9000Sb = Marshal.ByteArrayToStructureBigEndianGenerated(sector); AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_equals_1_or_2_expected_3_or_4, diff --git a/Aaru.Filesystems/RBF/Structs.cs b/Aaru.Filesystems/RBF/Structs.cs index 49111c201..d5a0941f4 100644 --- a/Aaru.Filesystems/RBF/Structs.cs +++ b/Aaru.Filesystems/RBF/Structs.cs @@ -27,6 +27,7 @@ // ****************************************************************************/ using System.Runtime.InteropServices; +using Aaru.CommonTypes.Attributes; namespace Aaru.Filesystems; @@ -38,56 +39,57 @@ public sealed partial class RBF /// Identification sector. Wherever the sector this resides on, becomes LSN 0. [StructLayout(LayoutKind.Sequential, Pack = 1)] - readonly struct IdSector + [SwapEndian] + partial struct IdSector { /// Sectors on disk [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] - public readonly byte[] dd_tot; + public byte[] dd_tot; /// Tracks - public readonly byte dd_tks; + public byte dd_tks; /// Bytes in allocation map - public readonly ushort dd_map; + public ushort dd_map; /// Sectors per cluster - public readonly ushort dd_bit; + public ushort dd_bit; /// LSN of root directory [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] - public readonly byte[] dd_dir; + public byte[] dd_dir; /// Owner ID - public readonly ushort dd_own; + public ushort dd_own; /// Attributes - public readonly byte dd_att; + public byte dd_att; /// Disk ID - public readonly ushort dd_dsk; + public ushort dd_dsk; /// Format byte - public readonly byte dd_fmt; + public byte dd_fmt; /// Sectors per track - public readonly ushort dd_spt; + public ushort dd_spt; /// Reserved - public readonly ushort dd_res; + public ushort dd_res; /// LSN of boot file [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] - public readonly byte[] dd_bt; + public byte[] dd_bt; /// Size of boot file - public readonly ushort dd_bsz; + public ushort dd_bsz; /// Creation date [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] - public readonly byte[] dd_dat; + public byte[] dd_dat; /// Volume name [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] - public readonly byte[] dd_nam; + public byte[] dd_nam; /// Path options [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] - public readonly byte[] dd_opt; + public byte[] dd_opt; /// Reserved - public readonly byte reserved; + public byte reserved; /// Magic number - public readonly uint dd_sync; + public uint dd_sync; /// LSN of allocation map - public readonly uint dd_maplsn; + public uint dd_maplsn; /// Size of an LSN - public readonly ushort dd_lsnsize; + public ushort dd_lsnsize; /// Version ID - public readonly ushort dd_versid; + public ushort dd_versid; } #endregion @@ -99,56 +101,57 @@ public sealed partial class RBF /// big or little endian. /// [StructLayout(LayoutKind.Sequential, Pack = 1)] - readonly struct NewIdSector + [SwapEndian] + partial struct NewIdSector { /// Magic number - public readonly uint rid_sync; + public uint rid_sync; /// Disk ID - public readonly uint rid_diskid; + public uint rid_diskid; /// Sectors on disk - public readonly uint rid_totblocks; + public uint rid_totblocks; /// Cylinders - public readonly ushort rid_cylinders; + public ushort rid_cylinders; /// Sectors in cylinder 0 - public readonly ushort rid_cyl0size; + public ushort rid_cyl0size; /// Sectors per cylinder - public readonly ushort rid_cylsize; + public ushort rid_cylsize; /// Heads - public readonly ushort rid_heads; + public ushort rid_heads; /// Bytes per sector - public readonly ushort rid_blocksize; + public ushort rid_blocksize; /// Disk format - public readonly ushort rid_format; + public ushort rid_format; /// Flags - public readonly ushort rid_flags; + public ushort rid_flags; /// Padding - public readonly ushort rid_unused1; + public ushort rid_unused1; /// Sector of allocation bitmap - public readonly uint rid_bitmap; + public uint rid_bitmap; /// Sector of debugger FD - public readonly uint rid_firstboot; + public uint rid_firstboot; /// Sector of bootfile FD - public readonly uint rid_bootfile; + public uint rid_bootfile; /// Sector of root directory FD - public readonly uint rid_rootdir; + public uint rid_rootdir; /// Group owner of media - public readonly ushort rid_group; + public ushort rid_group; /// Owner of media - public readonly ushort rid_owner; + public ushort rid_owner; /// Creation time - public readonly uint rid_ctime; + public uint rid_ctime; /// Last write time for this structure - public readonly uint rid_mtime; + public uint rid_mtime; /// Volume name [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] - public readonly byte[] rid_name; + public byte[] rid_name; /// Endian flag - public readonly byte rid_endflag; + public byte rid_endflag; /// Padding [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] - public readonly byte[] rid_unused2; + public byte[] rid_unused2; /// Parity - public readonly uint rid_parity; + public uint rid_parity; } #endregion