Merge pull request #280 from KailoKyra/279-some-cpcemu-disk-images-are-not-recognized-as-such

Fix for the CPCEMU disk images that are not recognized as such
This commit is contained in:
2020-02-12 22:21:13 +00:00
committed by GitHub
4 changed files with 9 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
// /***************************************************************************
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
@@ -35,12 +35,11 @@ namespace DiscImageChef.DiscImages
public partial class Cpcdsk
{
/// <summary>
/// Identifier for CPCEMU disk images, "MV - CPCEMU Disk-File"
/// Identifier for CPCEMU disk images, "MV - CPC" + usually : "EMU Disk-File\r\nDisk-Info\r\n" but not required
/// </summary>
readonly byte[] cpcdskId =
{
0x4D, 0x56, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x43, 0x45, 0x4D, 0x55, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x2D,
0x46, 0x69, 0x6C, 0x65
0x4D, 0x56, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x43
};
/// <summary>
/// Identifier for DU54 disk images, "MV - CPC format Disk Image (DU54)"

View File

@@ -1,4 +1,4 @@
// /***************************************************************************
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
@@ -54,7 +54,7 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("CPCDSK plugin", "header.magic = \"{0}\"",
StringHandlers.CToString(header.magic));
return cpcdskId.SequenceEqual(header.magic) || edskId.SequenceEqual(header.magic) ||
return cpcdskId.SequenceEqual(header.magic.Take(cpcdskId.Length)) || edskId.SequenceEqual(header.magic) ||
du54Id.SequenceEqual(header.magic);
}
}

View File

@@ -1,4 +1,4 @@
// /***************************************************************************
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
@@ -59,7 +59,7 @@ namespace DiscImageChef.DiscImages
stream.Read(headerB, 0, 256);
CpcDiskInfo header = Marshal.ByteArrayToStructureLittleEndian<CpcDiskInfo>(headerB);
if(!cpcdskId.SequenceEqual(header.magic) &&
if(!cpcdskId.SequenceEqual(header.magic.Take(cpcdskId.Length)) &&
!edskId.SequenceEqual(header.magic) &&
!du54Id.SequenceEqual(header.magic))
return false;

View File

@@ -1,4 +1,4 @@
// /***************************************************************************
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
@@ -41,7 +41,7 @@ namespace DiscImageChef.DiscImages
struct CpcDiskInfo
{
/// <summary>
/// Magic number, "MV - CPCEMU Disk-File" in old files, "EXTENDED CPC DSK File" in extended ones
/// Magic number, "MV - CPC" in old files, "EXTENDED CPC DSK File" in extended ones
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 21)]
public byte[] magic;