mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Replace old bigendian marshaller with new one.
This commit is contained in:
@@ -26,7 +26,7 @@ public sealed partial class Stfs
|
|||||||
|
|
||||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||||
|
|
||||||
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
|
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
|
||||||
|
|
||||||
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft)) return false;
|
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
|
// Reverse positions that hold UTF16-BE strings
|
||||||
ReverseShorts(hdr, 0x0411, 0x1300);
|
ReverseShorts(hdr, 0x0411, 0x1300);
|
||||||
|
|
||||||
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
|
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
|
||||||
|
|
||||||
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft)) return;
|
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)
|
if(header.Magic == PackageMagic.Console)
|
||||||
{
|
{
|
||||||
ConsolePackage consolePackage = Marshal.ByteArrayToStructureBigEndianGenerated<ConsolePackage>(hdr);
|
ConsolePackage consolePackage = Marshal.ByteArrayToStructureBigEndian<ConsolePackage>(hdr);
|
||||||
|
|
||||||
sb.AppendFormat(Localization.Certificate_owner_console_ID_0_1_2_3_4,
|
sb.AppendFormat(Localization.Certificate_owner_console_ID_0_1_2_3_4,
|
||||||
consolePackage.CertificateOwnerConsoleId[0],
|
consolePackage.CertificateOwnerConsoleId[0],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public sealed partial class Stfs
|
|||||||
|
|
||||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||||
|
|
||||||
RemotePackage header = Marshal.ByteArrayToStructureBigEndianGenerated<RemotePackage>(hdr);
|
RemotePackage header = Marshal.ByteArrayToStructureBigEndian<RemotePackage>(hdr);
|
||||||
|
|
||||||
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft))
|
if(header.Magic is not (PackageMagic.Console or PackageMagic.Live or PackageMagic.Microsoft))
|
||||||
return ErrorNumber.InvalidArgument;
|
return ErrorNumber.InvalidArgument;
|
||||||
@@ -56,7 +56,7 @@ public sealed partial class Stfs
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
FileTableEntry entry = Marshal.ByteArrayToStructureBigEndianGenerated<FileTableEntry>(buffer, in_pos, entrySize);
|
FileTableEntry entry = Marshal.ByteArrayToStructureBigEndian<FileTableEntry>(buffer, in_pos, entrySize);
|
||||||
|
|
||||||
if(entry.FilenameLength == 0) break;
|
if(entry.FilenameLength == 0) break;
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public sealed partial class AmigaDOSPlugin
|
|||||||
var tmp = new byte[228];
|
var tmp = new byte[228];
|
||||||
Array.Copy(block, 0, tmp, 0, 24);
|
Array.Copy(block, 0, tmp, 0, 24);
|
||||||
Array.Copy(block, block.Length - 200, tmp, 28, 200);
|
Array.Copy(block, block.Length - 200, tmp, 28, 200);
|
||||||
RootBlock root = Marshal.ByteArrayToStructureBigEndianGenerated<RootBlock>(tmp);
|
RootBlock root = Marshal.ByteArrayToStructureBigEndian<RootBlock>(tmp);
|
||||||
root.hashTable = new uint[(block.Length - 224) / 4];
|
root.hashTable = new uint[(block.Length - 224) / 4];
|
||||||
|
|
||||||
for(var i = 0; i < root.hashTable.Length; i++)
|
for(var i = 0; i < root.hashTable.Length; i++)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public sealed partial class AmigaDOSPlugin
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
BootBlock bblk = Marshal.ByteArrayToStructureBigEndianGenerated<BootBlock>(sector);
|
BootBlock bblk = Marshal.ByteArrayToStructureBigEndian<BootBlock>(sector);
|
||||||
|
|
||||||
// AROS boot floppies...
|
// AROS boot floppies...
|
||||||
if(sector.Length >= 512 &&
|
if(sector.Length >= 512 &&
|
||||||
@@ -73,7 +73,7 @@ public sealed partial class AmigaDOSPlugin
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
bblk = Marshal.ByteArrayToStructureBigEndianGenerated<BootBlock>(sector);
|
bblk = Marshal.ByteArrayToStructureBigEndian<BootBlock>(sector);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not FFS or MuFS?
|
// Not FFS or MuFS?
|
||||||
@@ -166,7 +166,7 @@ public sealed partial class AmigaDOSPlugin
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
BootBlock bootBlk = Marshal.ByteArrayToStructureBigEndianGenerated<BootBlock>(bootBlockSectors);
|
BootBlock bootBlk = Marshal.ByteArrayToStructureBigEndian<BootBlock>(bootBlockSectors);
|
||||||
bootBlk.bootCode = new byte[bootBlockSectors.Length - 12];
|
bootBlk.bootCode = new byte[bootBlockSectors.Length - 12];
|
||||||
Array.Copy(bootBlockSectors, 12, bootBlk.bootCode, 0, bootBlk.bootCode.Length);
|
Array.Copy(bootBlockSectors, 12, bootBlk.bootCode, 0, bootBlk.bootCode.Length);
|
||||||
bootBlockSectors[4] = bootBlockSectors[5] = bootBlockSectors[6] = bootBlockSectors[7] = 0;
|
bootBlockSectors[4] = bootBlockSectors[5] = bootBlockSectors[6] = bootBlockSectors[7] = 0;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ static partial class AppleCommon
|
|||||||
{
|
{
|
||||||
if(bbSector is null || bbSector.Length < 0x100) return null;
|
if(bbSector is null || bbSector.Length < 0x100) return null;
|
||||||
|
|
||||||
BootBlock bb = Marshal.ByteArrayToStructureBigEndianGenerated<BootBlock>(bbSector);
|
BootBlock bb = Marshal.ByteArrayToStructureBigEndian<BootBlock>(bbSector);
|
||||||
|
|
||||||
if(bb.bbID != BB_MAGIC) return null;
|
if(bb.bbID != BB_MAGIC) return null;
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public sealed partial class AppleHFS
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MasterDirectoryBlock mdb = Marshal.ByteArrayToStructureBigEndianGenerated<MasterDirectoryBlock>(mdbSector);
|
MasterDirectoryBlock mdb = Marshal.ByteArrayToStructureBigEndian<MasterDirectoryBlock>(mdbSector);
|
||||||
|
|
||||||
sb.AppendLine(Localization.Name_Apple_Hierarchical_File_System);
|
sb.AppendLine(Localization.Name_Apple_Hierarchical_File_System);
|
||||||
sb.AppendLine();
|
sb.AppendLine();
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ public sealed partial class AppleHFSPlus
|
|||||||
Array.Copy(vhSector, 0x400, tmp, 0, 0x400);
|
Array.Copy(vhSector, 0x400, tmp, 0, 0x400);
|
||||||
vhSector = tmp;
|
vhSector = tmp;
|
||||||
|
|
||||||
vh = Marshal.ByteArrayToStructureBigEndianGenerated<VolumeHeader>(vhSector);
|
vh = Marshal.ByteArrayToStructureBigEndian<VolumeHeader>(vhSector);
|
||||||
|
|
||||||
if(vh.version is 4 or 5)
|
if(vh.version is 4 or 5)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public sealed partial class AppleMFS
|
|||||||
entry.flTyp = _directoryBlocks[offset + 1];
|
entry.flTyp = _directoryBlocks[offset + 1];
|
||||||
|
|
||||||
entry.flUsrWds =
|
entry.flUsrWds =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleCommon.FInfo>(_directoryBlocks, offset + 2, 16);
|
Marshal.ByteArrayToStructureBigEndian<AppleCommon.FInfo>(_directoryBlocks, offset + 2, 16);
|
||||||
|
|
||||||
entry.flFlNum = BigEndianBitConverter.ToUInt32(_directoryBlocks, offset + 18);
|
entry.flFlNum = BigEndianBitConverter.ToUInt32(_directoryBlocks, offset + 18);
|
||||||
entry.flStBlk = BigEndianBitConverter.ToUInt16(_directoryBlocks, offset + 22);
|
entry.flStBlk = BigEndianBitConverter.ToUInt16(_directoryBlocks, offset + 22);
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ public sealed partial class BeFS
|
|||||||
|
|
||||||
besb = littleEndian
|
besb = littleEndian
|
||||||
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(sbSector)
|
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(sbSector)
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sbSector);
|
: Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sbSector);
|
||||||
|
|
||||||
sb.AppendLine(littleEndian ? Localization.Little_endian_BeFS : Localization.Big_endian_BeFS);
|
sb.AppendLine(littleEndian ? Localization.Little_endian_BeFS : Localization.Big_endian_BeFS);
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public sealed partial class CBM
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return errno;
|
if(errno != ErrorNumber.NoError) return errno;
|
||||||
|
|
||||||
Header cbmHdr = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_diskHeader);
|
Header cbmHdr = Marshal.ByteArrayToStructureBigEndian<Header>(_diskHeader);
|
||||||
|
|
||||||
if(cbmHdr.diskDosVersion != 0x44 || cbmHdr is not { dosVersion: 0x33, diskVersion: 0x44 })
|
if(cbmHdr.diskDosVersion != 0x44 || cbmHdr is not { dosVersion: 0x33, diskVersion: 0x44 })
|
||||||
return ErrorNumber.InvalidArgument;
|
return ErrorNumber.InvalidArgument;
|
||||||
@@ -126,7 +126,7 @@ public sealed partial class CBM
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return errno;
|
if(errno != ErrorNumber.NoError) return errno;
|
||||||
|
|
||||||
BAM cbmBam = Marshal.ByteArrayToStructureBigEndianGenerated<BAM>(_bam);
|
BAM cbmBam = Marshal.ByteArrayToStructureBigEndian<BAM>(_bam);
|
||||||
|
|
||||||
if(cbmBam is not ({ dosVersion: 0x41, doubleSided : 0x00 or 0x80 }
|
if(cbmBam is not ({ dosVersion: 0x41, doubleSided : 0x00 or 0x80 }
|
||||||
and { unused1 : 0x00, directoryTrack: 0x12 }))
|
and { unused1 : 0x00, directoryTrack: 0x12 }))
|
||||||
@@ -228,7 +228,7 @@ public sealed partial class CBM
|
|||||||
|
|
||||||
while(offset < _root.Length)
|
while(offset < _root.Length)
|
||||||
{
|
{
|
||||||
DirectoryEntry dirEntry = Marshal.ByteArrayToStructureBigEndianGenerated<DirectoryEntry>(_root, offset, 32);
|
DirectoryEntry dirEntry = Marshal.ByteArrayToStructureBigEndian<DirectoryEntry>(_root, offset, 32);
|
||||||
|
|
||||||
if(dirEntry.fileType == 0)
|
if(dirEntry.fileType == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ public sealed partial class Cram
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case CRAM_CIGAM:
|
case CRAM_CIGAM:
|
||||||
crSb = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sector);
|
crSb = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sector);
|
||||||
littleEndian = false;
|
littleEndian = false;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public sealed partial class EFS
|
|||||||
|
|
||||||
Array.Copy(sector, 0x200, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
Array.Copy(sector, 0x200, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
||||||
|
|
||||||
Superblock sb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sbpiece);
|
Superblock sb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sbpiece);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_expected_2_or_3,
|
Localization.magic_at_0_equals_1_expected_2_or_3,
|
||||||
@@ -88,7 +88,7 @@ public sealed partial class EFS
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
||||||
|
|
||||||
Superblock sb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock sb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_expected_2_or_3,
|
Localization.magic_at_0_equals_1_expected_2_or_3,
|
||||||
@@ -132,7 +132,7 @@ public sealed partial class EFS
|
|||||||
|
|
||||||
Array.Copy(sector, 0x200, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
Array.Copy(sector, 0x200, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
||||||
|
|
||||||
efsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sbpiece);
|
efsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sbpiece);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_X3_equals_1_expected_2_or_3,
|
Localization.magic_at_0_X3_equals_1_expected_2_or_3,
|
||||||
@@ -153,7 +153,7 @@ public sealed partial class EFS
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<Superblock>()) return;
|
if(sector.Length < Marshal.SizeOf<Superblock>()) return;
|
||||||
|
|
||||||
efsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
efsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_expected_2_or_3,
|
Localization.magic_at_0_equals_1_expected_2_or_3,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public sealed partial class FAT
|
|||||||
andosOemCorrect = false;
|
andosOemCorrect = false;
|
||||||
bootable = false;
|
bootable = false;
|
||||||
|
|
||||||
humanBpb = Marshal.ByteArrayToStructureBigEndianGenerated<HumanParameterBlock>(bpbSector);
|
humanBpb = Marshal.ByteArrayToStructureBigEndian<HumanParameterBlock>(bpbSector);
|
||||||
atariBpb = Marshal.ByteArrayToStructureLittleEndian<AtariParameterBlock>(bpbSector);
|
atariBpb = Marshal.ByteArrayToStructureLittleEndian<AtariParameterBlock>(bpbSector);
|
||||||
|
|
||||||
ulong expectedClusters = humanBpb.bpc > 0 ? partition.Size / humanBpb.bpc : 0;
|
ulong expectedClusters = humanBpb.bpc > 0 ? partition.Size / humanBpb.bpc : 0;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public sealed partial class FAT
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
HumanParameterBlock humanBpb = Marshal.ByteArrayToStructureBigEndianGenerated<HumanParameterBlock>(bpbSector);
|
HumanParameterBlock humanBpb = Marshal.ByteArrayToStructureBigEndian<HumanParameterBlock>(bpbSector);
|
||||||
|
|
||||||
ulong expectedClusters = humanBpb.bpc > 0 ? partition.Size / humanBpb.bpc : 0;
|
ulong expectedClusters = humanBpb.bpc > 0 ? partition.Size / humanBpb.bpc : 0;
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public sealed partial class XboxFatPlugin
|
|||||||
? Marshal.ByteArrayToStructureLittleEndian<DirectoryEntry>(directoryBuffer,
|
? Marshal.ByteArrayToStructureLittleEndian<DirectoryEntry>(directoryBuffer,
|
||||||
pos,
|
pos,
|
||||||
Marshal.SizeOf<DirectoryEntry>())
|
Marshal.SizeOf<DirectoryEntry>())
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<DirectoryEntry>(directoryBuffer,
|
: Marshal.ByteArrayToStructureBigEndian<DirectoryEntry>(directoryBuffer,
|
||||||
pos,
|
pos,
|
||||||
Marshal.SizeOf<DirectoryEntry>());
|
Marshal.SizeOf<DirectoryEntry>());
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public sealed partial class XboxFatPlugin
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
Superblock sb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock sb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
return sb.magic is FATX_MAGIC or FATX_CIGAM;
|
return sb.magic is FATX_MAGIC or FATX_CIGAM;
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ public sealed partial class XboxFatPlugin
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
Superblock fatxSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock fatxSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
if(fatxSb.magic == FATX_CIGAM)
|
if(fatxSb.magic == FATX_CIGAM)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public sealed partial class XboxFatPlugin
|
|||||||
|
|
||||||
if(_superblock.magic == FATX_CIGAM)
|
if(_superblock.magic == FATX_CIGAM)
|
||||||
{
|
{
|
||||||
_superblock = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
_superblock = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
_littleEndian = false;
|
_littleEndian = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@ public sealed partial class XboxFatPlugin
|
|||||||
? Marshal.ByteArrayToStructureLittleEndian<DirectoryEntry>(rootDirectoryBuffer,
|
? Marshal.ByteArrayToStructureLittleEndian<DirectoryEntry>(rootDirectoryBuffer,
|
||||||
pos,
|
pos,
|
||||||
Marshal.SizeOf<DirectoryEntry>())
|
Marshal.SizeOf<DirectoryEntry>())
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<DirectoryEntry>(rootDirectoryBuffer,
|
: Marshal.ByteArrayToStructureBigEndian<DirectoryEntry>(rootDirectoryBuffer,
|
||||||
pos,
|
pos,
|
||||||
Marshal.SizeOf<DirectoryEntry>());
|
Marshal.SizeOf<DirectoryEntry>());
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ public sealed partial class FFSPlugin
|
|||||||
|
|
||||||
SuperBlock sb = Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(ufs_sb_sectors);
|
SuperBlock sb = Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(ufs_sb_sectors);
|
||||||
|
|
||||||
SuperBlock bs_sfu = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(ufs_sb_sectors);
|
SuperBlock bs_sfu = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(ufs_sb_sectors);
|
||||||
|
|
||||||
if(bs_sfu.fs_magic == UFS_MAGIC && sb.fs_magic == UFS_CIGAM ||
|
if(bs_sfu.fs_magic == UFS_MAGIC && sb.fs_magic == UFS_CIGAM ||
|
||||||
bs_sfu.fs_magic == UFS_MAGIC_BW && sb.fs_magic == UFS_CIGAM_BW ||
|
bs_sfu.fs_magic == UFS_MAGIC_BW && sb.fs_magic == UFS_CIGAM_BW ||
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public sealed partial class Fossil
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
Header hdr = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(sector);
|
Header hdr = Marshal.ByteArrayToStructureBigEndian<Header>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_expected_1, hdr.magic, FOSSIL_HDR_MAGIC);
|
AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_expected_1, hdr.magic, FOSSIL_HDR_MAGIC);
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ public sealed partial class Fossil
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
Header hdr = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(sector);
|
Header hdr = Marshal.ByteArrayToStructureBigEndian<Header>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_expected_1, hdr.magic, FOSSIL_HDR_MAGIC);
|
AaruLogging.Debug(MODULE_NAME, Localization.magic_at_0_expected_1, hdr.magic, FOSSIL_HDR_MAGIC);
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ public sealed partial class Fossil
|
|||||||
if(sbLocation <= partition.End)
|
if(sbLocation <= partition.End)
|
||||||
{
|
{
|
||||||
imagePlugin.ReadSector(sbLocation, out sector);
|
imagePlugin.ReadSector(sbLocation, out sector);
|
||||||
SuperBlock fsb = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sector);
|
SuperBlock fsb = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, Localization.magic_0_expected_1, fsb.magic, FOSSIL_SB_MAGIC);
|
AaruLogging.Debug(MODULE_NAME, Localization.magic_0_expected_1, fsb.magic, FOSSIL_SB_MAGIC);
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public sealed partial class HAMMER
|
|||||||
|
|
||||||
SuperBlock superBlock = magic == HAMMER_FSBUF_VOLUME
|
SuperBlock superBlock = magic == HAMMER_FSBUF_VOLUME
|
||||||
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(sbSector)
|
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(sbSector)
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sbSector);
|
: Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sbSector);
|
||||||
|
|
||||||
sb.AppendLine(Localization.HAMMER_filesystem);
|
sb.AppendLine(Localization.HAMMER_filesystem);
|
||||||
|
|
||||||
|
|||||||
@@ -93,10 +93,10 @@ public sealed partial class HPOFS
|
|||||||
BiosParameterBlock bpb = Marshal.ByteArrayToStructureLittleEndian<BiosParameterBlock>(hpofsBpbSector);
|
BiosParameterBlock bpb = Marshal.ByteArrayToStructureLittleEndian<BiosParameterBlock>(hpofsBpbSector);
|
||||||
|
|
||||||
MediaInformationBlock mib =
|
MediaInformationBlock mib =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<MediaInformationBlock>(medInfoSector);
|
Marshal.ByteArrayToStructureBigEndian<MediaInformationBlock>(medInfoSector);
|
||||||
|
|
||||||
VolumeInformationBlock vib =
|
VolumeInformationBlock vib =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<VolumeInformationBlock>(volInfoSector);
|
Marshal.ByteArrayToStructureBigEndian<VolumeInformationBlock>(volInfoSector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "bpb.oem_name = \"{0}\"", StringHandlers.CToString(bpb.oem_name));
|
AaruLogging.Debug(MODULE_NAME, "bpb.oem_name = \"{0}\"", StringHandlers.CToString(bpb.oem_name));
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public sealed partial class ISO9660
|
|||||||
while(entryOff + _cdiDirectoryRecordSize < data.Length)
|
while(entryOff + _cdiDirectoryRecordSize < data.Length)
|
||||||
{
|
{
|
||||||
CdiDirectoryRecord record =
|
CdiDirectoryRecord record =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<CdiDirectoryRecord>(data,
|
Marshal.ByteArrayToStructureBigEndian<CdiDirectoryRecord>(data,
|
||||||
entryOff,
|
entryOff,
|
||||||
_cdiDirectoryRecordSize);
|
_cdiDirectoryRecordSize);
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ public sealed partial class ISO9660
|
|||||||
if(systemAreaStart % 2 != 0) systemAreaStart++;
|
if(systemAreaStart % 2 != 0) systemAreaStart++;
|
||||||
|
|
||||||
entry.CdiSystemArea =
|
entry.CdiSystemArea =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<CdiSystemArea>(data,
|
Marshal.ByteArrayToStructureBigEndian<CdiSystemArea>(data,
|
||||||
systemAreaStart,
|
systemAreaStart,
|
||||||
_cdiSystemAreaSize);
|
_cdiSystemAreaSize);
|
||||||
|
|
||||||
@@ -459,7 +459,7 @@ public sealed partial class ISO9660
|
|||||||
break;
|
break;
|
||||||
case AppleId.HFS:
|
case AppleId.HFS:
|
||||||
AppleHFSSystemUse appleHfsSystemUse =
|
AppleHFSSystemUse appleHfsSystemUse =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleHFSSystemUse>(data,
|
Marshal.ByteArrayToStructureBigEndian<AppleHFSSystemUse>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<AppleHFSSystemUse>());
|
Marshal.SizeOf<AppleHFSSystemUse>());
|
||||||
|
|
||||||
@@ -500,7 +500,7 @@ public sealed partial class ISO9660
|
|||||||
case AppleOldId.TypeCreator:
|
case AppleOldId.TypeCreator:
|
||||||
case AppleOldId.TypeCreatorBundle:
|
case AppleOldId.TypeCreatorBundle:
|
||||||
AppleHFSTypeCreatorSystemUse appleHfsTypeCreatorSystemUse =
|
AppleHFSTypeCreatorSystemUse appleHfsTypeCreatorSystemUse =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleHFSTypeCreatorSystemUse>(data,
|
Marshal.ByteArrayToStructureBigEndian<AppleHFSTypeCreatorSystemUse>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<AppleHFSTypeCreatorSystemUse>());
|
Marshal.SizeOf<AppleHFSTypeCreatorSystemUse>());
|
||||||
|
|
||||||
@@ -520,7 +520,7 @@ public sealed partial class ISO9660
|
|||||||
case AppleOldId.TypeCreatorIcon:
|
case AppleOldId.TypeCreatorIcon:
|
||||||
case AppleOldId.TypeCreatorIconBundle:
|
case AppleOldId.TypeCreatorIconBundle:
|
||||||
AppleHFSIconSystemUse appleHfsIconSystemUse =
|
AppleHFSIconSystemUse appleHfsIconSystemUse =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleHFSIconSystemUse>(data,
|
Marshal.ByteArrayToStructureBigEndian<AppleHFSIconSystemUse>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<AppleHFSIconSystemUse>());
|
Marshal.SizeOf<AppleHFSIconSystemUse>());
|
||||||
|
|
||||||
@@ -540,7 +540,7 @@ public sealed partial class ISO9660
|
|||||||
break;
|
break;
|
||||||
case AppleOldId.HFS:
|
case AppleOldId.HFS:
|
||||||
AppleHFSOldSystemUse appleHfsSystemUse =
|
AppleHFSOldSystemUse appleHfsSystemUse =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleHFSOldSystemUse>(data,
|
Marshal.ByteArrayToStructureBigEndian<AppleHFSOldSystemUse>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<AppleHFSOldSystemUse>());
|
Marshal.SizeOf<AppleHFSOldSystemUse>());
|
||||||
|
|
||||||
@@ -567,7 +567,7 @@ public sealed partial class ISO9660
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case XA_MAGIC:
|
case XA_MAGIC:
|
||||||
entry.XA = Marshal.ByteArrayToStructureBigEndianGenerated<CdromXa>(data,
|
entry.XA = Marshal.ByteArrayToStructureBigEndian<CdromXa>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<CdromXa>());
|
Marshal.SizeOf<CdromXa>());
|
||||||
|
|
||||||
@@ -579,7 +579,7 @@ public sealed partial class ISO9660
|
|||||||
case AAIP_MAGIC:
|
case AAIP_MAGIC:
|
||||||
case AMIGA_MAGIC:
|
case AMIGA_MAGIC:
|
||||||
AmigaEntry amiga =
|
AmigaEntry amiga =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AmigaEntry>(data,
|
Marshal.ByteArrayToStructureBigEndian<AmigaEntry>(data,
|
||||||
systemAreaOff,
|
systemAreaOff,
|
||||||
Marshal.SizeOf<AmigaEntry>());
|
Marshal.SizeOf<AmigaEntry>());
|
||||||
|
|
||||||
@@ -588,7 +588,7 @@ public sealed partial class ISO9660
|
|||||||
if(amiga.flags.HasFlag(AmigaFlags.Protection))
|
if(amiga.flags.HasFlag(AmigaFlags.Protection))
|
||||||
{
|
{
|
||||||
entry.AmigaProtection =
|
entry.AmigaProtection =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AmigaProtection>(data,
|
Marshal.ByteArrayToStructureBigEndian<AmigaProtection>(data,
|
||||||
systemAreaOff + Marshal.SizeOf<AmigaEntry>(),
|
systemAreaOff + Marshal.SizeOf<AmigaEntry>(),
|
||||||
Marshal.SizeOf<AmigaProtection>());
|
Marshal.SizeOf<AmigaProtection>());
|
||||||
|
|
||||||
@@ -995,7 +995,7 @@ public sealed partial class ISO9660
|
|||||||
if(errno != ErrorNumber.NoError) continue;
|
if(errno != ErrorNumber.NoError) continue;
|
||||||
|
|
||||||
CdiDirectoryRecord record =
|
CdiDirectoryRecord record =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<CdiDirectoryRecord>(sector,
|
Marshal.ByteArrayToStructureBigEndian<CdiDirectoryRecord>(sector,
|
||||||
tEntry.XattrLength,
|
tEntry.XattrLength,
|
||||||
_cdiDirectoryRecordSize);
|
_cdiDirectoryRecordSize);
|
||||||
|
|
||||||
@@ -1020,7 +1020,7 @@ public sealed partial class ISO9660
|
|||||||
if(systemAreaStart % 2 != 0) systemAreaStart++;
|
if(systemAreaStart % 2 != 0) systemAreaStart++;
|
||||||
|
|
||||||
entry.CdiSystemArea =
|
entry.CdiSystemArea =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<CdiSystemArea>(sector,
|
Marshal.ByteArrayToStructureBigEndian<CdiSystemArea>(sector,
|
||||||
systemAreaStart,
|
systemAreaStart,
|
||||||
_cdiSystemAreaSize);
|
_cdiSystemAreaSize);
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ public sealed partial class ISO9660
|
|||||||
if(highSierraInfo)
|
if(highSierraInfo)
|
||||||
hsvd = Marshal.ByteArrayToStructureLittleEndian<HighSierraPrimaryVolumeDescriptor>(vdSector);
|
hsvd = Marshal.ByteArrayToStructureLittleEndian<HighSierraPrimaryVolumeDescriptor>(vdSector);
|
||||||
else if(cdiInfo)
|
else if(cdiInfo)
|
||||||
fsvd = Marshal.ByteArrayToStructureBigEndianGenerated<FileStructureVolumeDescriptor>(vdSector);
|
fsvd = Marshal.ByteArrayToStructureBigEndian<FileStructureVolumeDescriptor>(vdSector);
|
||||||
else
|
else
|
||||||
pvd = Marshal.ByteArrayToStructureLittleEndian<PrimaryVolumeDescriptor>(vdSector);
|
pvd = Marshal.ByteArrayToStructureLittleEndian<PrimaryVolumeDescriptor>(vdSector);
|
||||||
|
|
||||||
@@ -319,7 +319,7 @@ public sealed partial class ISO9660
|
|||||||
|
|
||||||
if(Marshal.SizeOf<CdromXa>() + saOff <= saLen)
|
if(Marshal.SizeOf<CdromXa>() + saOff <= saLen)
|
||||||
{
|
{
|
||||||
CdromXa xa = Marshal.ByteArrayToStructureBigEndianGenerated<CdromXa>(sa);
|
CdromXa xa = Marshal.ByteArrayToStructureBigEndian<CdromXa>(sa);
|
||||||
|
|
||||||
if(xa.signature == XA_MAGIC)
|
if(xa.signature == XA_MAGIC)
|
||||||
{
|
{
|
||||||
@@ -397,7 +397,7 @@ public sealed partial class ISO9660
|
|||||||
Array.Copy(sa, saOff, ce, 0, ce.Length);
|
Array.Copy(sa, saOff, ce, 0, ce.Length);
|
||||||
|
|
||||||
ContinuationArea ca =
|
ContinuationArea ca =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<ContinuationArea>(ce);
|
Marshal.ByteArrayToStructureBigEndian<ContinuationArea>(ce);
|
||||||
|
|
||||||
contareas.Add(ca);
|
contareas.Add(ca);
|
||||||
|
|
||||||
@@ -515,7 +515,7 @@ public sealed partial class ISO9660
|
|||||||
|
|
||||||
foreach(byte[] erb in refareas)
|
foreach(byte[] erb in refareas)
|
||||||
{
|
{
|
||||||
ReferenceArea er = Marshal.ByteArrayToStructureBigEndianGenerated<ReferenceArea>(erb);
|
ReferenceArea er = Marshal.ByteArrayToStructureBigEndian<ReferenceArea>(erb);
|
||||||
string extId = encoding.GetString(erb, Marshal.SizeOf<ReferenceArea>(), er.id_len);
|
string extId = encoding.GetString(erb, Marshal.SizeOf<ReferenceArea>(), er.id_len);
|
||||||
|
|
||||||
string extDes = encoding.GetString(erb, Marshal.SizeOf<ReferenceArea>() + er.id_len, er.des_len);
|
string extDes = encoding.GetString(erb, Marshal.SizeOf<ReferenceArea>() + er.id_len, er.des_len);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public sealed partial class ISO9660
|
|||||||
var off = 0;
|
var off = 0;
|
||||||
|
|
||||||
PathTableEntry entry =
|
PathTableEntry entry =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<PathTableEntry>(data, off, Marshal.SizeOf<PathTableEntry>());
|
Marshal.ByteArrayToStructureBigEndian<PathTableEntry>(data, off, Marshal.SizeOf<PathTableEntry>());
|
||||||
|
|
||||||
if(entry.name_len != 1 ||
|
if(entry.name_len != 1 ||
|
||||||
entry.parent_dirno != 1 ||
|
entry.parent_dirno != 1 ||
|
||||||
@@ -53,7 +53,7 @@ public sealed partial class ISO9660
|
|||||||
|
|
||||||
while(off < data.Length)
|
while(off < data.Length)
|
||||||
{
|
{
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<PathTableEntry>(data,
|
entry = Marshal.ByteArrayToStructureBigEndian<PathTableEntry>(data,
|
||||||
off,
|
off,
|
||||||
Marshal.SizeOf<PathTableEntry>());
|
Marshal.SizeOf<PathTableEntry>());
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ public sealed partial class ISO9660
|
|||||||
while(off < data.Length)
|
while(off < data.Length)
|
||||||
{
|
{
|
||||||
HighSierraPathTableEntry entry =
|
HighSierraPathTableEntry entry =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<HighSierraPathTableEntry>(data,
|
Marshal.ByteArrayToStructureBigEndian<HighSierraPathTableEntry>(data,
|
||||||
off,
|
off,
|
||||||
Marshal.SizeOf<HighSierraPathTableEntry>());
|
Marshal.SizeOf<HighSierraPathTableEntry>());
|
||||||
|
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public sealed partial class ISO9660
|
|||||||
if(_highSierra)
|
if(_highSierra)
|
||||||
hsvd = Marshal.ByteArrayToStructureLittleEndian<HighSierraPrimaryVolumeDescriptor>(vdSector);
|
hsvd = Marshal.ByteArrayToStructureLittleEndian<HighSierraPrimaryVolumeDescriptor>(vdSector);
|
||||||
else if(_cdi)
|
else if(_cdi)
|
||||||
fsvd = Marshal.ByteArrayToStructureBigEndianGenerated<FileStructureVolumeDescriptor>(vdSector);
|
fsvd = Marshal.ByteArrayToStructureBigEndian<FileStructureVolumeDescriptor>(vdSector);
|
||||||
else
|
else
|
||||||
pvd = Marshal.ByteArrayToStructureLittleEndian<PrimaryVolumeDescriptor>(vdSector);
|
pvd = Marshal.ByteArrayToStructureLittleEndian<PrimaryVolumeDescriptor>(vdSector);
|
||||||
|
|
||||||
@@ -423,7 +423,7 @@ public sealed partial class ISO9660
|
|||||||
if(errno != ErrorNumber.NoError) return errno;
|
if(errno != ErrorNumber.NoError) return errno;
|
||||||
|
|
||||||
CdiDirectoryRecord rootEntry =
|
CdiDirectoryRecord rootEntry =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<CdiDirectoryRecord>(firstRootSector);
|
Marshal.ByteArrayToStructureBigEndian<CdiDirectoryRecord>(firstRootSector);
|
||||||
|
|
||||||
rootSize = rootEntry.size;
|
rootSize = rootEntry.size;
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public sealed partial class LIF
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
SystemBlock lifSb = Marshal.ByteArrayToStructureBigEndianGenerated<SystemBlock>(sector);
|
SystemBlock lifSb = Marshal.ByteArrayToStructureBigEndian<SystemBlock>(sector);
|
||||||
AaruLogging.Debug(MODULE_NAME, Localization.magic_0_expected_1, lifSb.magic, LIF_MAGIC);
|
AaruLogging.Debug(MODULE_NAME, Localization.magic_0_expected_1, lifSb.magic, LIF_MAGIC);
|
||||||
|
|
||||||
return lifSb.magic == LIF_MAGIC;
|
return lifSb.magic == LIF_MAGIC;
|
||||||
@@ -72,7 +72,7 @@ public sealed partial class LIF
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
SystemBlock lifSb = Marshal.ByteArrayToStructureBigEndianGenerated<SystemBlock>(sector);
|
SystemBlock lifSb = Marshal.ByteArrayToStructureBigEndian<SystemBlock>(sector);
|
||||||
|
|
||||||
if(lifSb.magic != LIF_MAGIC) return;
|
if(lifSb.magic != LIF_MAGIC) return;
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public sealed partial class Locus
|
|||||||
// Numerical arrays are not important for information so no need to swap them
|
// Numerical arrays are not important for information so no need to swap them
|
||||||
if(locusSb.s_magic is LOCUS_CIGAM or LOCUS_CIGAM_OLD)
|
if(locusSb.s_magic is LOCUS_CIGAM or LOCUS_CIGAM_OLD)
|
||||||
{
|
{
|
||||||
locusSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
locusSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
locusSb.s_flags = (Flags)Swapping.Swap((ushort)locusSb.s_flags);
|
locusSb.s_flags = (Flags)Swapping.Swap((ushort)locusSb.s_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ public sealed partial class MinixFS
|
|||||||
{
|
{
|
||||||
SuperBlock3 mnxSb = littleEndian
|
SuperBlock3 mnxSb = littleEndian
|
||||||
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock3>(minixSbSector)
|
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock3>(minixSbSector)
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock3>(minixSbSector);
|
: Marshal.ByteArrayToStructureBigEndian<SuperBlock3>(minixSbSector);
|
||||||
|
|
||||||
if(magic != MINIX3_MAGIC && magic != MINIX3_CIGAM) mnxSb.s_blocksize = 1024;
|
if(magic != MINIX3_MAGIC && magic != MINIX3_CIGAM) mnxSb.s_blocksize = 1024;
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ public sealed partial class MinixFS
|
|||||||
{
|
{
|
||||||
SuperBlock mnxSb = littleEndian
|
SuperBlock mnxSb = littleEndian
|
||||||
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(minixSbSector)
|
? Marshal.ByteArrayToStructureLittleEndian<SuperBlock>(minixSbSector)
|
||||||
: Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(minixSbSector);
|
: Marshal.ByteArrayToStructureBigEndian<SuperBlock>(minixSbSector);
|
||||||
|
|
||||||
sb.AppendLine(minixVersion);
|
sb.AppendLine(minixVersion);
|
||||||
sb.AppendFormat(Localization._0_chars_in_filename, filenamesize).AppendLine();
|
sb.AppendFormat(Localization._0_chars_in_filename, filenamesize).AppendLine();
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ public sealed partial class OperaFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) break;
|
if(errno != ErrorNumber.NoError) break;
|
||||||
|
|
||||||
header = Marshal.ByteArrayToStructureBigEndianGenerated<DirectoryHeader>(data);
|
header = Marshal.ByteArrayToStructureBigEndian<DirectoryHeader>(data);
|
||||||
nextBlock = header.next_block + firstBlock;
|
nextBlock = header.next_block + firstBlock;
|
||||||
|
|
||||||
var off = (int)header.first_used;
|
var off = (int)header.first_used;
|
||||||
@@ -180,7 +180,7 @@ public sealed partial class OperaFS
|
|||||||
|
|
||||||
while(off + _directoryEntrySize < data.Length)
|
while(off + _directoryEntrySize < data.Length)
|
||||||
{
|
{
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<DirectoryEntry>(data, off, _directoryEntrySize);
|
entry = Marshal.ByteArrayToStructureBigEndian<DirectoryEntry>(data, off, _directoryEntrySize);
|
||||||
string name = StringHandlers.CToString(entry.name, _encoding);
|
string name = StringHandlers.CToString(entry.name, _encoding);
|
||||||
|
|
||||||
var entryWithPointers = new DirectoryEntryWithPointers
|
var entryWithPointers = new DirectoryEntryWithPointers
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public sealed partial class OperaFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
SuperBlock sb = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sbSector);
|
SuperBlock sb = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sbSector);
|
||||||
|
|
||||||
if(sb.record_type != 1 || sb.record_version != 1) return;
|
if(sb.record_type != 1 || sb.record_version != 1) return;
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public sealed partial class OperaFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return errno;
|
if(errno != ErrorNumber.NoError) return errno;
|
||||||
|
|
||||||
SuperBlock sb = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sbSector);
|
SuperBlock sb = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sbSector);
|
||||||
|
|
||||||
if(sb.record_type != 1 || sb.record_version != 1) return ErrorNumber.InvalidArgument;
|
if(sb.record_type != 1 || sb.record_version != 1) return ErrorNumber.InvalidArgument;
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public sealed partial class PFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
RootBlock rootBlock = Marshal.ByteArrayToStructureBigEndianGenerated<RootBlock>(rootBlockSector);
|
RootBlock rootBlock = Marshal.ByteArrayToStructureBigEndian<RootBlock>(rootBlockSector);
|
||||||
|
|
||||||
var sbInformation = new StringBuilder();
|
var sbInformation = new StringBuilder();
|
||||||
metadata = new FileSystem();
|
metadata = new FileSystem();
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ public sealed partial class RBF
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<IdSector>()) return false;
|
if(sector.Length < Marshal.SizeOf<IdSector>()) return false;
|
||||||
|
|
||||||
IdSector rbfSb = Marshal.ByteArrayToStructureBigEndianGenerated<IdSector>(sector);
|
IdSector rbfSb = Marshal.ByteArrayToStructureBigEndian<IdSector>(sector);
|
||||||
NewIdSector rbf9000Sb = Marshal.ByteArrayToStructureBigEndianGenerated<NewIdSector>(sector);
|
NewIdSector rbf9000Sb = Marshal.ByteArrayToStructureBigEndian<NewIdSector>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_or_2_expected_3_or_4,
|
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<IdSector>()) return;
|
if(sector.Length < Marshal.SizeOf<IdSector>()) return;
|
||||||
|
|
||||||
rbfSb = Marshal.ByteArrayToStructureBigEndianGenerated<IdSector>(sector);
|
rbfSb = Marshal.ByteArrayToStructureBigEndian<IdSector>(sector);
|
||||||
rbf9000Sb = Marshal.ByteArrayToStructureBigEndianGenerated<NewIdSector>(sector);
|
rbf9000Sb = Marshal.ByteArrayToStructureBigEndian<NewIdSector>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_or_2_expected_3_or_4,
|
Localization.magic_at_0_equals_1_or_2_expected_3_or_4,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public sealed partial class SFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return;
|
if(errno != ErrorNumber.NoError) return;
|
||||||
|
|
||||||
RootBlock rootBlock = Marshal.ByteArrayToStructureBigEndianGenerated<RootBlock>(rootBlockSector);
|
RootBlock rootBlock = Marshal.ByteArrayToStructureBigEndian<RootBlock>(rootBlockSector);
|
||||||
|
|
||||||
var sbInformation = new StringBuilder();
|
var sbInformation = new StringBuilder();
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public sealed partial class Squash
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case SQUASH_CIGAM:
|
case SQUASH_CIGAM:
|
||||||
sqSb = Marshal.ByteArrayToStructureBigEndianGenerated<SuperBlock>(sector);
|
sqSb = Marshal.ByteArrayToStructureBigEndian<SuperBlock>(sector);
|
||||||
littleEndian = false;
|
littleEndian = false;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public sealed partial class UNICOS
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
||||||
|
|
||||||
Superblock unicosSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock unicosSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, Localization.magic_equals_0_expected_1, unicosSb.s_magic, UNICOS_MAGIC);
|
AaruLogging.Debug(MODULE_NAME, Localization.magic_equals_0_expected_1, unicosSb.s_magic, UNICOS_MAGIC);
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ public sealed partial class UNICOS
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<Superblock>()) return;
|
if(sector.Length < Marshal.SizeOf<Superblock>()) return;
|
||||||
|
|
||||||
Superblock unicosSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock unicosSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
if(unicosSb.s_magic != UNICOS_MAGIC) return;
|
if(unicosSb.s_magic != UNICOS_MAGIC) return;
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public sealed partial class XFS
|
|||||||
{
|
{
|
||||||
Array.Copy(sector, location, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
Array.Copy(sector, location, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
||||||
|
|
||||||
Superblock xfsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sbpiece);
|
Superblock xfsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sbpiece);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_X3_equals_1_expected_2,
|
Localization.magic_at_0_X3_equals_1_expected_2,
|
||||||
@@ -100,7 +100,7 @@ public sealed partial class XFS
|
|||||||
|
|
||||||
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
if(sector.Length < Marshal.SizeOf<Superblock>()) return false;
|
||||||
|
|
||||||
Superblock xfsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
Superblock xfsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_expected_2,
|
Localization.magic_at_0_equals_1_expected_2,
|
||||||
@@ -147,7 +147,7 @@ public sealed partial class XFS
|
|||||||
{
|
{
|
||||||
Array.Copy(sector, location, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
Array.Copy(sector, location, sbpiece, 0, Marshal.SizeOf<Superblock>());
|
||||||
|
|
||||||
xfsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sbpiece);
|
xfsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sbpiece);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_X3_equals_1_expected_2,
|
Localization.magic_at_0_X3_equals_1_expected_2,
|
||||||
@@ -174,7 +174,7 @@ public sealed partial class XFS
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError || sector.Length < Marshal.SizeOf<Superblock>()) return;
|
if(errno != ErrorNumber.NoError || sector.Length < Marshal.SizeOf<Superblock>()) return;
|
||||||
|
|
||||||
xfsSb = Marshal.ByteArrayToStructureBigEndianGenerated<Superblock>(sector);
|
xfsSb = Marshal.ByteArrayToStructureBigEndian<Superblock>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
Localization.magic_at_0_equals_1_expected_2,
|
Localization.magic_at_0_equals_1_expected_2,
|
||||||
|
|||||||
@@ -121,13 +121,13 @@ public sealed partial class Dump
|
|||||||
newHdr.c_magic == UFS2_CIGAM)
|
newHdr.c_magic == UFS2_CIGAM)
|
||||||
{
|
{
|
||||||
if(newHdr.c_magic == OFS_CIGAM || newHdr.c_magic == NFS_CIGAM || newHdr.c_magic == UFS2_CIGAM)
|
if(newHdr.c_magic == OFS_CIGAM || newHdr.c_magic == NFS_CIGAM || newHdr.c_magic == UFS2_CIGAM)
|
||||||
newHdr = Marshal.ByteArrayToStructureBigEndianGenerated<s_spcl>(sector);
|
newHdr = Marshal.ByteArrayToStructureBigEndian<s_spcl>(sector);
|
||||||
}
|
}
|
||||||
else if(aixHdr.c_magic is XIX_MAGIC or XIX_CIGAM)
|
else if(aixHdr.c_magic is XIX_MAGIC or XIX_CIGAM)
|
||||||
{
|
{
|
||||||
useAix = true;
|
useAix = true;
|
||||||
|
|
||||||
if(aixHdr.c_magic == XIX_CIGAM) aixHdr = Marshal.ByteArrayToStructureBigEndianGenerated<spcl_aix>(sector);
|
if(aixHdr.c_magic == XIX_CIGAM) aixHdr = Marshal.ByteArrayToStructureBigEndian<spcl_aix>(sector);
|
||||||
}
|
}
|
||||||
else if(oldHdr.c_magic == OFS_MAGIC)
|
else if(oldHdr.c_magic == OFS_MAGIC)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var prodosB = new byte[26];
|
var prodosB = new byte[26];
|
||||||
prodosStream.EnsureRead(prodosB, 0, 26);
|
prodosStream.EnsureRead(prodosB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(prodosB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(prodosB);
|
||||||
prodosStream.Close();
|
prodosStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -188,7 +188,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var unixB = new byte[26];
|
var unixB = new byte[26];
|
||||||
unixStream.EnsureRead(unixB, 0, 26);
|
unixStream.EnsureRead(unixB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(unixB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(unixB);
|
||||||
unixStream.Close();
|
unixStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -204,7 +204,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var dosB = new byte[26];
|
var dosB = new byte[26];
|
||||||
dosStream.EnsureRead(dosB, 0, 26);
|
dosStream.EnsureRead(dosB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(dosB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(dosB);
|
||||||
dosStream.Close();
|
dosStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -220,7 +220,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var doslB = new byte[26];
|
var doslB = new byte[26];
|
||||||
doslStream.EnsureRead(doslB, 0, 26);
|
doslStream.EnsureRead(doslB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(doslB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(doslB);
|
||||||
doslStream.Close();
|
doslStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -236,7 +236,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var netatalkB = new byte[26];
|
var netatalkB = new byte[26];
|
||||||
netatalkStream.EnsureRead(netatalkB, 0, 26);
|
netatalkStream.EnsureRead(netatalkB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(netatalkB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(netatalkB);
|
||||||
netatalkStream.Close();
|
netatalkStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -252,7 +252,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var daveB = new byte[26];
|
var daveB = new byte[26];
|
||||||
daveStream.EnsureRead(daveB, 0, 26);
|
daveStream.EnsureRead(daveB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(daveB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(daveB);
|
||||||
daveStream.Close();
|
daveStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -268,7 +268,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var osxB = new byte[26];
|
var osxB = new byte[26];
|
||||||
osxStream.EnsureRead(osxB, 0, 26);
|
osxStream.EnsureRead(osxB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(osxB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(osxB);
|
||||||
osxStream.Close();
|
osxStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) return true;
|
||||||
@@ -284,7 +284,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
|
|
||||||
var unarB = new byte[26];
|
var unarB = new byte[26];
|
||||||
unarStream.EnsureRead(unarB, 0, 26);
|
unarStream.EnsureRead(unarB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(unarB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(unarB);
|
||||||
unarStream.Close();
|
unarStream.Close();
|
||||||
|
|
||||||
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
||||||
@@ -342,7 +342,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var prodosB = new byte[26];
|
var prodosB = new byte[26];
|
||||||
prodosStream.EnsureRead(prodosB, 0, 26);
|
prodosStream.EnsureRead(prodosB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(prodosB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(prodosB);
|
||||||
prodosStream.Close();
|
prodosStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = proDosAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = proDosAppleDouble;
|
||||||
@@ -358,7 +358,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var unixB = new byte[26];
|
var unixB = new byte[26];
|
||||||
unixStream.EnsureRead(unixB, 0, 26);
|
unixStream.EnsureRead(unixB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(unixB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(unixB);
|
||||||
unixStream.Close();
|
unixStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = unixAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = unixAppleDouble;
|
||||||
@@ -374,7 +374,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var dosB = new byte[26];
|
var dosB = new byte[26];
|
||||||
dosStream.EnsureRead(dosB, 0, 26);
|
dosStream.EnsureRead(dosB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(dosB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(dosB);
|
||||||
dosStream.Close();
|
dosStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = dosAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = dosAppleDouble;
|
||||||
@@ -390,7 +390,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var doslB = new byte[26];
|
var doslB = new byte[26];
|
||||||
doslStream.EnsureRead(doslB, 0, 26);
|
doslStream.EnsureRead(doslB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(doslB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(doslB);
|
||||||
doslStream.Close();
|
doslStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = dosAppleDoubleLower;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = dosAppleDoubleLower;
|
||||||
@@ -406,7 +406,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var netatalkB = new byte[26];
|
var netatalkB = new byte[26];
|
||||||
netatalkStream.EnsureRead(netatalkB, 0, 26);
|
netatalkStream.EnsureRead(netatalkB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(netatalkB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(netatalkB);
|
||||||
netatalkStream.Close();
|
netatalkStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = netatalkAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = netatalkAppleDouble;
|
||||||
@@ -422,7 +422,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var daveB = new byte[26];
|
var daveB = new byte[26];
|
||||||
daveStream.EnsureRead(daveB, 0, 26);
|
daveStream.EnsureRead(daveB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(daveB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(daveB);
|
||||||
daveStream.Close();
|
daveStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = daveAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = daveAppleDouble;
|
||||||
@@ -438,7 +438,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var osxB = new byte[26];
|
var osxB = new byte[26];
|
||||||
osxStream.EnsureRead(osxB, 0, 26);
|
osxStream.EnsureRead(osxB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(osxB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(osxB);
|
||||||
osxStream.Close();
|
osxStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = osxAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = osxAppleDouble;
|
||||||
@@ -454,7 +454,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var unarB = new byte[26];
|
var unarB = new byte[26];
|
||||||
unarStream.EnsureRead(unarB, 0, 26);
|
unarStream.EnsureRead(unarB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(unarB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(unarB);
|
||||||
unarStream.Close();
|
unarStream.Close();
|
||||||
|
|
||||||
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = unArAppleDouble;
|
if(_header is { magic: MAGIC, version: VERSION or VERSION2 }) _headerPath = unArAppleDouble;
|
||||||
@@ -469,7 +469,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
fs.EnsureRead(hdrB, 0, 26);
|
fs.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -477,7 +477,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
fs.EnsureRead(entry, 0, 12);
|
fs.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -495,7 +495,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
fs.EnsureRead(datesB, 0, 16);
|
fs.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
||||||
@@ -508,7 +508,7 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
@@ -516,21 +516,21 @@ public sealed partial class AppleDouble : IFilter
|
|||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo =
|
ProDOSFileInfo prodosinfo =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
Array.Copy(buffer, 0, hdrB, 0, 26);
|
Array.Copy(buffer, 0, hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
stream.Seek(0, SeekOrigin.Begin);
|
stream.Seek(0, SeekOrigin.Begin);
|
||||||
stream.EnsureRead(hdrB, 0, 26);
|
stream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
||||||
}
|
}
|
||||||
@@ -194,7 +194,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
fstream.EnsureRead(hdrB, 0, 26);
|
fstream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
fstream.Close();
|
fstream.Close();
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
ms.EnsureRead(hdrB, 0, 26);
|
ms.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
ms.EnsureRead(entry, 0, 12);
|
ms.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -236,7 +236,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
ms.EnsureRead(datesB, 0, 16);
|
ms.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
||||||
@@ -249,7 +249,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
@@ -257,21 +257,21 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo =
|
ProDOSFileInfo prodosinfo =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
stream.EnsureRead(hdrB, 0, 26);
|
stream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
stream.EnsureRead(entry, 0, 12);
|
stream.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -325,7 +325,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
stream.EnsureRead(datesB, 0, 16);
|
stream.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
||||||
@@ -338,7 +338,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
@@ -346,21 +346,21 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo =
|
ProDOSFileInfo prodosinfo =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
@@ -388,7 +388,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
fs.EnsureRead(hdrB, 0, 26);
|
fs.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -396,7 +396,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
fs.EnsureRead(entry, 0, 12);
|
fs.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -415,7 +415,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
fs.EnsureRead(datesB, 0, 16);
|
fs.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
||||||
@@ -428,7 +428,7 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
@@ -436,21 +436,21 @@ public sealed partial class AppleSingle : IFilter
|
|||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo =
|
ProDOSFileInfo prodosinfo =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
Array.Copy(buffer, 0, hdrB, 0, 128);
|
Array.Copy(buffer, 0, hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
return _header.magic == MAGIC ||
|
return _header.magic == MAGIC ||
|
||||||
_header.version == 0 &&
|
_header.version == 0 &&
|
||||||
@@ -252,7 +252,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
stream.Seek(0, SeekOrigin.Begin);
|
stream.Seek(0, SeekOrigin.Begin);
|
||||||
stream.EnsureRead(hdrB, 0, 128);
|
stream.EnsureRead(hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
return _header.magic == MAGIC ||
|
return _header.magic == MAGIC ||
|
||||||
_header.version == 0 &&
|
_header.version == 0 &&
|
||||||
@@ -274,7 +274,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
fstream.EnsureRead(hdrB, 0, 128);
|
fstream.EnsureRead(hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
fstream.Close();
|
fstream.Close();
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
ms.EnsureRead(hdrB, 0, 128);
|
ms.EnsureRead(hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
uint blocks = 1;
|
uint blocks = 1;
|
||||||
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
||||||
@@ -327,7 +327,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
stream.EnsureRead(hdrB, 0, 128);
|
stream.EnsureRead(hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
uint blocks = 1;
|
uint blocks = 1;
|
||||||
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
||||||
@@ -360,7 +360,7 @@ public sealed partial class MacBinary : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[128];
|
var hdrB = new byte[128];
|
||||||
fs.EnsureRead(hdrB, 0, 128);
|
fs.EnsureRead(hdrB, 0, 128);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
||||||
|
|
||||||
uint blocks = 1;
|
uint blocks = 1;
|
||||||
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
blocks += (uint)(_header.secondaryHeaderLength / 128);
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public sealed partial class PcExchange : IFilter
|
|||||||
var datEntry = new Entry();
|
var datEntry = new Entry();
|
||||||
var datEntryB = new byte[Marshal.SizeOf(datEntry)];
|
var datEntryB = new byte[Marshal.SizeOf(datEntry)];
|
||||||
finderDatStream.EnsureRead(datEntryB, 0, Marshal.SizeOf(datEntry));
|
finderDatStream.EnsureRead(datEntryB, 0, Marshal.SizeOf(datEntry));
|
||||||
datEntry = Helpers.Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(datEntryB);
|
datEntry = Helpers.Marshal.ByteArrayToStructureBigEndian<Entry>(datEntryB);
|
||||||
|
|
||||||
// TODO: Add support for encoding on filters
|
// TODO: Add support for encoding on filters
|
||||||
string macName = StringHandlers.PascalToString(datEntry.macName, Encoding.GetEncoding("macintosh"));
|
string macName = StringHandlers.PascalToString(datEntry.macName, Encoding.GetEncoding("macintosh"));
|
||||||
@@ -194,7 +194,7 @@ public sealed partial class PcExchange : IFilter
|
|||||||
var datEntry = new Entry();
|
var datEntry = new Entry();
|
||||||
var datEntryB = new byte[Marshal.SizeOf(datEntry)];
|
var datEntryB = new byte[Marshal.SizeOf(datEntry)];
|
||||||
finderDatStream.EnsureRead(datEntryB, 0, Marshal.SizeOf(datEntry));
|
finderDatStream.EnsureRead(datEntryB, 0, Marshal.SizeOf(datEntry));
|
||||||
datEntry = Helpers.Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(datEntryB);
|
datEntry = Helpers.Marshal.ByteArrayToStructureBigEndian<Entry>(datEntryB);
|
||||||
|
|
||||||
string macName = StringHandlers.PascalToString(datEntry.macName, Encoding.GetEncoding("macintosh"));
|
string macName = StringHandlers.PascalToString(datEntry.macName, Encoding.GetEncoding("macintosh"));
|
||||||
|
|
||||||
|
|||||||
@@ -80,32 +80,14 @@ public static class Marshal
|
|||||||
return ByteArrayToStructureLittleEndian<T>(span.Slice(start, length).ToArray());
|
return ByteArrayToStructureLittleEndian<T>(span.Slice(start, length).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Marshal big-endian binary data to a structure</summary>
|
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
|
||||||
/// <typeparam name="T">Type of the structure to marshal</typeparam>
|
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static T ByteArrayToStructureBigEndian<T>(byte[] bytes) where T : struct
|
|
||||||
{
|
|
||||||
var ptr = GCHandle.Alloc(bytes, GCHandleType.Pinned);
|
|
||||||
|
|
||||||
object str = (T)(System.Runtime.InteropServices.Marshal.PtrToStructure(ptr.AddrOfPinnedObject(), typeof(T)) ??
|
|
||||||
default(T));
|
|
||||||
|
|
||||||
ptr.Free();
|
|
||||||
|
|
||||||
return (T)SwapStructureMembersEndian(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
||||||
/// This method is faster than <see cref="ByteArrayToStructureBigEndian{T}" /> as it avoids boxing and reflection.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
/// <param name="bytes">Byte array containing the binary data</param>
|
||||||
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T ByteArrayToStructureBigEndianGenerated<T>(byte[] bytes) where T : struct, ISwapEndian<T>
|
public static T ByteArrayToStructureBigEndian<T>(byte[] bytes) where T : struct, ISwapEndian<T>
|
||||||
{
|
{
|
||||||
T str = ByteArrayToStructureLittleEndian<T>(bytes);
|
T str = ByteArrayToStructureLittleEndian<T>(bytes);
|
||||||
|
|
||||||
@@ -114,8 +96,6 @@ public static class Marshal
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
||||||
/// This method is faster than <see cref="ByteArrayToStructureBigEndian{T}(byte[], int, int)" /> as it avoids boxing
|
|
||||||
/// and reflection.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
/// <param name="bytes">Byte array containing the binary data</param>
|
||||||
/// <param name="start">Start on the array where the structure begins</param>
|
/// <param name="start">Start on the array where the structure begins</param>
|
||||||
@@ -123,25 +103,11 @@ public static class Marshal
|
|||||||
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T ByteArrayToStructureBigEndianGenerated<T>(byte[] bytes, int start, int length)
|
public static T ByteArrayToStructureBigEndian<T>(byte[] bytes, int start, int length)
|
||||||
where T : struct, ISwapEndian<T>
|
where T : struct, ISwapEndian<T>
|
||||||
{
|
{
|
||||||
Span<byte> span = bytes;
|
Span<byte> span = bytes;
|
||||||
|
|
||||||
return ByteArrayToStructureBigEndianGenerated<T>(span.Slice(start, length).ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Marshal big-endian binary data to a structure</summary>
|
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
|
||||||
/// <param name="start">Start on the array where the structure begins</param>
|
|
||||||
/// <param name="length">Length of the structure in bytes</param>
|
|
||||||
/// <typeparam name="T">Type of the structure to marshal</typeparam>
|
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static T ByteArrayToStructureBigEndian<T>(byte[] bytes, int start, int length) where T : struct
|
|
||||||
{
|
|
||||||
Span<byte> span = bytes;
|
|
||||||
|
|
||||||
return ByteArrayToStructureBigEndian<T>(span.Slice(start, length).ToArray());
|
return ByteArrayToStructureBigEndian<T>(span.Slice(start, length).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,32 +169,15 @@ public static class Marshal
|
|||||||
public static T SpanToStructureLittleEndian<T>(ReadOnlySpan<byte> bytes, int start, int length) where T : struct =>
|
public static T SpanToStructureLittleEndian<T>(ReadOnlySpan<byte> bytes, int start, int length) where T : struct =>
|
||||||
MemoryMarshal.Read<T>(bytes.Slice(start, length));
|
MemoryMarshal.Read<T>(bytes.Slice(start, length));
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Marshal big-endian binary data to a structure. If the structure type contains any non value type, this method
|
|
||||||
/// will crash.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
|
||||||
/// <typeparam name="T">Type of the structure to marshal</typeparam>
|
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static T SpanToStructureBigEndian<T>(ReadOnlySpan<byte> bytes) where T : struct
|
|
||||||
{
|
|
||||||
T str = SpanToStructureLittleEndian<T>(bytes);
|
|
||||||
|
|
||||||
return (T)SwapStructureMembersEndian(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
||||||
/// This method is faster than <see cref="SpanToStructureBigEndian{T}(ReadOnlySpan{byte})" /> as it avoids boxing and
|
|
||||||
/// reflection.
|
|
||||||
/// If the structure type contains any non value type, this method will crash.
|
/// If the structure type contains any non value type, this method will crash.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
/// <param name="bytes">Byte array containing the binary data</param>
|
||||||
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T SpanToStructureBigEndianGenerated<T>(ReadOnlySpan<byte> bytes) where T : struct, ISwapEndian<T>
|
public static T SpanToStructureBigEndian<T>(ReadOnlySpan<byte> bytes) where T : struct, ISwapEndian<T>
|
||||||
{
|
{
|
||||||
T str = SpanToStructureLittleEndian<T>(bytes);
|
T str = SpanToStructureLittleEndian<T>(bytes);
|
||||||
|
|
||||||
@@ -237,8 +186,6 @@ public static class Marshal
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
/// Marshal big-endian binary data to a structure using compile-time generated swap method.
|
||||||
/// This method is faster than <see cref="SpanToStructureBigEndian{T}(ReadOnlySpan{byte}, int, int)" /> as it avoids
|
|
||||||
/// boxing and reflection.
|
|
||||||
/// If the structure type contains any non value type, this method will crash.
|
/// If the structure type contains any non value type, this method will crash.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bytes">Byte span containing the binary data</param>
|
/// <param name="bytes">Byte span containing the binary data</param>
|
||||||
@@ -247,7 +194,7 @@ public static class Marshal
|
|||||||
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
/// <typeparam name="T">Type of the structure to marshal (must be marked with [SwapEndian] attribute)</typeparam>
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public static T SpanToStructureBigEndianGenerated<T>(ReadOnlySpan<byte> bytes, int start, int length)
|
public static T SpanToStructureBigEndian<T>(ReadOnlySpan<byte> bytes, int start, int length)
|
||||||
where T : struct, ISwapEndian<T>
|
where T : struct, ISwapEndian<T>
|
||||||
{
|
{
|
||||||
T str = SpanToStructureLittleEndian<T>(bytes.Slice(start, length));
|
T str = SpanToStructureLittleEndian<T>(bytes.Slice(start, length));
|
||||||
@@ -287,39 +234,6 @@ public static class Marshal
|
|||||||
return (T)SwapStructureMembersEndianPdp(str);
|
return (T)SwapStructureMembersEndianPdp(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Marshal a structure depending on the decoration of <see cref="MarshallingPropertiesAttribute" />. If the
|
|
||||||
/// decoration is not present it will marshal as a reference type containing little endian structure.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="bytes">Byte array containing the binary data</param>
|
|
||||||
/// <typeparam name="T">Type of the structure to marshal</typeparam>
|
|
||||||
/// <returns>The binary data marshalled in a structure with the specified type</returns>
|
|
||||||
/// <exception cref="ArgumentOutOfRangeException">
|
|
||||||
/// The <see cref="MarshallingPropertiesAttribute" /> contains an unsupported
|
|
||||||
/// endian
|
|
||||||
/// </exception>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static T MarshalStructure<T>(byte[] bytes) where T : struct
|
|
||||||
{
|
|
||||||
if(typeof(T).GetCustomAttribute(typeof(MarshallingPropertiesAttribute)) is not MarshallingPropertiesAttribute
|
|
||||||
properties)
|
|
||||||
return ByteArrayToStructureLittleEndian<T>(bytes);
|
|
||||||
|
|
||||||
return properties.Endian switch
|
|
||||||
{
|
|
||||||
BitEndian.Little => properties.HasReferences
|
|
||||||
? ByteArrayToStructureLittleEndian<T>(bytes)
|
|
||||||
: SpanToStructureLittleEndian<T>(bytes),
|
|
||||||
BitEndian.Big => properties.HasReferences
|
|
||||||
? ByteArrayToStructureBigEndian<T>(bytes)
|
|
||||||
: SpanToStructureBigEndian<T>(bytes),
|
|
||||||
BitEndian.Pdp => properties.HasReferences
|
|
||||||
? ByteArrayToStructurePdpEndian<T>(bytes)
|
|
||||||
: SpanToStructurePdpEndian<T>(bytes),
|
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Swaps all members of a structure</summary>
|
/// <summary>Swaps all members of a structure</summary>
|
||||||
/// <param name="str"></param>
|
/// <param name="str"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
// /***************************************************************************
|
|
||||||
// Aaru Data Preservation Suite
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Filename : MarshallingPropertiesAttribute.cs
|
|
||||||
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
|
||||||
//
|
|
||||||
// Component : Common types.
|
|
||||||
//
|
|
||||||
// --[ Description ] ----------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Declares properties of structs for marshalling.
|
|
||||||
//
|
|
||||||
// --[ License ] --------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the
|
|
||||||
// "Software"), to deal in the Software without restriction, including
|
|
||||||
// without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
// permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
// the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included
|
|
||||||
// in all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
||||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
//
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// Copyright © 2011-2025 Natalia Portillo
|
|
||||||
// ****************************************************************************/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Aaru.Helpers;
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
/// <summary>Defines properties to help marshalling structs from binary data</summary>
|
|
||||||
[AttributeUsage(AttributeTargets.Struct)]
|
|
||||||
public sealed class MarshallingPropertiesAttribute : Attribute
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
/// <summary>Defines properties to help marshalling structs from binary data</summary>
|
|
||||||
/// <param name="endian">Defines properties to help marshalling structs from binary data</param>
|
|
||||||
public MarshallingPropertiesAttribute(BitEndian endian)
|
|
||||||
{
|
|
||||||
Endian = endian;
|
|
||||||
HasReferences = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>c</summary>
|
|
||||||
public BitEndian Endian { get; }
|
|
||||||
|
|
||||||
/// <summary>Tells if the structure, or any nested structure, has any non-value type (e.g. arrays, strings, etc).</summary>
|
|
||||||
public bool HasReferences { get; set; }
|
|
||||||
}
|
|
||||||
@@ -103,7 +103,7 @@ public partial class AtariLynx : IByteAddressableImage
|
|||||||
MetadataMediaType = MetadataMediaType.LinearMedia
|
MetadataMediaType = MetadataMediaType.LinearMedia
|
||||||
};
|
};
|
||||||
|
|
||||||
HandyHeader header = Marshal.ByteArrayToStructureBigEndianGenerated<HandyHeader>(headerBytes, 0, 64);
|
HandyHeader header = Marshal.ByteArrayToStructureBigEndian<HandyHeader>(headerBytes, 0, 64);
|
||||||
|
|
||||||
if(header.Version != 256) return ErrorNumber.NotSupported;
|
if(header.Version != 256) return ErrorNumber.NotSupported;
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public partial class GameBoy : IByteAddressableImage
|
|||||||
MetadataMediaType = MetadataMediaType.LinearMedia
|
MetadataMediaType = MetadataMediaType.LinearMedia
|
||||||
};
|
};
|
||||||
|
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, 0x100, Marshal.SizeOf<Header>());
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(_data, 0x100, Marshal.SizeOf<Header>());
|
||||||
|
|
||||||
var name = new byte[(header.Name[^1] & 0x80) == 0x80 ? 15 : 16];
|
var name = new byte[(header.Name[^1] & 0x80) == 0x80 ? 15 : 16];
|
||||||
Array.Copy(header.Name, 0, name, 0, name.Length);
|
Array.Copy(header.Name, 0, name, 0, name.Length);
|
||||||
@@ -265,7 +265,7 @@ public partial class GameBoy : IByteAddressableImage
|
|||||||
return ErrorNumber.NotOpened;
|
return ErrorNumber.NotOpened;
|
||||||
}
|
}
|
||||||
|
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, 0x100, Marshal.SizeOf<Header>());
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(_data, 0x100, Marshal.SizeOf<Header>());
|
||||||
|
|
||||||
var hasMapper = false;
|
var hasMapper = false;
|
||||||
var hasSaveRam = false;
|
var hasSaveRam = false;
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public partial class GameBoyAdvance : IByteAddressableImage
|
|||||||
MetadataMediaType = MetadataMediaType.LinearMedia
|
MetadataMediaType = MetadataMediaType.LinearMedia
|
||||||
};
|
};
|
||||||
|
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, 0, Marshal.SizeOf<Header>());
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(_data, 0, Marshal.SizeOf<Header>());
|
||||||
|
|
||||||
_imageInfo.MediaTitle = StringHandlers.CToString(header.Name);
|
_imageInfo.MediaTitle = StringHandlers.CToString(header.Name);
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ public partial class MasterSystem : IByteAddressableImage
|
|||||||
};
|
};
|
||||||
|
|
||||||
Header header =
|
Header header =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, headerPosition, Marshal.SizeOf<Header>());
|
Marshal.ByteArrayToStructureBigEndian<Header>(_data, headerPosition, Marshal.SizeOf<Header>());
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ public partial class Nintendo64 : IByteAddressableImage
|
|||||||
_data = tmp;
|
_data = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, 0, Marshal.SizeOf<Header>());
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(_data, 0, Marshal.SizeOf<Header>());
|
||||||
Encoding encoding;
|
Encoding encoding;
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -306,7 +306,7 @@ public partial class Nintendo64 : IByteAddressableImage
|
|||||||
LinearMemoryType saveType = LinearMemoryType.Unknown;
|
LinearMemoryType saveType = LinearMemoryType.Unknown;
|
||||||
ulong saveLength = 0;
|
ulong saveLength = 0;
|
||||||
|
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(_data, 0, Marshal.SizeOf<Header>());
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(_data, 0, Marshal.SizeOf<Header>());
|
||||||
|
|
||||||
switch((char)header.CartridgeType)
|
switch((char)header.CartridgeType)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ public partial class SegaMegaDrive : IByteAddressableImage
|
|||||||
}
|
}
|
||||||
|
|
||||||
SegaHeader header =
|
SegaHeader header =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<SegaHeader>(_data, 0x100, Marshal.SizeOf<SegaHeader>());
|
Marshal.ByteArrayToStructureBigEndian<SegaHeader>(_data, 0x100, Marshal.SizeOf<SegaHeader>());
|
||||||
|
|
||||||
Encoding encoding;
|
Encoding encoding;
|
||||||
|
|
||||||
@@ -540,7 +540,7 @@ public partial class SegaMegaDrive : IByteAddressableImage
|
|||||||
}
|
}
|
||||||
|
|
||||||
SegaHeader header =
|
SegaHeader header =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<SegaHeader>(_data, 0x100, Marshal.SizeOf<SegaHeader>());
|
Marshal.ByteArrayToStructureBigEndian<SegaHeader>(_data, 0x100, Marshal.SizeOf<SegaHeader>());
|
||||||
|
|
||||||
bool extraRam = header.ExtraRamPresent[0] == 0x52 && header.ExtraRamPresent[1] == 0x41;
|
bool extraRam = header.ExtraRamPresent[0] == 0x52 && header.ExtraRamPresent[1] == 0x41;
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public sealed partial class Chd
|
|||||||
case 3:
|
case 3:
|
||||||
var entryBytes = new byte[16];
|
var entryBytes = new byte[16];
|
||||||
Array.Copy(_hunkMap, (int)(hunkNo * 16), entryBytes, 0, 16);
|
Array.Copy(_hunkMap, (int)(hunkNo * 16), entryBytes, 0, 16);
|
||||||
MapEntryV3 entry = Marshal.ByteArrayToStructureBigEndianGenerated<MapEntryV3>(entryBytes);
|
MapEntryV3 entry = Marshal.ByteArrayToStructureBigEndian<MapEntryV3>(entryBytes);
|
||||||
|
|
||||||
switch((EntryFlagsV3)(entry.flags & 0x0F))
|
switch((EntryFlagsV3)(entry.flags & 0x0F))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public sealed partial class Chd
|
|||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
HeaderV1 hdrV1 = Marshal.ByteArrayToStructureBigEndianGenerated<HeaderV1>(buffer);
|
HeaderV1 hdrV1 = Marshal.ByteArrayToStructureBigEndian<HeaderV1>(buffer);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "hdrV1.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV1.tag));
|
AaruLogging.Debug(MODULE_NAME, "hdrV1.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV1.tag));
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ public sealed partial class Chd
|
|||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
HeaderV2 hdrV2 = Marshal.ByteArrayToStructureBigEndianGenerated<HeaderV2>(buffer);
|
HeaderV2 hdrV2 = Marshal.ByteArrayToStructureBigEndian<HeaderV2>(buffer);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "hdrV2.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV2.tag));
|
AaruLogging.Debug(MODULE_NAME, "hdrV2.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV2.tag));
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ public sealed partial class Chd
|
|||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
{
|
{
|
||||||
HeaderV3 hdrV3 = Marshal.ByteArrayToStructureBigEndianGenerated<HeaderV3>(buffer);
|
HeaderV3 hdrV3 = Marshal.ByteArrayToStructureBigEndian<HeaderV3>(buffer);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "hdrV3.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV3.tag));
|
AaruLogging.Debug(MODULE_NAME, "hdrV3.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV3.tag));
|
||||||
|
|
||||||
@@ -293,7 +293,7 @@ public sealed partial class Chd
|
|||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
HeaderV4 hdrV4 = Marshal.ByteArrayToStructureBigEndianGenerated<HeaderV4>(buffer);
|
HeaderV4 hdrV4 = Marshal.ByteArrayToStructureBigEndian<HeaderV4>(buffer);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "hdrV4.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV4.tag));
|
AaruLogging.Debug(MODULE_NAME, "hdrV4.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV4.tag));
|
||||||
|
|
||||||
@@ -348,7 +348,7 @@ public sealed partial class Chd
|
|||||||
|
|
||||||
return ErrorNumber.NotImplemented;
|
return ErrorNumber.NotImplemented;
|
||||||
|
|
||||||
HeaderV5 hdrV5 = Marshal.ByteArrayToStructureBigEndianGenerated<HeaderV5>(buffer);
|
HeaderV5 hdrV5 = Marshal.ByteArrayToStructureBigEndian<HeaderV5>(buffer);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "hdrV5.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV5.tag));
|
AaruLogging.Debug(MODULE_NAME, "hdrV5.tag = \"{0}\"", Encoding.ASCII.GetString(hdrV5.tag));
|
||||||
|
|
||||||
@@ -477,7 +477,7 @@ public sealed partial class Chd
|
|||||||
var hdrBytes = new byte[16];
|
var hdrBytes = new byte[16];
|
||||||
stream.Seek((long)nextMetaOff, SeekOrigin.Begin);
|
stream.Seek((long)nextMetaOff, SeekOrigin.Begin);
|
||||||
stream.EnsureRead(hdrBytes, 0, hdrBytes.Length);
|
stream.EnsureRead(hdrBytes, 0, hdrBytes.Length);
|
||||||
MetadataHeader header = Marshal.ByteArrayToStructureBigEndianGenerated<MetadataHeader>(hdrBytes);
|
MetadataHeader header = Marshal.ByteArrayToStructureBigEndian<MetadataHeader>(hdrBytes);
|
||||||
var meta = new byte[header.flagsAndLength & 0xFFFFFF];
|
var meta = new byte[header.flagsAndLength & 0xFFFFFF];
|
||||||
stream.EnsureRead(meta, 0, meta.Length);
|
stream.EnsureRead(meta, 0, meta.Length);
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public sealed partial class Dart
|
|||||||
var headerB = new byte[Marshal.SizeOf<Header>()];
|
var headerB = new byte[Marshal.SizeOf<Header>()];
|
||||||
|
|
||||||
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Header>());
|
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Header>());
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(headerB);
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(headerB);
|
||||||
|
|
||||||
if(header.srcCmp > COMPRESS_NONE) return false;
|
if(header.srcCmp > COMPRESS_NONE) return false;
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public sealed partial class Dart
|
|||||||
var headerB = new byte[Marshal.SizeOf<Header>()];
|
var headerB = new byte[Marshal.SizeOf<Header>()];
|
||||||
|
|
||||||
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Header>());
|
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Header>());
|
||||||
Header header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(headerB);
|
Header header = Marshal.ByteArrayToStructureBigEndian<Header>(headerB);
|
||||||
|
|
||||||
if(header.srcCmp > COMPRESS_NONE) return ErrorNumber.NotSupported;
|
if(header.srcCmp > COMPRESS_NONE) return ErrorNumber.NotSupported;
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public sealed partial class DiscFerret
|
|||||||
|
|
||||||
var blk = new byte[Marshal.SizeOf<BlockHeader>()];
|
var blk = new byte[Marshal.SizeOf<BlockHeader>()];
|
||||||
stream.EnsureRead(blk, 0, Marshal.SizeOf<BlockHeader>());
|
stream.EnsureRead(blk, 0, Marshal.SizeOf<BlockHeader>());
|
||||||
BlockHeader blockHeader = Marshal.ByteArrayToStructureBigEndianGenerated<BlockHeader>(blk);
|
BlockHeader blockHeader = Marshal.ByteArrayToStructureBigEndian<BlockHeader>(blk);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "block@{0}.cylinder = {1}", thisOffset, blockHeader.cylinder);
|
AaruLogging.Debug(MODULE_NAME, "block@{0}.cylinder = {1}", thisOffset, blockHeader.cylinder);
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public sealed partial class Ndif
|
|||||||
{
|
{
|
||||||
if(bcem.Length < 128) return ErrorNumber.InvalidArgument;
|
if(bcem.Length < 128) return ErrorNumber.InvalidArgument;
|
||||||
|
|
||||||
_header = Marshal.ByteArrayToStructureBigEndianGenerated<ChunkHeader>(bcem);
|
_header = Marshal.ByteArrayToStructureBigEndian<ChunkHeader>(bcem);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "footer.type = {0}", _header.version);
|
AaruLogging.Debug(MODULE_NAME, "footer.type = {0}", _header.version);
|
||||||
AaruLogging.Debug(MODULE_NAME, "footer.driver = {0}", _header.driver);
|
AaruLogging.Debug(MODULE_NAME, "footer.driver = {0}", _header.driver);
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public sealed partial class Qcow
|
|||||||
|
|
||||||
var qHdrB = new byte[48];
|
var qHdrB = new byte[48];
|
||||||
stream.EnsureRead(qHdrB, 0, 48);
|
stream.EnsureRead(qHdrB, 0, 48);
|
||||||
_qHdr = Marshal.SpanToStructureBigEndianGenerated<Header>(qHdrB);
|
_qHdr = Marshal.SpanToStructureBigEndian<Header>(qHdrB);
|
||||||
|
|
||||||
return _qHdr is { magic: QCOW_MAGIC, version: QCOW_VERSION };
|
return _qHdr is { magic: QCOW_MAGIC, version: QCOW_VERSION };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public sealed partial class Qcow
|
|||||||
|
|
||||||
var qHdrB = new byte[48];
|
var qHdrB = new byte[48];
|
||||||
stream.EnsureRead(qHdrB, 0, 48);
|
stream.EnsureRead(qHdrB, 0, 48);
|
||||||
_qHdr = Marshal.SpanToStructureBigEndianGenerated<Header>(qHdrB);
|
_qHdr = Marshal.SpanToStructureBigEndian<Header>(qHdrB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public sealed partial class Qcow2
|
|||||||
|
|
||||||
var qHdrB = new byte[Marshal.SizeOf<Header>()];
|
var qHdrB = new byte[Marshal.SizeOf<Header>()];
|
||||||
stream.EnsureRead(qHdrB, 0, Marshal.SizeOf<Header>());
|
stream.EnsureRead(qHdrB, 0, Marshal.SizeOf<Header>());
|
||||||
_qHdr = Marshal.SpanToStructureBigEndianGenerated<Header>(qHdrB);
|
_qHdr = Marshal.SpanToStructureBigEndian<Header>(qHdrB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public sealed partial class Qcow2
|
|||||||
|
|
||||||
var qHdrB = new byte[Marshal.SizeOf<Header>()];
|
var qHdrB = new byte[Marshal.SizeOf<Header>()];
|
||||||
stream.EnsureRead(qHdrB, 0, Marshal.SizeOf<Header>());
|
stream.EnsureRead(qHdrB, 0, Marshal.SizeOf<Header>());
|
||||||
_qHdr = Marshal.SpanToStructureBigEndianGenerated<Header>(qHdrB);
|
_qHdr = Marshal.SpanToStructureBigEndian<Header>(qHdrB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.magic = 0x{0:X8}", _qHdr.magic);
|
||||||
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
AaruLogging.Debug(MODULE_NAME, "qHdr.version = {0}", _qHdr.version);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public sealed partial class Udif
|
|||||||
var footerB = new byte[Marshal.SizeOf<Footer>()];
|
var footerB = new byte[Marshal.SizeOf<Footer>()];
|
||||||
|
|
||||||
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
||||||
_footer = Marshal.ByteArrayToStructureBigEndianGenerated<Footer>(footerB);
|
_footer = Marshal.ByteArrayToStructureBigEndian<Footer>(footerB);
|
||||||
|
|
||||||
if(_footer.signature == UDIF_SIGNATURE) return true;
|
if(_footer.signature == UDIF_SIGNATURE) return true;
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public sealed partial class Udif
|
|||||||
var headerB = new byte[Marshal.SizeOf<Footer>()];
|
var headerB = new byte[Marshal.SizeOf<Footer>()];
|
||||||
|
|
||||||
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Footer>());
|
stream.EnsureRead(headerB, 0, Marshal.SizeOf<Footer>());
|
||||||
_footer = Marshal.ByteArrayToStructureBigEndianGenerated<Footer>(headerB);
|
_footer = Marshal.ByteArrayToStructureBigEndian<Footer>(headerB);
|
||||||
|
|
||||||
return _footer.signature == UDIF_SIGNATURE;
|
return _footer.signature == UDIF_SIGNATURE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public sealed partial class Udif
|
|||||||
var footerB = new byte[Marshal.SizeOf<Footer>()];
|
var footerB = new byte[Marshal.SizeOf<Footer>()];
|
||||||
|
|
||||||
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
||||||
_footer = Marshal.ByteArrayToStructureBigEndianGenerated<Footer>(footerB);
|
_footer = Marshal.ByteArrayToStructureBigEndian<Footer>(footerB);
|
||||||
|
|
||||||
if(_footer.signature != UDIF_SIGNATURE)
|
if(_footer.signature != UDIF_SIGNATURE)
|
||||||
{
|
{
|
||||||
@@ -73,7 +73,7 @@ public sealed partial class Udif
|
|||||||
footerB = new byte[Marshal.SizeOf<Footer>()];
|
footerB = new byte[Marshal.SizeOf<Footer>()];
|
||||||
|
|
||||||
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
stream.EnsureRead(footerB, 0, Marshal.SizeOf<Footer>());
|
||||||
_footer = Marshal.ByteArrayToStructureBigEndianGenerated<Footer>(footerB);
|
_footer = Marshal.ByteArrayToStructureBigEndian<Footer>(footerB);
|
||||||
|
|
||||||
if(_footer.signature != UDIF_SIGNATURE)
|
if(_footer.signature != UDIF_SIGNATURE)
|
||||||
{
|
{
|
||||||
@@ -335,7 +335,7 @@ public sealed partial class Udif
|
|||||||
{
|
{
|
||||||
var bHdrB = new byte[Marshal.SizeOf<BlockHeader>()];
|
var bHdrB = new byte[Marshal.SizeOf<BlockHeader>()];
|
||||||
Array.Copy(blkxBytes, 0, bHdrB, 0, Marshal.SizeOf<BlockHeader>());
|
Array.Copy(blkxBytes, 0, bHdrB, 0, Marshal.SizeOf<BlockHeader>());
|
||||||
BlockHeader bHdr = Marshal.ByteArrayToStructureBigEndianGenerated<BlockHeader>(bHdrB);
|
BlockHeader bHdr = Marshal.ByteArrayToStructureBigEndian<BlockHeader>(bHdrB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "bHdr.signature = 0x{0:X8}", bHdr.signature);
|
AaruLogging.Debug(MODULE_NAME, "bHdr.signature = 0x{0:X8}", bHdr.signature);
|
||||||
AaruLogging.Debug(MODULE_NAME, "bHdr.version = {0}", bHdr.version);
|
AaruLogging.Debug(MODULE_NAME, "bHdr.version = {0}", bHdr.version);
|
||||||
@@ -371,7 +371,7 @@ public sealed partial class Udif
|
|||||||
0,
|
0,
|
||||||
Marshal.SizeOf<BlockChunk>());
|
Marshal.SizeOf<BlockChunk>());
|
||||||
|
|
||||||
BlockChunk bChnk = Marshal.ByteArrayToStructureBigEndianGenerated<BlockChunk>(bChnkB);
|
BlockChunk bChnk = Marshal.ByteArrayToStructureBigEndian<BlockChunk>(bChnkB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "bHdr.chunk[{0}].type = 0x{1:X8}", i, bChnk.type);
|
AaruLogging.Debug(MODULE_NAME, "bHdr.chunk[{0}].type = 0x{1:X8}", i, bChnk.type);
|
||||||
AaruLogging.Debug(MODULE_NAME, "bHdr.chunk[{0}].comment = {1}", i, bChnk.comment);
|
AaruLogging.Debug(MODULE_NAME, "bHdr.chunk[{0}].comment = {1}", i, bChnk.comment);
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
}
|
}
|
||||||
|
|
||||||
AppleDriverDescriptorMap ddm =
|
AppleDriverDescriptorMap ddm =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleDriverDescriptorMap>(ddmSector);
|
Marshal.ByteArrayToStructureBigEndian<AppleDriverDescriptorMap>(ddmSector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "ddm.sbSig = 0x{0:X4}", ddm.sbSig);
|
AaruLogging.Debug(MODULE_NAME, "ddm.sbSig = 0x{0:X4}", ddm.sbSig);
|
||||||
AaruLogging.Debug(MODULE_NAME, "ddm.sbBlockSize = {0}", ddm.sbBlockSize);
|
AaruLogging.Debug(MODULE_NAME, "ddm.sbBlockSize = {0}", ddm.sbBlockSize);
|
||||||
@@ -126,7 +126,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
{
|
{
|
||||||
var tmp = new byte[8];
|
var tmp = new byte[8];
|
||||||
Array.Copy(ddmSector, 18 + i * 8, tmp, 0, 8);
|
Array.Copy(ddmSector, 18 + i * 8, tmp, 0, 8);
|
||||||
ddm.sbMap[i] = Marshal.ByteArrayToStructureBigEndianGenerated<AppleDriverEntry>(tmp);
|
ddm.sbMap[i] = Marshal.ByteArrayToStructureBigEndian<AppleDriverEntry>(tmp);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "ddm.sbMap[{1}].ddBlock = {0}", ddm.sbMap[i].ddBlock, i);
|
AaruLogging.Debug(MODULE_NAME, "ddm.sbMap[{1}].ddBlock = {0}", ddm.sbMap[i].ddBlock, i);
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
AppleOldDevicePartitionMap oldMap =
|
AppleOldDevicePartitionMap oldMap =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleOldDevicePartitionMap>(partSector);
|
Marshal.ByteArrayToStructureBigEndian<AppleOldDevicePartitionMap>(partSector);
|
||||||
|
|
||||||
// This is the easy one, no sector size mixing
|
// This is the easy one, no sector size mixing
|
||||||
if(oldMap.pdSig == APM_MAGIC_OLD)
|
if(oldMap.pdSig == APM_MAGIC_OLD)
|
||||||
@@ -171,7 +171,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
Array.Copy(partSector, i, tmp, 0, 12);
|
Array.Copy(partSector, i, tmp, 0, 12);
|
||||||
|
|
||||||
AppleMapOldPartitionEntry oldEntry =
|
AppleMapOldPartitionEntry oldEntry =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<AppleMapOldPartitionEntry>(tmp);
|
Marshal.ByteArrayToStructureBigEndian<AppleMapOldPartitionEntry>(tmp);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "old_map.sbMap[{1}].pdStart = {0}", oldEntry.pdStart, (i - 2) / 12);
|
AaruLogging.Debug(MODULE_NAME, "old_map.sbMap[{1}].pdStart = {0}", oldEntry.pdStart, (i - 2) / 12);
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
{
|
{
|
||||||
var tmp = new byte[512];
|
var tmp = new byte[512];
|
||||||
Array.Copy(ddmSector, 512, tmp, 0, 512);
|
Array.Copy(ddmSector, 512, tmp, 0, 512);
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<AppleMapPartitionEntry>(tmp);
|
entry = Marshal.ByteArrayToStructureBigEndian<AppleMapPartitionEntry>(tmp);
|
||||||
|
|
||||||
// Check for a partition entry that's 512-byte aligned
|
// Check for a partition entry that's 512-byte aligned
|
||||||
if(entry.signature == APM_MAGIC)
|
if(entry.signature == APM_MAGIC)
|
||||||
@@ -229,7 +229,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<AppleMapPartitionEntry>(partSector);
|
entry = Marshal.ByteArrayToStructureBigEndian<AppleMapPartitionEntry>(partSector);
|
||||||
|
|
||||||
if(entry.signature == APM_MAGIC)
|
if(entry.signature == APM_MAGIC)
|
||||||
{
|
{
|
||||||
@@ -245,7 +245,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<AppleMapPartitionEntry>(partSector);
|
entry = Marshal.ByteArrayToStructureBigEndian<AppleMapPartitionEntry>(partSector);
|
||||||
|
|
||||||
if(entry.signature == APM_MAGIC)
|
if(entry.signature == APM_MAGIC)
|
||||||
{
|
{
|
||||||
@@ -276,7 +276,7 @@ public sealed partial class AppleMap : IPartition
|
|||||||
{
|
{
|
||||||
var tmp = new byte[entrySize];
|
var tmp = new byte[entrySize];
|
||||||
Array.Copy(entries, i * entrySize, tmp, 0, entrySize);
|
Array.Copy(entries, i * entrySize, tmp, 0, entrySize);
|
||||||
entry = Marshal.ByteArrayToStructureBigEndianGenerated<AppleMapPartitionEntry>(tmp);
|
entry = Marshal.ByteArrayToStructureBigEndian<AppleMapPartitionEntry>(tmp);
|
||||||
|
|
||||||
if(entry.signature != APM_MAGIC) continue;
|
if(entry.signature != APM_MAGIC) continue;
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public sealed partial class Human68K : IPartition
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
Table table = Marshal.ByteArrayToStructureBigEndianGenerated<Table>(sector);
|
Table table = Marshal.ByteArrayToStructureBigEndian<Table>(sector);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "table.magic = {0:X4}", table.magic);
|
AaruLogging.Debug(MODULE_NAME, "table.magic = {0:X4}", table.magic);
|
||||||
|
|
||||||
|
|||||||
@@ -119,10 +119,10 @@ public sealed partial class NeXTDisklabel : IPartition
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError) return false;
|
if(errno != ErrorNumber.NoError) return false;
|
||||||
|
|
||||||
Label label = Marshal.ByteArrayToStructureBigEndianGenerated<Label>(labelSector);
|
Label label = Marshal.ByteArrayToStructureBigEndian<Label>(labelSector);
|
||||||
var disktabB = new byte[498];
|
var disktabB = new byte[498];
|
||||||
Array.Copy(labelSector, 44, disktabB, 0, 498);
|
Array.Copy(labelSector, 44, disktabB, 0, 498);
|
||||||
label.dl_dt = Marshal.ByteArrayToStructureBigEndianGenerated<DiskTab>(disktabB);
|
label.dl_dt = Marshal.ByteArrayToStructureBigEndian<DiskTab>(disktabB);
|
||||||
label.dl_dt.d_partitions = new Entry[8];
|
label.dl_dt.d_partitions = new Entry[8];
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "label.dl_version = 0x{0:X8}", label.dl_version);
|
AaruLogging.Debug(MODULE_NAME, "label.dl_version = 0x{0:X8}", label.dl_version);
|
||||||
@@ -169,7 +169,7 @@ public sealed partial class NeXTDisklabel : IPartition
|
|||||||
{
|
{
|
||||||
var partB = new byte[44];
|
var partB = new byte[44];
|
||||||
Array.Copy(labelSector, 44 + 146 + 44 * i, partB, 0, 44);
|
Array.Copy(labelSector, 44 + 146 + 44 * i, partB, 0, 44);
|
||||||
label.dl_dt.d_partitions[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(partB);
|
label.dl_dt.d_partitions[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(partB);
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME,
|
AaruLogging.Debug(MODULE_NAME,
|
||||||
"label.dl_dt.d_partitions[{0}].p_base = {1}",
|
"label.dl_dt.d_partitions[{0}].p_base = {1}",
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public sealed partial class SGI : IPartition
|
|||||||
|
|
||||||
if(errno != ErrorNumber.NoError || sector.Length < 512) return false;
|
if(errno != ErrorNumber.NoError || sector.Length < 512) return false;
|
||||||
|
|
||||||
Label dvh = Marshal.ByteArrayToStructureBigEndianGenerated<Label>(sector);
|
Label dvh = Marshal.ByteArrayToStructureBigEndian<Label>(sector);
|
||||||
|
|
||||||
for(var i = 0; i < dvh.volume.Length; i++)
|
for(var i = 0; i < dvh.volume.Length; i++)
|
||||||
dvh.volume[i] = (Volume)Marshal.SwapStructureMembersEndian(dvh.volume[i]);
|
dvh.volume[i] = (Volume)Marshal.SwapStructureMembersEndian(dvh.volume[i]);
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ public sealed partial class VTOC : IPartition
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pd = Marshal.ByteArrayToStructureBigEndianGenerated<PDInfo>(pdsector);
|
pd = Marshal.ByteArrayToStructureBigEndian<PDInfo>(pdsector);
|
||||||
pdold = Marshal.ByteArrayToStructureBigEndianGenerated<PDInfoOld>(pdsector);
|
pdold = Marshal.ByteArrayToStructureBigEndian<PDInfoOld>(pdsector);
|
||||||
}
|
}
|
||||||
|
|
||||||
AaruLogging.Debug(MODULE_NAME, "pdinfo.driveid = {0}", pd.driveid);
|
AaruLogging.Debug(MODULE_NAME, "pdinfo.driveid = {0}", pd.driveid);
|
||||||
@@ -186,7 +186,7 @@ public sealed partial class VTOC : IPartition
|
|||||||
vtoc = Marshal.ByteArrayToStructureLittleEndian<Vtoc>(vtocsector);
|
vtoc = Marshal.ByteArrayToStructureLittleEndian<Vtoc>(vtocsector);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vtoc = Marshal.ByteArrayToStructureBigEndianGenerated<Vtoc>(vtocsector);
|
vtoc = Marshal.ByteArrayToStructureBigEndian<Vtoc>(vtocsector);
|
||||||
|
|
||||||
for(var i = 0; i < vtoc.v_part.Length; i++)
|
for(var i = 0; i < vtoc.v_part.Length; i++)
|
||||||
{
|
{
|
||||||
@@ -213,7 +213,7 @@ public sealed partial class VTOC : IPartition
|
|||||||
vtocOld = Marshal.ByteArrayToStructureLittleEndian<VTocOld>(vtocsector);
|
vtocOld = Marshal.ByteArrayToStructureLittleEndian<VTocOld>(vtocsector);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vtocOld = Marshal.ByteArrayToStructureBigEndianGenerated<VTocOld>(vtocsector);
|
vtocOld = Marshal.ByteArrayToStructureBigEndian<VTocOld>(vtocsector);
|
||||||
|
|
||||||
for(var i = 0; i < vtocOld.v_part.Length; i++)
|
for(var i = 0; i < vtocOld.v_part.Length; i++)
|
||||||
{
|
{
|
||||||
@@ -266,7 +266,7 @@ public sealed partial class VTOC : IPartition
|
|||||||
vtoc = Marshal.ByteArrayToStructureLittleEndian<Vtoc>(vtocsector);
|
vtoc = Marshal.ByteArrayToStructureLittleEndian<Vtoc>(vtocsector);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vtoc = Marshal.ByteArrayToStructureBigEndianGenerated<Vtoc>(vtocsector);
|
vtoc = Marshal.ByteArrayToStructureBigEndian<Vtoc>(vtocsector);
|
||||||
|
|
||||||
for(var i = 0; i < vtoc.v_part.Length; i++)
|
for(var i = 0; i < vtoc.v_part.Length; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public sealed partial class Xbox : IPartition
|
|||||||
if(errno != ErrorNumber.NoError || sector.Length < 512) return false;
|
if(errno != ErrorNumber.NoError || sector.Length < 512) return false;
|
||||||
|
|
||||||
Xbox360DevKitPartitionTable table =
|
Xbox360DevKitPartitionTable table =
|
||||||
Marshal.ByteArrayToStructureBigEndianGenerated<Xbox360DevKitPartitionTable>(sector);
|
Marshal.ByteArrayToStructureBigEndian<Xbox360DevKitPartitionTable>(sector);
|
||||||
|
|
||||||
if(table.magic == XBOX360_DEVKIT_MAGIC &&
|
if(table.magic == XBOX360_DEVKIT_MAGIC &&
|
||||||
table.contentOff + table.contentLen <= imagePlugin.Info.Sectors &&
|
table.contentOff + table.contentLen <= imagePlugin.Info.Sectors &&
|
||||||
|
|||||||
Reference in New Issue
Block a user