diff --git a/Aaru.Filesystems/MinixFS/Info.cs b/Aaru.Filesystems/MinixFS/Info.cs index b6221202b..ed545f342 100644 --- a/Aaru.Filesystems/MinixFS/Info.cs +++ b/Aaru.Filesystems/MinixFS/Info.cs @@ -224,7 +224,7 @@ public sealed partial class MinixFS { SuperBlock3 mnxSb = littleEndian ? Marshal.ByteArrayToStructureLittleEndian(minixSbSector) - : Marshal.ByteArrayToStructureBigEndian(minixSbSector); + : Marshal.ByteArrayToStructureBigEndianGenerated(minixSbSector); if(magic != MINIX3_MAGIC && magic != MINIX3_CIGAM) mnxSb.s_blocksize = 1024; @@ -268,7 +268,7 @@ public sealed partial class MinixFS { SuperBlock mnxSb = littleEndian ? Marshal.ByteArrayToStructureLittleEndian(minixSbSector) - : Marshal.ByteArrayToStructureBigEndian(minixSbSector); + : Marshal.ByteArrayToStructureBigEndianGenerated(minixSbSector); sb.AppendLine(minixVersion); sb.AppendFormat(Localization._0_chars_in_filename, filenamesize).AppendLine(); diff --git a/Aaru.Filesystems/MinixFS/Structs.cs b/Aaru.Filesystems/MinixFS/Structs.cs index 93d38496c..85a6ce872 100644 --- a/Aaru.Filesystems/MinixFS/Structs.cs +++ b/Aaru.Filesystems/MinixFS/Structs.cs @@ -27,6 +27,7 @@ // ****************************************************************************/ using System.Runtime.InteropServices; +using Aaru.CommonTypes.Attributes; namespace Aaru.Filesystems; @@ -39,28 +40,29 @@ public sealed partial class MinixFS /// Superblock for Minix v1 and V2 filesystems [StructLayout(LayoutKind.Sequential, Pack = 1)] - readonly struct SuperBlock + [SwapEndian] + partial struct SuperBlock { /// 0x00, inodes on volume - public readonly ushort s_ninodes; + public ushort s_ninodes; /// 0x02, zones on volume - public readonly ushort s_nzones; + public ushort s_nzones; /// 0x04, blocks on inode map - public readonly short s_imap_blocks; + public short s_imap_blocks; /// 0x06, blocks on zone map - public readonly short s_zmap_blocks; + public short s_zmap_blocks; /// 0x08, first data zone - public readonly ushort s_firstdatazone; + public ushort s_firstdatazone; /// 0x0A, log2 of blocks/zone - public readonly short s_log_zone_size; + public short s_log_zone_size; /// 0x0C, max file size - public readonly uint s_max_size; + public uint s_max_size; /// 0x10, magic - public readonly ushort s_magic; + public ushort s_magic; /// 0x12, filesystem state - public readonly ushort s_state; + public ushort s_state; /// 0x14, number of zones - public readonly uint s_zones; + public uint s_zones; } #endregion @@ -69,34 +71,35 @@ public sealed partial class MinixFS /// Superblock for Minix v3 filesystems [StructLayout(LayoutKind.Sequential, Pack = 1)] - struct SuperBlock3 + [SwapEndian] + partial struct SuperBlock3 { /// 0x00, inodes on volume - public readonly uint s_ninodes; + public uint s_ninodes; /// 0x02, old zones on volume - public readonly ushort s_nzones; + public ushort s_nzones; /// 0x06, blocks on inode map - public readonly ushort s_imap_blocks; + public ushort s_imap_blocks; /// 0x08, blocks on zone map - public readonly ushort s_zmap_blocks; + public ushort s_zmap_blocks; /// 0x0A, first data zone - public readonly ushort s_firstdatazone; + public ushort s_firstdatazone; /// 0x0C, log2 of blocks/zone - public readonly ushort s_log_zone_size; + public ushort s_log_zone_size; /// 0x0E, padding - public readonly ushort s_pad1; + public ushort s_pad1; /// 0x10, max file size - public readonly uint s_max_size; + public uint s_max_size; /// 0x14, number of zones - public readonly uint s_zones; + public uint s_zones; /// 0x18, magic - public readonly ushort s_magic; + public ushort s_magic; /// 0x1A, padding - public readonly ushort s_pad2; + public ushort s_pad2; /// 0x1C, bytes in a block public ushort s_blocksize; /// 0x1E, on-disk structures version - public readonly byte s_disk_version; + public byte s_disk_version; } #endregion