Move image and sector verification methods to new interfaces.

This commit is contained in:
2019-01-20 22:24:15 +00:00
parent 640c57b87a
commit 6b1aeb6cbb
96 changed files with 1756 additions and 1602 deletions

View File

@@ -108,7 +108,7 @@ namespace DiscImageChef.DiscImages
imageInfo.SectorSize = header.sectorSize;
imageInfo.MediaType = Geometry.GetMediaType((header.cylinders, (byte)header.heads, header.sectorsPerTrack,
header.sectorSize, MediaEncoding.MFM, false));
header.sectorSize, MediaEncoding.MFM, false));
imageInfo.XmlMediaType = XmlMediaType.BlockMedia;
@@ -133,8 +133,6 @@ namespace DiscImageChef.DiscImages
return true;
}
public bool? VerifyMediaImage() => calculatedChk == header.checksum;
public byte[] ReadSector(ulong sectorAddress) => ReadSectors(sectorAddress, 1);
public byte[] ReadSectors(ulong sectorAddress, uint length)

View File

@@ -38,7 +38,7 @@ using DiscImageChef.CommonTypes.Structs;
namespace DiscImageChef.DiscImages
{
public partial class SaveDskF : IWritableImage
public partial class SaveDskF : IWritableImage, IVerifiableImage
{
uint calculatedChk;
byte[] decodedDisk;

View File

@@ -30,7 +30,6 @@
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System.Collections.Generic;
using DiscImageChef.CommonTypes.Enums;
using DiscImageChef.CommonTypes.Exceptions;
@@ -38,19 +37,6 @@ namespace DiscImageChef.DiscImages
{
public partial class SaveDskF
{
public bool? VerifySector(ulong sectorAddress) => null;
public bool? VerifySectors(ulong sectorAddress, uint length, out List<ulong> failingLbas,
out List<ulong> unknownLbas)
{
failingLbas = new List<ulong>();
unknownLbas = new List<ulong>();
for(ulong i = sectorAddress; i < sectorAddress + length; i++) unknownLbas.Add(i);
return null;
}
public byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) =>
throw new FeatureUnsupportedImageException("Feature not supported by image format");

View File

@@ -0,0 +1,39 @@
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : Verify.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : Disk image plugins.
//
// --[ Description ] ----------------------------------------------------------
//
// Verifies IBM SaveDskF disk images.
//
// --[ License ] --------------------------------------------------------------
//
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of the
// License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
namespace DiscImageChef.DiscImages
{
public partial class SaveDskF
{
public bool? VerifyMediaImage() => calculatedChk == header.checksum;
}
}