diff --git a/Aaru.Images/QCOW/Identify.cs b/Aaru.Images/QCOW/Identify.cs index 95202a214..ed3b3633a 100644 --- a/Aaru.Images/QCOW/Identify.cs +++ b/Aaru.Images/QCOW/Identify.cs @@ -50,7 +50,7 @@ public sealed partial class Qcow var qHdrB = new byte[48]; stream.EnsureRead(qHdrB, 0, 48); - _qHdr = Marshal.SpanToStructureBigEndian
(qHdrB); + _qHdr = Marshal.SpanToStructureBigEndianGenerated
(qHdrB); return _qHdr is { magic: QCOW_MAGIC, version: QCOW_VERSION }; } diff --git a/Aaru.Images/QCOW/Read.cs b/Aaru.Images/QCOW/Read.cs index 6ef1a63a5..dc7e00f2c 100644 --- a/Aaru.Images/QCOW/Read.cs +++ b/Aaru.Images/QCOW/Read.cs @@ -57,9 +57,9 @@ public sealed partial class Qcow if(stream.Length < 512) return ErrorNumber.InvalidArgument; - byte[] qHdrB = new byte[48]; + var qHdrB = new byte[48]; stream.EnsureRead(qHdrB, 0, 48); - _qHdr = Marshal.SpanToStructureBigEndian
(qHdrB); + _qHdr = Marshal.SpanToStructureBigEndianGenerated
(qHdrB); AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic); AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version); @@ -133,7 +133,7 @@ public sealed partial class Qcow AaruLogging.Debug(MODULE_NAME, "qHdr.l2Size = {0}", _l2Size); AaruLogging.Debug(MODULE_NAME, "qHdr.sectors = {0}", _imageInfo.Sectors); - byte[] l1TableB = new byte[_l1Size * 8]; + var l1TableB = new byte[_l1Size * 8]; stream.Seek((long)_qHdr.l1_table_offset, SeekOrigin.Begin); stream.EnsureRead(l1TableB, 0, (int)_l1Size * 8); _l1Table = MemoryMarshal.Cast(l1TableB).ToArray(); @@ -142,10 +142,10 @@ public sealed partial class Qcow for(long i = 0; i < _l1Table.LongLength; i++) _l1Table[i] = Swapping.Swap(_l1Table[i]); _l1Mask = 0; - int c = 0; + var c = 0; _l1Shift = _qHdr.l2_bits + _qHdr.cluster_bits; - for(int i = 0; i < 64; i++) + for(var i = 0; i < 64; i++) { _l1Mask <<= 1; @@ -157,13 +157,13 @@ public sealed partial class Qcow _l2Mask = 0; - for(int i = 0; i < _qHdr.l2_bits; i++) _l2Mask = (_l2Mask << 1) + 1; + for(var i = 0; i < _qHdr.l2_bits; i++) _l2Mask = (_l2Mask << 1) + 1; _l2Mask <<= _qHdr.cluster_bits; _sectorMask = 0; - for(int i = 0; i < _qHdr.cluster_bits; i++) _sectorMask = (_sectorMask << 1) + 1; + for(var i = 0; i < _qHdr.cluster_bits; i++) _sectorMask = (_sectorMask << 1) + 1; AaruLogging.Debug(MODULE_NAME, "qHdr.l1Mask = {0:X}", _l1Mask); AaruLogging.Debug(MODULE_NAME, "qHdr.l1Shift = {0}", _l1Shift); @@ -216,9 +216,9 @@ public sealed partial class Qcow if((long)l1Off >= _l1Table.LongLength) { AaruLogging.Debug(MODULE_NAME, - string.Format(Localization.Trying_to_read_past_L1_table_position_0_of_a_max_1, - l1Off, - _l1Table.LongLength)); + string.Format(Localization.Trying_to_read_past_L1_table_position_0_of_a_max_1, + l1Off, + _l1Table.LongLength)); return ErrorNumber.InvalidArgument; } @@ -234,7 +234,7 @@ public sealed partial class Qcow if(!_l2TableCache.TryGetValue(l1Off, out ulong[] l2Table)) { _imageStream.Seek((long)_l1Table[l1Off], SeekOrigin.Begin); - byte[] l2TableB = new byte[_l2Size * 8]; + var l2TableB = new byte[_l2Size * 8]; _imageStream.EnsureRead(l2TableB, 0, _l2Size * 8); AaruLogging.Debug(MODULE_NAME, Localization.Reading_L2_table_0, l1Off); l2Table = MemoryMarshal.Cast(l2TableB).ToArray(); @@ -265,7 +265,7 @@ public sealed partial class Qcow ulong realOff = offset & offMask; ulong compSize = (offset & compSizeMask) >> 63 - _qHdr.cluster_bits; - byte[] zCluster = new byte[compSize]; + var zCluster = new byte[compSize]; _imageStream.Seek((long)realOff, SeekOrigin.Begin); _imageStream.EnsureRead(zCluster, 0, (int)compSize); diff --git a/Aaru.Images/QCOW/Structs.cs b/Aaru.Images/QCOW/Structs.cs index 255e2a941..32f7fd7ce 100644 --- a/Aaru.Images/QCOW/Structs.cs +++ b/Aaru.Images/QCOW/Structs.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System.Runtime.InteropServices; +using Aaru.CommonTypes.Attributes; namespace Aaru.Images; @@ -40,7 +41,8 @@ public sealed partial class Qcow /// QCOW header, big-endian [StructLayout(LayoutKind.Sequential, Pack = 1)] - struct Header + [SwapEndian] + partial struct Header { /// /// @@ -49,9 +51,9 @@ public sealed partial class Qcow /// Must be 1 public uint version; /// Offset inside file to string containing backing file - public readonly ulong backing_file_offset; + public ulong backing_file_offset; /// Size of - public readonly uint backing_file_size; + public uint backing_file_size; /// Modification time public uint mtime; /// Size in bytes @@ -61,9 +63,9 @@ public sealed partial class Qcow /// L2 table bits public byte l2_bits; /// Padding - public readonly ushort padding; + public ushort padding; /// Encryption method - public readonly uint crypt_method; + public uint crypt_method; /// Offset to L1 table public ulong l1_table_offset; }