diff --git a/DiscImageChef.Core/Partitions.cs b/DiscImageChef.Core/Partitions.cs index 9b22ac120..7d5e92b98 100644 --- a/DiscImageChef.Core/Partitions.cs +++ b/DiscImageChef.Core/Partitions.cs @@ -58,8 +58,8 @@ namespace DiscImageChef.Core List checkedLocations = new List(); // Getting all partitions from device (e.g. tracks) - if(image.ImageInfo.ImageHasPartitions) - foreach(Partition imagePartition in image.GetPartitions()) + if(image.ImageInfo.HasPartitions) + foreach(Partition imagePartition in image.Partitions) { foreach(PartitionPlugin partitionPlugin in plugins.PartPluginsList.Values) if(partitionPlugin.GetInformation(image, out List partitions, imagePartition.Start)) @@ -130,14 +130,13 @@ namespace DiscImageChef.Core } // Be sure that device partitions are not excluded if not mapped by any scheme... - if(image.ImageInfo.ImageHasPartitions) + if(image.ImageInfo.HasPartitions) { List startLocations = childPartitions.Select(detectedPartition => detectedPartition.Start).ToList(); - childPartitions.AddRange(image.GetPartitions() - .Where(imagePartition => - !startLocations.Contains(imagePartition.Start))); + childPartitions.AddRange(image.Partitions.Where(imagePartition => + !startLocations.Contains(imagePartition.Start))); } Partition[] childArray = childPartitions diff --git a/DiscImageChef.Core/Sidecar/AudioMedia.cs b/DiscImageChef.Core/Sidecar/AudioMedia.cs index ef94b5d59..5f356ce69 100644 --- a/DiscImageChef.Core/Sidecar/AudioMedia.cs +++ b/DiscImageChef.Core/Sidecar/AudioMedia.cs @@ -61,20 +61,20 @@ namespace DiscImageChef.Core Checksums = imgChecksums.ToArray(), Image = new ImageType { - format = image.GetImageFormat(), + format = image.ImageFormat, offset = 0, offsetSpecified = true, Value = Path.GetFileName(imagePath) }, Size = fi.Length, - Sequence = new SequenceType {MediaTitle = image.GetImageName()} + Sequence = new SequenceType {MediaTitle = image.ImageInfo.MediaTitle} } }; - if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) + if(image.ImageInfo.MediaSequence != 0 && image.ImageInfo.LastMediaSequence != 0) { - sidecar.AudioMedia[0].Sequence.MediaSequence = image.GetMediaSequence(); - sidecar.AudioMedia[0].Sequence.TotalMedia = image.GetMediaSequence(); + sidecar.AudioMedia[0].Sequence.MediaSequence = image.ImageInfo.MediaSequence; + sidecar.AudioMedia[0].Sequence.TotalMedia = image.ImageInfo.LastMediaSequence; } else { diff --git a/DiscImageChef.Core/Sidecar/BlockMedia.cs b/DiscImageChef.Core/Sidecar/BlockMedia.cs index 5d2ee84c1..bf609851e 100644 --- a/DiscImageChef.Core/Sidecar/BlockMedia.cs +++ b/DiscImageChef.Core/Sidecar/BlockMedia.cs @@ -70,20 +70,20 @@ namespace DiscImageChef.Core Checksums = imgChecksums.ToArray(), Image = new ImageType { - format = image.GetImageFormat(), + format = image.ImageFormat, offset = 0, offsetSpecified = true, Value = Path.GetFileName(imagePath) }, Size = fi.Length, - Sequence = new SequenceType {MediaTitle = image.GetImageName()} + Sequence = new SequenceType {MediaTitle = image.ImageInfo.MediaTitle} } }; - if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) + if(image.ImageInfo.MediaSequence != 0 && image.ImageInfo.LastMediaSequence != 0) { - sidecar.BlockMedia[0].Sequence.MediaSequence = image.GetMediaSequence(); - sidecar.BlockMedia[0].Sequence.TotalMedia = image.GetMediaSequence(); + sidecar.BlockMedia[0].Sequence.MediaSequence = image.ImageInfo.MediaSequence; + sidecar.BlockMedia[0].Sequence.TotalMedia = image.ImageInfo.LastMediaSequence; } else { @@ -253,7 +253,7 @@ namespace DiscImageChef.Core //goto skipImageChecksum; uint sectorsToRead = 512; - ulong sectors = image.GetSectors(); + ulong sectors = image.ImageInfo.Sectors; ulong doneSectors = 0; InitProgress2(); @@ -294,10 +294,10 @@ namespace DiscImageChef.Core sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(image.ImageInfo.MediaType); - sidecar.BlockMedia[0].LogicalBlocks = (long)image.GetSectors(); - sidecar.BlockMedia[0].LogicalBlockSize = (int)image.GetSectorSize(); + sidecar.BlockMedia[0].LogicalBlocks = (long)image.ImageInfo.Sectors; + sidecar.BlockMedia[0].LogicalBlockSize = (int)image.ImageInfo.SectorSize; // TODO: Detect it - sidecar.BlockMedia[0].PhysicalBlockSize = (int)image.GetSectorSize(); + sidecar.BlockMedia[0].PhysicalBlockSize = (int)image.ImageInfo.SectorSize; UpdateStatus("Checking filesystems..."); @@ -342,14 +342,17 @@ namespace DiscImageChef.Core } else { - sidecar.BlockMedia[0].FileSystemInformation[0] = - new PartitionType {StartSector = 0, EndSector = (int)(image.GetSectors() - 1)}; + sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType + { + StartSector = 0, + EndSector = (int)(image.ImageInfo.Sectors - 1) + }; Partition wholePart = new Partition { Name = "Whole device", - Length = image.GetSectors(), - Size = image.GetSectors() * image.GetSectorSize() + Length = image.ImageInfo.Sectors, + Size = image.ImageInfo.Sectors * image.ImageInfo.SectorSize }; List lstFs = new List(); @@ -559,7 +562,7 @@ namespace DiscImageChef.Core Head = t % image.ImageInfo.Heads, Image = new ImageType { - format = scpImage.GetImageFormat(), + format = scpImage.ImageFormat, Value = Path.GetFileName(scpFilePath), offset = scpImage.Header.offsets[t] } @@ -575,7 +578,7 @@ namespace DiscImageChef.Core scpBlockTrackType.Format = trkFormat; } - if(scpImage.Tracks.TryGetValue(t, out SuperCardPro.TrackHeader scpTrack)) + if(scpImage.ScpTracks.TryGetValue(t, out SuperCardPro.TrackHeader scpTrack)) { byte[] trackContents = new byte[scpTrack.Entries.Last().dataOffset + @@ -647,7 +650,7 @@ namespace DiscImageChef.Core Head = kvp.Key % image.ImageInfo.Heads, Image = new ImageType { - format = kfImage.GetImageFormat(), + format = kfImage.ImageFormat, Value = kfDir ? Path .Combine(Path.GetFileName(Path.GetDirectoryName(kvp.Value.GetBasePath())), @@ -720,11 +723,7 @@ namespace DiscImageChef.Core { Cylinder = t / image.ImageInfo.Heads, Head = t % image.ImageInfo.Heads, - Image = new ImageType - { - format = dfiImage.GetImageFormat(), - Value = Path.GetFileName(dfiFilePath) - } + Image = new ImageType {format = dfiImage.ImageFormat, Value = Path.GetFileName(dfiFilePath)} }; if(dfiBlockTrackType.Cylinder < image.ImageInfo.Cylinders) diff --git a/DiscImageChef.Core/Sidecar/LinearMedia.cs b/DiscImageChef.Core/Sidecar/LinearMedia.cs index 191c8d20e..9f17c93d2 100644 --- a/DiscImageChef.Core/Sidecar/LinearMedia.cs +++ b/DiscImageChef.Core/Sidecar/LinearMedia.cs @@ -61,7 +61,7 @@ namespace DiscImageChef.Core Checksums = imgChecksums.ToArray(), Image = new ImageType { - format = image.GetImageFormat(), + format = image.ImageFormat, offset = 0, offsetSpecified = true, Value = Path.GetFileName(imagePath) diff --git a/DiscImageChef.Core/Sidecar/OpticalDisc.cs b/DiscImageChef.Core/Sidecar/OpticalDisc.cs index 93774f7f4..9acfc0e3b 100644 --- a/DiscImageChef.Core/Sidecar/OpticalDisc.cs +++ b/DiscImageChef.Core/Sidecar/OpticalDisc.cs @@ -67,20 +67,20 @@ namespace DiscImageChef.Core Checksums = imgChecksums.ToArray(), Image = new ImageType { - format = image.GetImageFormat(), + format = image.ImageFormat, offset = 0, offsetSpecified = true, Value = Path.GetFileName(imagePath) }, Size = fi.Length, - Sequence = new SequenceType {MediaTitle = image.GetImageName()} + Sequence = new SequenceType {MediaTitle = image.ImageInfo.MediaTitle} } }; - if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) + if(image.ImageInfo.MediaSequence != 0 && image.ImageInfo.LastMediaSequence != 0) { - sidecar.OpticalDisc[0].Sequence.MediaSequence = image.GetMediaSequence(); - sidecar.OpticalDisc[0].Sequence.TotalMedia = image.GetMediaSequence(); + sidecar.OpticalDisc[0].Sequence.MediaSequence = image.ImageInfo.MediaSequence; + sidecar.OpticalDisc[0].Sequence.TotalMedia = image.ImageInfo.LastMediaSequence; } else { @@ -246,12 +246,12 @@ namespace DiscImageChef.Core try { - List sessions = image.GetSessions(); + List sessions = image.Sessions; sidecar.OpticalDisc[0].Sessions = sessions?.Count ?? 1; } catch { sidecar.OpticalDisc[0].Sessions = 1; } - List tracks = image.GetTracks(); + List tracks = image.Tracks; List trksLst = null; if(tracks != null) { @@ -608,8 +608,8 @@ namespace DiscImageChef.Core Serial = image.ImageInfo.DriveSerialNumber, Software = new SoftwareType { - Name = image.GetImageApplication(), - Version = image.GetImageApplicationVersion() + Name = image.ImageInfo.Application, + Version = image.ImageInfo.ApplicationVersion } } }; diff --git a/DiscImageChef.DiscImages/Alcohol120.cs b/DiscImageChef.DiscImages/Alcohol120.cs index e42a8aace..367195188 100644 --- a/DiscImageChef.DiscImages/Alcohol120.cs +++ b/DiscImageChef.DiscImages/Alcohol120.cs @@ -73,13 +73,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = true, + HasSessions = true, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -94,6 +94,65 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Alcohol 120% Media Descriptor Structure"; + + public override List Partitions => partitions; + + public override List Tracks + { + get + { + List tracks = new List(); + + foreach(AlcoholTrack alcTrack in alcTracks.Values) + { + ushort sessionNo = + (from session in sessions + where alcTrack.point >= session.StartTrack || alcTrack.point <= session.EndTrack + select session.SessionSequence).FirstOrDefault(); + + if(!alcTrackExtras.TryGetValue(alcTrack.point, out AlcoholTrackExtra alcExtra)) continue; + + Track dicTrack = new Track + { + Indexes = new Dictionary {{1, alcTrack.startLba}}, + TrackStartSector = alcTrack.startLba, + TrackEndSector = alcExtra.sectors - 1, + TrackPregap = alcExtra.pregap, + TrackSession = sessionNo, + TrackSequence = alcTrack.point, + TrackType = AlcoholTrackTypeToTrackType(alcTrack.mode), + TrackFilter = alcImage, + TrackFile = alcImage.GetFilename(), + TrackFileOffset = alcTrack.startOffset, + TrackFileType = "BINARY", + TrackRawBytesPerSector = alcTrack.sectorSize, + TrackBytesPerSector = AlcoholTrackModeToCookedBytesPerSector(alcTrack.mode) + }; + + switch(alcTrack.subMode) + { + case AlcoholSubchannelMode.Interleaved: + dicTrack.TrackSubchannelFilter = alcImage; + dicTrack.TrackSubchannelFile = alcImage.GetFilename(); + dicTrack.TrackSubchannelOffset = alcTrack.startOffset; + dicTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + dicTrack.TrackRawBytesPerSector += 96; + break; + case AlcoholSubchannelMode.None: + dicTrack.TrackSubchannelType = TrackSubchannelType.None; + break; + } + + tracks.Add(dicTrack); + } + + return tracks; + } + } + + public override List Sessions => sessions; + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -561,7 +620,7 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("Alcohol 120% plugin", "\tPartition size in bytes: {0}", partition.Size); } - ImageInfo.ImageApplication = "Alcohol 120%"; + ImageInfo.Application = "Alcohol 120%"; DicConsole.DebugWriteLine("Alcohol 120% plugin", "Data filename: {0}", alcFile); @@ -571,10 +630,10 @@ namespace DiscImageChef.DiscImages if(alcImage == null) throw new Exception("Cannot open data file"); ImageInfo.ImageSize = (ulong)alcImage.GetDataForkLength(); - ImageInfo.ImageCreationTime = alcImage.GetCreationTime(); - ImageInfo.ImageLastModificationTime = alcImage.GetLastWriteTime(); + ImageInfo.CreationTime = alcImage.GetCreationTime(); + ImageInfo.LastModificationTime = alcImage.GetLastWriteTime(); ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; - ImageInfo.ImageVersion = $"{header.version[0]}.{header.version[1]}"; + ImageInfo.Version = $"{header.version[0]}.{header.version[1]}"; if(!isDvd) { @@ -635,26 +694,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1224,81 +1263,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Alcohol 120% Media Descriptor Structure"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - List tracks = new List(); - - foreach(AlcoholTrack alcTrack in alcTracks.Values) - { - ushort sessionNo = - (from session in sessions - where alcTrack.point >= session.StartTrack || alcTrack.point <= session.EndTrack - select session.SessionSequence).FirstOrDefault(); - - if(!alcTrackExtras.TryGetValue(alcTrack.point, out AlcoholTrackExtra alcExtra)) continue; - - Track dicTrack = new Track - { - Indexes = new Dictionary {{1, alcTrack.startLba}}, - TrackStartSector = alcTrack.startLba, - TrackEndSector = alcExtra.sectors - 1, - TrackPregap = alcExtra.pregap, - TrackSession = sessionNo, - TrackSequence = alcTrack.point, - TrackType = AlcoholTrackTypeToTrackType(alcTrack.mode), - TrackFilter = alcImage, - TrackFile = alcImage.GetFilename(), - TrackFileOffset = alcTrack.startOffset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = alcTrack.sectorSize, - TrackBytesPerSector = AlcoholTrackModeToCookedBytesPerSector(alcTrack.mode) - }; - - switch(alcTrack.subMode) - { - case AlcoholSubchannelMode.Interleaved: - dicTrack.TrackSubchannelFilter = alcImage; - dicTrack.TrackSubchannelFile = alcImage.GetFilename(); - dicTrack.TrackSubchannelOffset = alcTrack.startOffset; - dicTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - dicTrack.TrackRawBytesPerSector += 96; - break; - case AlcoholSubchannelMode.None: - dicTrack.TrackSubchannelType = TrackSubchannelType.None; - break; - } - - tracks.Add(dicTrack); - } - - return tracks; - } - public override List GetSessionTracks(Session session) { if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1357,11 +1321,6 @@ namespace DiscImageChef.DiscImages return tracks; } - public override List GetSessions() - { - return sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1496,86 +1455,6 @@ namespace DiscImageChef.DiscImages } } - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - [StructLayout(LayoutKind.Sequential, Pack = 1)] struct AlcoholHeader { diff --git a/DiscImageChef.DiscImages/Anex86.cs b/DiscImageChef.DiscImages/Anex86.cs index f75285e50..4a38f0644 100644 --- a/DiscImageChef.DiscImages/Anex86.cs +++ b/DiscImageChef.DiscImages/Anex86.cs @@ -53,13 +53,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -74,6 +74,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Anex86 disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -299,9 +310,9 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("Anex86 plugin", "MediaType: {0}", ImageInfo.MediaType); ImageInfo.ImageSize = (ulong)fdihdr.dskSize; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = (ulong)(fdihdr.cylinders * fdihdr.heads * fdihdr.spt); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = (uint)fdihdr.bps; @@ -314,76 +325,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Anex86 disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -463,66 +404,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -533,11 +414,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/Apple2MG.cs b/DiscImageChef.DiscImages/Apple2MG.cs index 25cd93458..27984952f 100644 --- a/DiscImageChef.DiscImages/Apple2MG.cs +++ b/DiscImageChef.DiscImages/Apple2MG.cs @@ -83,7 +83,7 @@ namespace DiscImageChef.DiscImages const uint LOCKED_DISK = 0x80000000; const uint VALID_VOLUME_NUMBER = 0x00000100; const uint VOLUME_NUMBER_MASK = 0x000000FF; - + Filter a2MgImageFilter; A2ImgHeader imageHeader; @@ -95,13 +95,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -116,6 +116,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Apple 2IMG"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -234,32 +245,32 @@ namespace DiscImageChef.DiscImages switch(imageHeader.Creator) { case CREATOR_ASIMOV: - ImageInfo.ImageApplication = "ASIMOV2"; + ImageInfo.Application = "ASIMOV2"; break; case CREATOR_BERNIE: - ImageInfo.ImageApplication = "Bernie ][ the Rescue"; + ImageInfo.Application = "Bernie ][ the Rescue"; break; case CREATOR_CATAKIG: - ImageInfo.ImageApplication = "Catakig"; + ImageInfo.Application = "Catakig"; break; case CREATOR_SHEPPY: - ImageInfo.ImageApplication = "Sheppy's ImageMaker"; + ImageInfo.Application = "Sheppy's ImageMaker"; break; case CREATOR_SWEET: - ImageInfo.ImageApplication = "Sweet16"; + ImageInfo.Application = "Sweet16"; break; case CREATOR_XGS: - ImageInfo.ImageApplication = "XGS"; + ImageInfo.Application = "XGS"; break; case CREATOR_CIDER: - ImageInfo.ImageApplication = "CiderPress"; + ImageInfo.Application = "CiderPress"; break; default: - ImageInfo.ImageApplication = $"Unknown creator code \"{Encoding.ASCII.GetString(creator)}\""; + ImageInfo.Application = $"Unknown creator code \"{Encoding.ASCII.GetString(creator)}\""; break; } - ImageInfo.ImageVersion = imageHeader.Version.ToString(); + ImageInfo.Version = imageHeader.Version.ToString(); if(imageHeader.CommentOffset != 0 && imageHeader.CommentSize != 0) { @@ -267,12 +278,12 @@ namespace DiscImageChef.DiscImages byte[] comments = new byte[imageHeader.CommentSize]; stream.Read(comments, 0, (int)imageHeader.CommentSize); - ImageInfo.ImageComments = Encoding.ASCII.GetString(comments); + ImageInfo.Comments = Encoding.ASCII.GetString(comments); } - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.MediaType = GetMediaType(); a2MgImageFilter = imageFilter; @@ -280,8 +291,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; DicConsole.VerboseWriteLine("2MG image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("2MG comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("2MG comments: {0}", ImageInfo.Comments); switch(ImageInfo.MediaType) { @@ -322,72 +333,7 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Apple 2IMG"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() + MediaType GetMediaType() { switch(ImageInfo.Sectors) { @@ -480,66 +426,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -550,11 +436,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/AppleDOS.cs b/DiscImageChef.DiscImages/AppleDOS.cs index 96857eae3..efc4f8fb7 100644 --- a/DiscImageChef.DiscImages/AppleDOS.cs +++ b/DiscImageChef.DiscImages/AppleDOS.cs @@ -52,13 +52,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -73,6 +73,16 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => extension == ".po" + ? "Apple ][ Interleaved Disk Image (ProDOS order)" + : "Apple ][ Interleaved Disk Image (DOS order)"; + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { extension = Path.GetExtension(imageFilter.GetFilename())?.ToLower(); @@ -102,9 +112,9 @@ namespace DiscImageChef.DiscImages ImageInfo.SectorSize = 256; ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = 560; ImageInfo.MediaType = MediaType.Apple33SS; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -115,26 +125,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -155,31 +145,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return extension == ".po" ? "Apple ][ Interleaved Disk Image (ProDOS order)" : "Apple ][ Interleaved Disk Image (DOS order)"; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override bool? VerifySector(ulong sectorAddress) { return null; @@ -217,11 +182,6 @@ namespace DiscImageChef.DiscImages return null; } - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -232,11 +192,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -283,90 +238,13 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { + public override List Partitions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public override byte[] ReadSectorTag(ulong sectorAddress, uint track, SectorTagType tag) { diff --git a/DiscImageChef.DiscImages/AppleNIB.cs b/DiscImageChef.DiscImages/AppleNIB.cs index a25d8f7f8..6a68ac94d 100644 --- a/DiscImageChef.DiscImages/AppleNIB.cs +++ b/DiscImageChef.DiscImages/AppleNIB.cs @@ -71,13 +71,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -92,6 +92,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Apple nibbles"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -219,9 +230,9 @@ namespace DiscImageChef.DiscImages } ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); if(ImageInfo.Sectors == 455) ImageInfo.MediaType = MediaType.Apple32SS; else if(ImageInfo.Sectors == 560) ImageInfo.MediaType = MediaType.Apple33SS; else ImageInfo.MediaType = MediaType.Unknown; @@ -245,72 +256,7 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Apple nibbles"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() + MediaType GetMediaType() { switch(ImageInfo.Sectors) { @@ -451,66 +397,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -521,11 +407,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/Apridisk.cs b/DiscImageChef.DiscImages/Apridisk.cs index 88da8f0e0..7463475e8 100644 --- a/DiscImageChef.DiscImages/Apridisk.cs +++ b/DiscImageChef.DiscImages/Apridisk.cs @@ -66,13 +66,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -87,6 +87,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "ACT Apricot disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -136,16 +147,16 @@ namespace DiscImageChef.DiscImages stream.Seek(record.headerSize - recordSize, SeekOrigin.Current); byte[] commentB = new byte[record.dataSize]; stream.Read(commentB, 0, commentB.Length); - ImageInfo.ImageComments = StringHandlers.CToString(commentB); - DicConsole.DebugWriteLine("Apridisk plugin", "Comment: \"{0}\"", ImageInfo.ImageComments); + ImageInfo.Comments = StringHandlers.CToString(commentB); + DicConsole.DebugWriteLine("Apridisk plugin", "Comment: \"{0}\"", ImageInfo.Comments); break; case RecordType.Creator: DicConsole.DebugWriteLine("Apridisk plugin", "Found creator record at {0}", stream.Position); stream.Seek(record.headerSize - recordSize, SeekOrigin.Current); byte[] creatorB = new byte[record.dataSize]; stream.Read(creatorB, 0, creatorB.Length); - ImageInfo.ImageCreator = StringHandlers.CToString(creatorB); - DicConsole.DebugWriteLine("Apridisk plugin", "Creator: \"{0}\"", ImageInfo.ImageCreator); + ImageInfo.Creator = StringHandlers.CToString(creatorB); + DicConsole.DebugWriteLine("Apridisk plugin", "Creator: \"{0}\"", ImageInfo.Creator); break; case RecordType.Sector: if(record.compression != CompressType.Compressed && @@ -267,9 +278,9 @@ namespace DiscImageChef.DiscImages ImageInfo.MediaType = MediaType.DOS_35_DS_DD_9; ImageInfo.ImageSize = (ulong)stream.Length - headersizes; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = ImageInfo.Cylinders * ImageInfo.Heads * ImageInfo.SectorsPerTrack; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -307,76 +318,6 @@ namespace DiscImageChef.DiscImages return uLen; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "ACT Apricot disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { (ushort cylinder, byte head, byte sector) = LbaToChs(sectorAddress); @@ -475,66 +416,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -545,11 +426,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/BLU.cs b/DiscImageChef.DiscImages/BLU.cs index 04e845d39..f12798a2a 100644 --- a/DiscImageChef.DiscImages/BLU.cs +++ b/DiscImageChef.DiscImages/BLU.cs @@ -58,13 +58,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -79,6 +79,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Basic Lisa Utility"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -175,11 +186,11 @@ namespace DiscImageChef.DiscImages break; } - ImageInfo.ImageApplication = StringHandlers.CToString(hdrTag); + ImageInfo.Application = StringHandlers.CToString(hdrTag); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); bluImageFilter = imageFilter; @@ -192,26 +203,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -304,121 +295,11 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Basic Lisa Utility"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -429,11 +310,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/BlindWrite4.cs b/DiscImageChef.DiscImages/BlindWrite4.cs index c533b04f8..2e32a44a7 100644 --- a/DiscImageChef.DiscImages/BlindWrite4.cs +++ b/DiscImageChef.DiscImages/BlindWrite4.cs @@ -71,12 +71,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -89,6 +89,14 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "BlindWrite 4 TOC file"; + + public override List Partitions => partitions; + + public override List Tracks => tracks; + + public override List Sessions => sessions; + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -650,7 +658,7 @@ namespace DiscImageChef.DiscImages { ImageInfo.MediaBarcode = bwTrack.isrcUpc; ImageInfo.MediaSerialNumber = bwTrack.discId; - ImageInfo.ImageName = bwTrack.title; + ImageInfo.MediaTitle = bwTrack.title; if(!string.IsNullOrEmpty(bwTrack.isrcUpc) && !ImageInfo.ReadableMediaTags.Contains(MediaTagType.CD_MCN)) @@ -680,13 +688,13 @@ namespace DiscImageChef.DiscImages ImageInfo.MediaType = MediaType.CD; - ImageInfo.ImageApplication = "BlindWrite"; - ImageInfo.ImageApplicationVersion = "4"; - ImageInfo.ImageVersion = "4"; + ImageInfo.Application = "BlindWrite"; + ImageInfo.ApplicationVersion = "4"; + ImageInfo.Version = "4"; ImageInfo.ImageSize = (ulong)dataFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = dataFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = dataFilter.GetLastWriteTime(); + ImageInfo.CreationTime = dataFilter.GetCreationTime(); + ImageInfo.LastModificationTime = dataFilter.GetLastWriteTime(); ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; bool data = false; @@ -723,35 +731,15 @@ namespace DiscImageChef.DiscImages else if(!audio) ImageInfo.MediaType = MediaType.CDROM; else ImageInfo.MediaType = MediaType.CD; - ImageInfo.ImageComments = header.Comments; + ImageInfo.Comments = header.Comments; DicConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("BlindrWrite comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("BlindrWrite comments: {0}", ImageInfo.Comments); return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1118,36 +1106,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "BlindWrite 4 TOC file"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - return tracks; - } - public override List GetSessionTracks(Session session) { if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1160,11 +1118,6 @@ namespace DiscImageChef.DiscImages return tracks.Where(track => track.TrackSession == session).ToList(); } - public override List GetSessions() - { - return sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1242,86 +1195,6 @@ namespace DiscImageChef.DiscImages return null; } - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - struct Bw4Header { public byte[] Signature; diff --git a/DiscImageChef.DiscImages/BlindWrite5.cs b/DiscImageChef.DiscImages/BlindWrite5.cs index 2a203b379..d9a50564a 100644 --- a/DiscImageChef.DiscImages/BlindWrite5.cs +++ b/DiscImageChef.DiscImages/BlindWrite5.cs @@ -89,12 +89,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -107,6 +107,14 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "BlindWrite 5 TOC file"; + + public override List Partitions => partitions; + + public override List Tracks => tracks; + + public override List Sessions => sessions; + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -944,16 +952,16 @@ namespace DiscImageChef.DiscImages ImageInfo.DriveManufacturer = StringHandlers.CToString(header.manufacturer); ImageInfo.DriveModel = StringHandlers.CToString(header.product); ImageInfo.DriveFirmwareRevision = StringHandlers.CToString(header.revision); - ImageInfo.ImageApplication = "BlindWrite"; + ImageInfo.Application = "BlindWrite"; if(string.Compare(Path.GetExtension(imageFilter.GetFilename()), "B5T", - StringComparison.OrdinalIgnoreCase) == 0) ImageInfo.ImageApplicationVersion = "5"; + StringComparison.OrdinalIgnoreCase) == 0) ImageInfo.ApplicationVersion = "5"; else if(string.Compare(Path.GetExtension(imageFilter.GetFilename()), "B6T", - StringComparison.OrdinalIgnoreCase) == 0) ImageInfo.ImageApplicationVersion = "6"; - ImageInfo.ImageVersion = "5"; + StringComparison.OrdinalIgnoreCase) == 0) ImageInfo.ApplicationVersion = "6"; + ImageInfo.Version = "5"; ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; if(pma != null) @@ -1023,26 +1031,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1670,36 +1658,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "BlindWrite 5 TOC file"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - return tracks; - } - public override List GetSessionTracks(Session session) { if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1712,11 +1670,6 @@ namespace DiscImageChef.DiscImages return tracks.Where(dicTrack => dicTrack.TrackSession == session).ToList(); } - public override List GetSessions() - { - return sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1794,6 +1747,62 @@ namespace DiscImageChef.DiscImages return null; } + static TrackType BlindWriteTrackTypeToTrackType(Bw5TrackType trackType) + { + switch(trackType) + { + case Bw5TrackType.Mode1: return TrackType.CdMode1; + case Bw5TrackType.Mode2F1: return TrackType.CdMode2Form1; + case Bw5TrackType.Mode2F2: return TrackType.CdMode2Form2; + case Bw5TrackType.Mode2: return TrackType.CdMode2Formless; + case Bw5TrackType.Audio: return TrackType.Audio; + default: return TrackType.Data; + } + } + + static MediaType BlindWriteProfileToMediaType(ProfileNumber profile) + { + switch(profile) + { + case ProfileNumber.BDRE: return MediaType.BDRE; + case ProfileNumber.BDROM: return MediaType.BDROM; + case ProfileNumber.BDRRdm: + case ProfileNumber.BDRSeq: return MediaType.BDR; + case ProfileNumber.CDR: + case ProfileNumber.HDBURNR: return MediaType.CDR; + case ProfileNumber.CDROM: + case ProfileNumber.HDBURNROM: return MediaType.CDROM; + case ProfileNumber.CDRW: + case ProfileNumber.HDBURNRW: return MediaType.CDRW; + case ProfileNumber.DDCDR: return MediaType.DDCDR; + case ProfileNumber.DDCDROM: return MediaType.DDCD; + case ProfileNumber.DDCDRW: return MediaType.DDCDRW; + case ProfileNumber.DVDDownload: return MediaType.DVDDownload; + case ProfileNumber.DVDRAM: return MediaType.DVDRAM; + case ProfileNumber.DVDRDLJump: + case ProfileNumber.DVDRDLSeq: return MediaType.DVDRDL; + case ProfileNumber.DVDRDLPlus: return MediaType.DVDPRDL; + case ProfileNumber.DVDROM: return MediaType.DVDROM; + case ProfileNumber.DVDRPlus: return MediaType.DVDPR; + case ProfileNumber.DVDRSeq: return MediaType.DVDR; + case ProfileNumber.DVDRWDL: return MediaType.DVDRWDL; + case ProfileNumber.DVDRWDLPlus: return MediaType.DVDPRWDL; + case ProfileNumber.DVDRWPlus: return MediaType.DVDPRW; + case ProfileNumber.DVDRWRes: + case ProfileNumber.DVDRWSeq: return MediaType.DVDRW; + case ProfileNumber.HDDVDR: return MediaType.HDDVDR; + case ProfileNumber.HDDVDRAM: return MediaType.HDDVDRAM; + case ProfileNumber.HDDVDRDL: return MediaType.HDDVDRDL; + case ProfileNumber.HDDVDROM: return MediaType.HDDVDROM; + case ProfileNumber.HDDVDRW: return MediaType.HDDVDRW; + case ProfileNumber.HDDVDRWDL: return MediaType.HDDVDRWDL; + case ProfileNumber.ASMO: + case ProfileNumber.MOErasable: return MediaType.UnknownMO; + case ProfileNumber.NonRemovable: return MediaType.GENERIC_HDD; + default: return MediaType.CD; + } + } + enum Bw5TrackType : byte { NotData = 0, @@ -1913,145 +1922,5 @@ namespace DiscImageChef.DiscImages public int StartLba; public int Sectors; } - - #region Private methods - static TrackType BlindWriteTrackTypeToTrackType(Bw5TrackType trackType) - { - switch(trackType) - { - case Bw5TrackType.Mode1: return TrackType.CdMode1; - case Bw5TrackType.Mode2F1: return TrackType.CdMode2Form1; - case Bw5TrackType.Mode2F2: return TrackType.CdMode2Form2; - case Bw5TrackType.Mode2: return TrackType.CdMode2Formless; - case Bw5TrackType.Audio: return TrackType.Audio; - default: return TrackType.Data; - } - } - - static MediaType BlindWriteProfileToMediaType(ProfileNumber profile) - { - switch(profile) - { - case ProfileNumber.BDRE: return MediaType.BDRE; - case ProfileNumber.BDROM: return MediaType.BDROM; - case ProfileNumber.BDRRdm: - case ProfileNumber.BDRSeq: return MediaType.BDR; - case ProfileNumber.CDR: - case ProfileNumber.HDBURNR: return MediaType.CDR; - case ProfileNumber.CDROM: - case ProfileNumber.HDBURNROM: return MediaType.CDROM; - case ProfileNumber.CDRW: - case ProfileNumber.HDBURNRW: return MediaType.CDRW; - case ProfileNumber.DDCDR: return MediaType.DDCDR; - case ProfileNumber.DDCDROM: return MediaType.DDCD; - case ProfileNumber.DDCDRW: return MediaType.DDCDRW; - case ProfileNumber.DVDDownload: return MediaType.DVDDownload; - case ProfileNumber.DVDRAM: return MediaType.DVDRAM; - case ProfileNumber.DVDRDLJump: - case ProfileNumber.DVDRDLSeq: return MediaType.DVDRDL; - case ProfileNumber.DVDRDLPlus: return MediaType.DVDPRDL; - case ProfileNumber.DVDROM: return MediaType.DVDROM; - case ProfileNumber.DVDRPlus: return MediaType.DVDPR; - case ProfileNumber.DVDRSeq: return MediaType.DVDR; - case ProfileNumber.DVDRWDL: return MediaType.DVDRWDL; - case ProfileNumber.DVDRWDLPlus: return MediaType.DVDPRWDL; - case ProfileNumber.DVDRWPlus: return MediaType.DVDPRW; - case ProfileNumber.DVDRWRes: - case ProfileNumber.DVDRWSeq: return MediaType.DVDRW; - case ProfileNumber.HDDVDR: return MediaType.HDDVDR; - case ProfileNumber.HDDVDRAM: return MediaType.HDDVDRAM; - case ProfileNumber.HDDVDRDL: return MediaType.HDDVDRDL; - case ProfileNumber.HDDVDROM: return MediaType.HDDVDROM; - case ProfileNumber.HDDVDRW: return MediaType.HDDVDRW; - case ProfileNumber.HDDVDRWDL: return MediaType.HDDVDRWDL; - case ProfileNumber.ASMO: - case ProfileNumber.MOErasable: return MediaType.UnknownMO; - case ProfileNumber.NonRemovable: return MediaType.GENERIC_HDD; - default: return MediaType.CD; - } - } - #endregion Private methods - - #region Unsupported features - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - #endregion Unsupported features } } \ No newline at end of file diff --git a/DiscImageChef.DiscImages/CDRDAO.cs b/DiscImageChef.DiscImages/CDRDAO.cs index 6d0f73309..eae35622a 100644 --- a/DiscImageChef.DiscImages/CDRDAO.cs +++ b/DiscImageChef.DiscImages/CDRDAO.cs @@ -119,12 +119,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -137,6 +137,58 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "CDRDAO tocfile"; + + public override List Partitions => partitions; + + public override List Tracks + { + get + { + List tracks = new List(); + + foreach(CdrdaoTrack cdrTrack in discimage.Tracks) + { + Track dicTrack = new Track + { + Indexes = cdrTrack.Indexes, + TrackDescription = cdrTrack.Title, + TrackStartSector = cdrTrack.StartSector, + TrackPregap = cdrTrack.Pregap, + TrackSession = 1, + TrackSequence = cdrTrack.Sequence, + TrackType = CdrdaoTrackTypeToTrackType(cdrTrack.Tracktype), + TrackFilter = cdrTrack.Trackfile.Datafilter, + TrackFile = cdrTrack.Trackfile.Datafilter.GetFilename(), + TrackFileOffset = cdrTrack.Trackfile.Offset, + TrackFileType = cdrTrack.Trackfile.Filetype, + TrackRawBytesPerSector = cdrTrack.Bps, + TrackBytesPerSector = CdrdaoTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) + }; + + dicTrack.TrackEndSector = dicTrack.TrackStartSector + cdrTrack.Sectors - 1; + if(!cdrTrack.Indexes.TryGetValue(0, out dicTrack.TrackStartSector)) + cdrTrack.Indexes.TryGetValue(1, out dicTrack.TrackStartSector); + if(cdrTrack.Subchannel) + { + dicTrack.TrackSubchannelType = cdrTrack.Packedsubchannel + ? TrackSubchannelType.PackedInterleaved + : TrackSubchannelType.RawInterleaved; + dicTrack.TrackSubchannelFilter = cdrTrack.Trackfile.Datafilter; + dicTrack.TrackSubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); + dicTrack.TrackSubchannelOffset = cdrTrack.Trackfile.Offset; + } + else dicTrack.TrackSubchannelType = TrackSubchannelType.None; + + tracks.Add(dicTrack); + } + + return tracks; + } + } + + public override List Sessions => throw new NotImplementedException(); + public override bool IdentifyImage(Filter imageFilter) { try @@ -792,12 +844,12 @@ namespace DiscImageChef.DiscImages if(discimage.Mcn != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.CD_MCN); - ImageInfo.ImageApplication = "CDRDAO"; + ImageInfo.Application = "CDRDAO"; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageComments = discimage.Comment; + ImageInfo.Comments = discimage.Comment; ImageInfo.MediaSerialNumber = discimage.Mcn; ImageInfo.MediaBarcode = discimage.Barcode; ImageInfo.MediaType = discimage.Disktype; @@ -863,8 +915,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; DicConsole.VerboseWriteLine("CDRDAO image describes a disc of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("CDRDAO comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("CDRDAO comments: {0}", ImageInfo.Comments); return true; } @@ -877,26 +929,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1322,104 +1354,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "CDRDAO tocfile"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - List tracks = new List(); - - foreach(CdrdaoTrack cdrTrack in discimage.Tracks) - { - Track dicTrack = new Track - { - Indexes = cdrTrack.Indexes, - TrackDescription = cdrTrack.Title, - TrackStartSector = cdrTrack.StartSector, - TrackPregap = cdrTrack.Pregap, - TrackSession = 1, - TrackSequence = cdrTrack.Sequence, - TrackType = CdrdaoTrackTypeToTrackType(cdrTrack.Tracktype), - TrackFilter = cdrTrack.Trackfile.Datafilter, - TrackFile = cdrTrack.Trackfile.Datafilter.GetFilename(), - TrackFileOffset = cdrTrack.Trackfile.Offset, - TrackFileType = cdrTrack.Trackfile.Filetype, - TrackRawBytesPerSector = cdrTrack.Bps, - TrackBytesPerSector = CdrdaoTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) - }; - - dicTrack.TrackEndSector = dicTrack.TrackStartSector + cdrTrack.Sectors - 1; - if(!cdrTrack.Indexes.TryGetValue(0, out dicTrack.TrackStartSector)) - cdrTrack.Indexes.TryGetValue(1, out dicTrack.TrackStartSector); - if(cdrTrack.Subchannel) - { - dicTrack.TrackSubchannelType = cdrTrack.Packedsubchannel - ? TrackSubchannelType.PackedInterleaved - : TrackSubchannelType.RawInterleaved; - dicTrack.TrackSubchannelFilter = cdrTrack.Trackfile.Datafilter; - dicTrack.TrackSubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); - dicTrack.TrackSubchannelOffset = cdrTrack.Trackfile.Offset; - } - else dicTrack.TrackSubchannelType = TrackSubchannelType.None; - - tracks.Add(dicTrack); - } - - return tracks; - } - public override List GetSessionTracks(Session session) { return GetSessionTracks(session.SessionSequence); @@ -1427,7 +1361,7 @@ namespace DiscImageChef.DiscImages public override List GetSessionTracks(ushort session) { - if(session == 1) return GetTracks(); + if(session == 1) return Tracks; throw new ImageNotSupportedException("Session does not exist in disc image"); } @@ -1509,12 +1443,6 @@ namespace DiscImageChef.DiscImages return null; } - public override List GetSessions() - { - // TODO - throw new NotImplementedException(); - } - static ushort CdrdaoTrackTypeToBytesPerSector(string trackType) { switch(trackType) @@ -1563,56 +1491,6 @@ namespace DiscImageChef.DiscImages } } - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - [SuppressMessage("ReSharper", "NotAccessedField.Local")] struct CdrdaoTrackFile { diff --git a/DiscImageChef.DiscImages/CDRWin.cs b/DiscImageChef.DiscImages/CDRWin.cs index b172856b9..e9127f181 100644 --- a/DiscImageChef.DiscImages/CDRWin.cs +++ b/DiscImageChef.DiscImages/CDRWin.cs @@ -186,12 +186,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -204,6 +204,59 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "CDRWin CUESheet"; + + public override List Partitions => partitions; + + public override List Tracks + { + get + { + List tracks = new List(); + + ulong previousStartSector = 0; + + foreach(CdrWinTrack cdrTrack in discimage.Tracks) + { + Track dicTrack = new Track + { + Indexes = cdrTrack.Indexes, + TrackDescription = cdrTrack.Title, + TrackStartSector = previousStartSector, + TrackPregap = cdrTrack.Pregap, + TrackSession = cdrTrack.Session, + TrackSequence = cdrTrack.Sequence, + TrackType = CdrWinTrackTypeToTrackType(cdrTrack.Tracktype), + TrackFile = cdrTrack.Trackfile.Datafilter.GetFilename(), + TrackFilter = cdrTrack.Trackfile.Datafilter, + TrackFileOffset = cdrTrack.Trackfile.Offset, + TrackFileType = cdrTrack.Trackfile.Filetype, + TrackRawBytesPerSector = cdrTrack.Bps, + TrackBytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) + }; + dicTrack.TrackEndSector = dicTrack.TrackStartSector + cdrTrack.Sectors - 1; + + if(!cdrTrack.Indexes.TryGetValue(0, out dicTrack.TrackStartSector)) + cdrTrack.Indexes.TryGetValue(1, out dicTrack.TrackStartSector); + if(cdrTrack.Bps == 2448) + { + dicTrack.TrackSubchannelFilter = cdrTrack.Trackfile.Datafilter; + dicTrack.TrackSubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); + dicTrack.TrackSubchannelOffset = cdrTrack.Trackfile.Offset; + dicTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + } + else dicTrack.TrackSubchannelType = TrackSubchannelType.None; + + tracks.Add(dicTrack); + previousStartSector = dicTrack.TrackEndSector + 1; + } + + return tracks; + } + } + + public override List Sessions => discimage.Sessions; + // Due to .cue format, this method must parse whole file, ignoring errors (those will be thrown by OpenImage()). public override bool IdentifyImage(Filter imageFilter) { @@ -1046,13 +1099,13 @@ namespace DiscImageChef.DiscImages // Detect ISOBuster extensions if(discimage.Disktypestr != null || discimage.Comment.ToLower().Contains("isobuster") || - discimage.Sessions.Count > 1) ImageInfo.ImageApplication = "ISOBuster"; - else ImageInfo.ImageApplication = "CDRWin"; + discimage.Sessions.Count > 1) ImageInfo.Application = "ISOBuster"; + else ImageInfo.Application = "CDRWin"; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageComments = discimage.Comment; + ImageInfo.Comments = discimage.Comment; ImageInfo.MediaSerialNumber = discimage.Mcn; ImageInfo.MediaBarcode = discimage.Barcode; ImageInfo.MediaType = discimage.Disktype; @@ -1121,8 +1174,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; DicConsole.VerboseWriteLine("CDRWIN image describes a disc of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("CDRWIN comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("CDRWIN comments: {0}", ImageInfo.Comments); return true; } @@ -1135,26 +1188,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1621,105 +1654,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "CDRWin CUESheet"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - List tracks = new List(); - - ulong previousStartSector = 0; - - foreach(CdrWinTrack cdrTrack in discimage.Tracks) - { - Track dicTrack = new Track - { - Indexes = cdrTrack.Indexes, - TrackDescription = cdrTrack.Title, - TrackStartSector = previousStartSector, - TrackPregap = cdrTrack.Pregap, - TrackSession = cdrTrack.Session, - TrackSequence = cdrTrack.Sequence, - TrackType = CdrWinTrackTypeToTrackType(cdrTrack.Tracktype), - TrackFile = cdrTrack.Trackfile.Datafilter.GetFilename(), - TrackFilter = cdrTrack.Trackfile.Datafilter, - TrackFileOffset = cdrTrack.Trackfile.Offset, - TrackFileType = cdrTrack.Trackfile.Filetype, - TrackRawBytesPerSector = cdrTrack.Bps, - TrackBytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) - }; - dicTrack.TrackEndSector = dicTrack.TrackStartSector + cdrTrack.Sectors - 1; - - if(!cdrTrack.Indexes.TryGetValue(0, out dicTrack.TrackStartSector)) - cdrTrack.Indexes.TryGetValue(1, out dicTrack.TrackStartSector); - if(cdrTrack.Bps == 2448) - { - dicTrack.TrackSubchannelFilter = cdrTrack.Trackfile.Datafilter; - dicTrack.TrackSubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); - dicTrack.TrackSubchannelOffset = cdrTrack.Trackfile.Offset; - dicTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - } - else dicTrack.TrackSubchannelType = TrackSubchannelType.None; - - tracks.Add(dicTrack); - previousStartSector = dicTrack.TrackEndSector + 1; - } - - return tracks; - } - public override List GetSessionTracks(Session session) { if(discimage.Sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1768,11 +1702,6 @@ namespace DiscImageChef.DiscImages return tracks; } - public override List GetSessions() - { - return discimage.Sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1958,56 +1887,6 @@ namespace DiscImageChef.DiscImages } } - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - struct CdrWinTrackFile { /// Track # diff --git a/DiscImageChef.DiscImages/CHD.cs b/DiscImageChef.DiscImages/CHD.cs index d50e32b2e..05522f920 100644 --- a/DiscImageChef.DiscImages/CHD.cs +++ b/DiscImageChef.DiscImages/CHD.cs @@ -142,11 +142,11 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "MAME", - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "MAME", + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -161,6 +161,44 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Compressed Hunks of Data"; + + public override List Partitions + { + get + { + if(isHdd) + throw new + FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); + + return partitions; + } + } + + public override List Tracks + { + get + { + if(isHdd) + throw new + FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); + + return tracks.Values.ToList(); + } + } + + public override List Sessions + { + get + { + if(isHdd) + throw new + FeaturedNotSupportedByDiscImageException("Cannot access optical sessions on a hard disk image"); + + throw new NotImplementedException(); + } + } + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -248,7 +286,7 @@ namespace DiscImageChef.DiscImages ImageInfo.Sectors = hdrV1.hunksize * hdrV1.totalhunks; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = 512; - ImageInfo.ImageVersion = "1"; + ImageInfo.Version = "1"; ImageInfo.ImageSize = ImageInfo.SectorSize * hdrV1.hunksize * hdrV1.totalhunks; totalHunks = hdrV1.totalhunks; @@ -319,7 +357,7 @@ namespace DiscImageChef.DiscImages ImageInfo.Sectors = hdrV2.hunksize * hdrV2.totalhunks; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = hdrV2.seclen; - ImageInfo.ImageVersion = "2"; + ImageInfo.Version = "2"; ImageInfo.ImageSize = ImageInfo.SectorSize * hdrV2.hunksize * hdrV2.totalhunks; totalHunks = hdrV2.totalhunks; @@ -372,7 +410,7 @@ namespace DiscImageChef.DiscImages nextMetaOff = hdrV3.metaoffset; ImageInfo.ImageSize = hdrV3.logicalbytes; - ImageInfo.ImageVersion = "3"; + ImageInfo.Version = "3"; totalHunks = hdrV3.totalhunks; bytesPerHunk = hdrV3.hunkbytes; @@ -416,7 +454,7 @@ namespace DiscImageChef.DiscImages nextMetaOff = hdrV4.metaoffset; ImageInfo.ImageSize = hdrV4.logicalbytes; - ImageInfo.ImageVersion = "4"; + ImageInfo.Version = "4"; totalHunks = hdrV4.totalhunks; bytesPerHunk = hdrV4.hunkbytes; @@ -499,7 +537,7 @@ namespace DiscImageChef.DiscImages nextMetaOff = hdrV5.metaoffset; ImageInfo.ImageSize = hdrV5.logicalbytes; - ImageInfo.ImageVersion = "5"; + ImageInfo.Version = "5"; totalHunks = (uint)(hdrV5.logicalbytes / hdrV5.hunkbytes); bytesPerHunk = hdrV5.hunkbytes; @@ -1157,8 +1195,8 @@ namespace DiscImageChef.DiscImages partitions.Add(partition); } - ImageInfo.ImageHasPartitions = true; - ImageInfo.ImageHasSessions = true; + ImageInfo.HasPartitions = true; + ImageInfo.HasSessions = true; } maxBlockCache = (int)(MAX_CACHE_SIZE / (ImageInfo.SectorSize * sectorsPerHunk)); @@ -1350,6 +1388,7 @@ namespace DiscImageChef.DiscImages } if(unknownLbas.Count > 0) return null; + return failingLbas.Count <= 0; } @@ -1381,6 +1420,7 @@ namespace DiscImageChef.DiscImages } if(unknownLbas.Count > 0) return null; + return failingLbas.Count <= 0; } @@ -1407,26 +1447,6 @@ namespace DiscImageChef.DiscImages return expectedChecksum.SequenceEqual(calculated); } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { if(sectorAddress > ImageInfo.Sectors - 1) @@ -1851,46 +1871,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override string GetImageFormat() - { - return "Compressed Hunks of Data"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { if(ImageInfo.ReadableMediaTags.Contains(MediaTagType.ATA_IDENTIFY)) return identify; @@ -1900,82 +1880,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - if(isHdd) - throw new FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); - - return partitions; - } - - public override List GetTracks() - { - if(isHdd) - throw new FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); - - return tracks.Values.ToList(); - } - public override List GetSessionTracks(Session session) { if(isHdd) @@ -1992,15 +1896,6 @@ namespace DiscImageChef.DiscImages return tracks.Values.Where(track => track.TrackSession == session).ToList(); } - public override List GetSessions() - { - if(isHdd) - throw new - FeaturedNotSupportedByDiscImageException("Cannot access optical sessions on a hard disk image"); - - throw new NotImplementedException(); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { if(isHdd) diff --git a/DiscImageChef.DiscImages/CPCDSK.cs b/DiscImageChef.DiscImages/CPCDSK.cs index 4e88325c3..ff2661f96 100644 --- a/DiscImageChef.DiscImages/CPCDSK.cs +++ b/DiscImageChef.DiscImages/CPCDSK.cs @@ -86,13 +86,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -107,6 +107,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => extended ? "CPCEMU Extended disk image" : "CPCEMU disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -309,10 +320,10 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("CPCDSK plugin", "Read {0} tracks", readtracks); DicConsole.DebugWriteLine("CPCDSK plugin", "All tracks are same size? {0}", allTracksSameSize); - ImageInfo.ImageApplication = StringHandlers.CToString(header.creator); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.Application = StringHandlers.CToString(header.creator); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = (ulong)sectors.Count; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.CompactFloppy; @@ -353,76 +364,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return extended ? "CPCEMU Extended disk image" : "CPCEMU disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { if(sectors.TryGetValue(sectorAddress, out byte[] sector)) return sector; @@ -528,66 +469,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -598,11 +479,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/CisCopy.cs b/DiscImageChef.DiscImages/CisCopy.cs index c0680f946..8fae59e27 100644 --- a/DiscImageChef.DiscImages/CisCopy.cs +++ b/DiscImageChef.DiscImages/CisCopy.cs @@ -67,13 +67,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -88,6 +88,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "CisCopy"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -232,10 +243,10 @@ namespace DiscImageChef.DiscImages debugStream.Close(); */ - ImageInfo.ImageApplication = "CisCopy"; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = imageFilter.GetFilename(); + ImageInfo.Application = "CisCopy"; + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = imageFilter.GetFilename(); ImageInfo.ImageSize = (ulong)(stream.Length - 2 - trackBytes.Length); ImageInfo.SectorSize = 512; @@ -339,26 +350,6 @@ namespace DiscImageChef.DiscImages return null; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -380,106 +371,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "CisCopy"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -505,16 +396,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -525,11 +406,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/CloneCD.cs b/DiscImageChef.DiscImages/CloneCD.cs index 2650ab761..2acfddd00 100644 --- a/DiscImageChef.DiscImages/CloneCD.cs +++ b/DiscImageChef.DiscImages/CloneCD.cs @@ -99,12 +99,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -117,6 +117,14 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "CloneCD"; + + public override List Partitions => partitions; + + public override List Tracks => tracks; + + public override List Sessions => sessions; + public override bool IdentifyImage(Filter imageFilter) { ccdFilter = imageFilter; @@ -273,11 +281,11 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("CloneCD plugin", "Found Version at line {0}", lineNumber); - ImageInfo.ImageVersion = ccdVerMatch.Groups["value"].Value; - if(ImageInfo.ImageVersion != "2" && ImageInfo.ImageVersion != "3") + ImageInfo.Version = ccdVerMatch.Groups["value"].Value; + if(ImageInfo.Version != "2" && ImageInfo.Version != "3") DicConsole .ErrorWriteLine("(CloneCD plugin): Warning! Unknown CCD image version {0}, may not work!", - ImageInfo.ImageVersion); + ImageInfo.Version); } else if(inDisk) { @@ -808,10 +816,10 @@ namespace DiscImageChef.DiscImages else if(!audio) ImageInfo.MediaType = MediaType.CDROM; else ImageInfo.MediaType = MediaType.CD; - ImageInfo.ImageApplication = "CloneCD"; + ImageInfo.Application = "CloneCD"; ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; return true; @@ -830,26 +838,6 @@ namespace DiscImageChef.DiscImages return (ulong)(hour * 60 * 60 * 75 + minute * 60 * 75 + second * 75 + frame - 150); } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1286,116 +1274,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "CloneCD"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - return tracks; - } - public override List GetSessionTracks(Session session) { if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1408,11 +1286,6 @@ namespace DiscImageChef.DiscImages return tracks.Where(track => track.TrackSession == session).ToList(); } - public override List GetSessions() - { - return sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1451,6 +1324,7 @@ namespace DiscImageChef.DiscImages } if(unknownLbas.Count > 0) return null; + return failingLbas.Count <= 0; } @@ -1480,6 +1354,7 @@ namespace DiscImageChef.DiscImages } if(unknownLbas.Count > 0) return null; + return failingLbas.Count <= 0; } diff --git a/DiscImageChef.DiscImages/CopyQM.cs b/DiscImageChef.DiscImages/CopyQM.cs index aa594c5aa..e072e5c3e 100644 --- a/DiscImageChef.DiscImages/CopyQM.cs +++ b/DiscImageChef.DiscImages/CopyQM.cs @@ -103,13 +103,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -124,6 +124,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Sydex CopyQM"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -184,7 +195,7 @@ namespace DiscImageChef.DiscImages byte[] cmt = new byte[header.commentLength]; stream.Read(cmt, 0, header.commentLength); - ImageInfo.ImageComments = StringHandlers.CToString(cmt); + ImageInfo.Comments = StringHandlers.CToString(cmt); decodedImage = new MemoryStream(); calculatedDataCrc = 0; @@ -248,10 +259,10 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("CopyQM plugin", "Calculated data CRC = 0x{0:X8}, {1}", calculatedDataCrc, calculatedDataCrc == header.crc); - ImageInfo.ImageApplication = "CopyQM"; - ImageInfo.ImageCreationTime = DateHandlers.DosToDateTime(header.date, header.time); - ImageInfo.ImageLastModificationTime = ImageInfo.ImageCreationTime; - ImageInfo.ImageName = header.volumeLabel; + ImageInfo.Application = "CopyQM"; + ImageInfo.CreationTime = DateHandlers.DosToDateTime(header.date, header.time); + ImageInfo.LastModificationTime = ImageInfo.CreationTime; + ImageInfo.MediaTitle = header.volumeLabel; ImageInfo.ImageSize = (ulong)(stream.Length - 133 - header.commentLength); ImageInfo.Sectors = (ulong)sectors; ImageInfo.SectorSize = header.sectorSize; @@ -336,8 +347,8 @@ namespace DiscImageChef.DiscImages decodedImage.Close(); DicConsole.VerboseWriteLine("CopyQM image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("CopyQM comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("CopyQM comments: {0}", ImageInfo.Comments); ImageInfo.Heads = header.heads; ImageInfo.Cylinders = header.imageCylinders; @@ -383,26 +394,6 @@ namespace DiscImageChef.DiscImages return calculatedDataCrc == header.crc && headerChecksumOk; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -424,106 +415,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Sydex CopyQM"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -549,16 +440,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -569,11 +450,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/D88.cs b/DiscImageChef.DiscImages/D88.cs index bac8fb8a1..113ea9b4f 100644 --- a/DiscImageChef.DiscImages/D88.cs +++ b/DiscImageChef.DiscImages/D88.cs @@ -61,13 +61,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -82,6 +82,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "D88 disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -332,11 +343,11 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("D88 plugin", "MediaType: {0}", ImageInfo.MediaType); ImageInfo.ImageSize = (ulong)d88Hdr.disk_size; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = (ulong)sectorsData.Count; - ImageInfo.ImageComments = StringHandlers.CToString(d88Hdr.name, shiftjis); + ImageInfo.Comments = StringHandlers.CToString(d88Hdr.name, shiftjis); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = (uint)(128 << (int)bps); @@ -413,76 +424,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "D88 disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -558,66 +499,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -628,11 +509,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/DART.cs b/DiscImageChef.DiscImages/DART.cs index 09776ae6c..ebab2d9ad 100644 --- a/DiscImageChef.DiscImages/DART.cs +++ b/DiscImageChef.DiscImages/DART.cs @@ -96,13 +96,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -117,6 +117,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Apple Disk Archival/Retrieval Tool"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -307,9 +318,9 @@ namespace DiscImageChef.DiscImages if(dev != null) pre = $"{version.PreReleaseVersion}"; - ImageInfo.ImageApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; - ImageInfo.ImageApplication = version.VersionString; - ImageInfo.ImageComments = version.VersionMessage; + ImageInfo.ApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; + ImageInfo.Application = version.VersionString; + ImageInfo.Comments = version.VersionMessage; } } @@ -328,8 +339,8 @@ namespace DiscImageChef.DiscImages if(dArtMatch.Success) { - ImageInfo.ImageApplication = "DART"; - ImageInfo.ImageApplicationVersion = dArtMatch.Groups["version"].Value; + ImageInfo.Application = "DART"; + ImageInfo.ApplicationVersion = dArtMatch.Groups["version"].Value; dataChecksum = Convert.ToUInt32(dArtMatch.Groups["datachk"].Value, 16); tagChecksum = Convert.ToUInt32(dArtMatch.Groups["tagchk"].Value, 16); } @@ -355,17 +366,17 @@ namespace DiscImageChef.DiscImages } catch(InvalidCastException) { } - DicConsole.DebugWriteLine("DART plugin", "Image application = {0} version {1}", ImageInfo.ImageApplication, - ImageInfo.ImageApplicationVersion); + DicConsole.DebugWriteLine("DART plugin", "Image application = {0} version {1}", ImageInfo.Application, + ImageInfo.ApplicationVersion); ImageInfo.Sectors = (ulong)(header.srcSize * 2); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.SectorSize = SECTOR_SIZE; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.ImageSize = ImageInfo.Sectors * SECTOR_SIZE; - ImageInfo.ImageVersion = header.srcCmp == COMPRESS_NONE ? "1.4" : "1.5"; + ImageInfo.Version = header.srcCmp == COMPRESS_NONE ? "1.4" : "1.5"; switch(header.srcSize) { @@ -472,76 +483,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Apple Disk Archival/Retrieval Tool"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -577,66 +518,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -647,11 +528,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/DIM.cs b/DiscImageChef.DiscImages/DIM.cs index 59f57b97e..b971d1796 100644 --- a/DiscImageChef.DiscImages/DIM.cs +++ b/DiscImageChef.DiscImages/DIM.cs @@ -61,13 +61,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -82,6 +82,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "DIM disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -203,17 +214,17 @@ namespace DiscImageChef.DiscImages } DicConsole.VerboseWriteLine("DIM image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("DIM comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("DIM comments: {0}", ImageInfo.Comments); dimImageFilter = imageFilter; ImageInfo.ImageSize = (ulong)diskSize; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = ImageInfo.ImageSize / ImageInfo.SectorSize; - ImageInfo.ImageComments = StringHandlers.CToString(comment, Encoding.GetEncoding(932)); + ImageInfo.Comments = StringHandlers.CToString(comment, Encoding.GetEncoding(932)); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; switch(ImageInfo.MediaType) @@ -254,76 +265,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "DIM disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -403,66 +344,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -473,11 +354,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/DiscFerret.cs b/DiscImageChef.DiscImages/DiscFerret.cs index 1c33f4a92..44c2f271f 100644 --- a/DiscImageChef.DiscImages/DiscFerret.cs +++ b/DiscImageChef.DiscImages/DiscFerret.cs @@ -62,13 +62,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -83,6 +83,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "DiscFerret"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { byte[] magicB = new byte[4]; @@ -158,32 +169,12 @@ namespace DiscImageChef.DiscImages ImageInfo.Heads++; ImageInfo.Cylinders++; - ImageInfo.ImageApplication = "DiscFerret"; - ImageInfo.ImageApplicationVersion = magic == DFI_MAGIC2 ? "2.0" : "1.0"; + ImageInfo.Application = "DiscFerret"; + ImageInfo.ApplicationVersion = magic == DFI_MAGIC2 ? "2.0" : "1.0"; throw new NotImplementedException("Flux decoding is not yet implemented."); } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -224,106 +215,6 @@ namespace DiscImageChef.DiscImages throw new NotImplementedException("Flux decoding is not yet implemented."); } - public override string GetImageFormat() - { - return "DiscFerret"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override bool? VerifySector(ulong sectorAddress) { throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -360,16 +251,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -380,11 +261,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/DiscJuggler.cs b/DiscImageChef.DiscImages/DiscJuggler.cs index aff0e8ee5..903d712ae 100644 --- a/DiscImageChef.DiscImages/DiscJuggler.cs +++ b/DiscImageChef.DiscImages/DiscJuggler.cs @@ -61,12 +61,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -79,6 +79,14 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "DiscJuggler"; + + public override List Partitions => partitions; + + public override List Tracks => tracks; + + public override List Sessions => sessions; + public override bool IdentifyImage(Filter imageFilter) { imageStream = imageFilter.GetDataForkStream(); @@ -619,10 +627,10 @@ namespace DiscImageChef.DiscImages else ImageInfo.MediaType = MediaType.CD; } - ImageInfo.ImageApplication = "DiscJuggler"; + ImageInfo.Application = "DiscJuggler"; ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc; return true; @@ -638,26 +646,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1100,116 +1088,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "DiscJuggler"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - return tracks; - } - public override List GetSessionTracks(Session session) { if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -1222,11 +1100,6 @@ namespace DiscImageChef.DiscImages return tracks.Where(track => track.TrackSession == session).ToList(); } - public override List GetSessions() - { - return sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); diff --git a/DiscImageChef.DiscImages/DiskCopy42.cs b/DiscImageChef.DiscImages/DiskCopy42.cs index 33b43fccc..fee21de72 100644 --- a/DiscImageChef.DiscImages/DiskCopy42.cs +++ b/DiscImageChef.DiscImages/DiskCopy42.cs @@ -114,13 +114,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = "4.2", - ImageApplication = "Apple DiskCopy", - ImageApplicationVersion = "4.2", - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = "4.2", + Application = "Apple DiskCopy", + ApplicationVersion = "4.2", + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -316,9 +316,9 @@ namespace DiscImageChef.DiscImages } ImageInfo.ImageSize = ImageInfo.Sectors * ImageInfo.SectorSize + ImageInfo.Sectors * bptag; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = header.DiskName; + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = header.DiskName; switch(header.Format) { @@ -465,9 +465,9 @@ namespace DiscImageChef.DiscImages if(dev != null) pre = $"{version.PreReleaseVersion}"; - ImageInfo.ImageApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; - ImageInfo.ImageApplication = version.VersionString; - ImageInfo.ImageComments = version.VersionMessage; + ImageInfo.ApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; + ImageInfo.Application = version.VersionString; + ImageInfo.Comments = version.VersionMessage; } } @@ -485,12 +485,12 @@ namespace DiscImageChef.DiscImages if(dCpyMatch.Success) { - ImageInfo.ImageApplication = dCpyMatch.Groups["application"].Value; - ImageInfo.ImageApplicationVersion = dCpyMatch.Groups["version"].Value; + ImageInfo.Application = dCpyMatch.Groups["application"].Value; + ImageInfo.ApplicationVersion = dCpyMatch.Groups["version"].Value; // Until MacRoman is implemented - if(ImageInfo.ImageApplication == "ShrinkWrap?") - ImageInfo.ImageApplication = "ShrinkWrapâ„¢"; + if(ImageInfo.Application == "ShrinkWrap?") + ImageInfo.Application = "ShrinkWrapâ„¢"; } } } @@ -498,8 +498,8 @@ namespace DiscImageChef.DiscImages } catch(InvalidCastException) { } - DicConsole.DebugWriteLine("DC42 plugin", "Image application = {0} version {1}", ImageInfo.ImageApplication, - ImageInfo.ImageApplicationVersion); + DicConsole.DebugWriteLine("DC42 plugin", "Image application = {0} version {1}", ImageInfo.Application, + ImageInfo.ApplicationVersion); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; DicConsole.VerboseWriteLine("DiskCopy 4.2 image contains a disk of type {0}", ImageInfo.MediaType); @@ -629,26 +629,6 @@ namespace DiscImageChef.DiscImages return dataChk == header.DataChecksum && tagsChk == header.TagChecksum; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -735,120 +715,18 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Apple DiskCopy 4.2"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } + public override string ImageFormat => "Apple DiskCopy 4.2"; public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { + public override List Partitions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetTracks() - { + public override List Tracks => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public override List GetSessionTracks(Session session) { @@ -860,10 +738,8 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { + public override List Sessions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public override byte[] ReadSector(ulong sectorAddress, uint track) { diff --git a/DiscImageChef.DiscImages/DriDiskCopy.cs b/DiscImageChef.DiscImages/DriDiskCopy.cs index 6d11e7881..d16905c8e 100644 --- a/DiscImageChef.DiscImages/DriDiskCopy.cs +++ b/DiscImageChef.DiscImages/DriDiskCopy.cs @@ -60,11 +60,11 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "DiskCopy", - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "DiskCopy", + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -79,6 +79,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Digital Research DiskCopy"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -166,16 +177,16 @@ namespace DiscImageChef.DiscImages ImageInfo.SectorsPerTrack = footer.bpb.sptrack; ImageInfo.Sectors = footer.bpb.sectors; ImageInfo.SectorSize = footer.bpb.bps; - ImageInfo.ImageApplicationVersion = matchSignature.Groups["version"].Value; + ImageInfo.ApplicationVersion = matchSignature.Groups["version"].Value; driImageFilter = imageFilter; ImageInfo.ImageSize = (ulong)(stream.Length - Marshal.SizeOf(footer)); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); DicConsole.DebugWriteLine("DRI DiskCopy plugin", "Image application = {0} version {1}", - ImageInfo.ImageApplication, ImageInfo.ImageApplicationVersion); + ImageInfo.Application, ImageInfo.ApplicationVersion); // Correct some incorrect data in images of NEC 2HD disks if(ImageInfo.Cylinders == 77 && ImageInfo.Heads == 2 && ImageInfo.SectorsPerTrack == 16 && @@ -300,26 +311,6 @@ namespace DiscImageChef.DiscImages return null; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -362,121 +353,11 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageFormat() - { - return "Digital Research DiskCopy"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -487,11 +368,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/GDI.cs b/DiscImageChef.DiscImages/GDI.cs index 077db536a..d5cbe6653 100644 --- a/DiscImageChef.DiscImages/GDI.cs +++ b/DiscImageChef.DiscImages/GDI.cs @@ -47,8 +47,7 @@ namespace DiscImageChef.DiscImages public class Gdi : ImagePlugin { const string REGEX_TRACK = - @"\s?(?\d+)\s+(?\d+)\s(?\d)\s(?2352|2048)\s(?.+)\s(?\d+)$" - ; + @"\s?(?\d+)\s+(?\d+)\s(?\d)\s(?2352|2048)\s(?.+)\s(?\d+)$"; ulong densitySeparationSectors; GdiDisc discimage; @@ -66,12 +65,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = true, - ImageHasSessions = true, - ImageVersion = null, - ImageApplicationVersion = null, - ImageName = null, - ImageCreator = null, + HasPartitions = true, + HasSessions = true, + Version = null, + ApplicationVersion = null, + MediaTitle = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaPartNumber = null, @@ -84,6 +83,47 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Dreamcast GDI image"; + + public override List Partitions => partitions; + + public override List Tracks + { + get + { + List tracks = new List(); + + foreach(GdiTrack gdiTrack in discimage.Tracks) + { + Track track = new Track + { + Indexes = new Dictionary(), + TrackDescription = null, + TrackStartSector = gdiTrack.StartSector, + TrackPregap = gdiTrack.Pregap, + TrackSession = (ushort)(gdiTrack.HighDensity ? 2 : 1), + TrackSequence = gdiTrack.Sequence, + TrackType = gdiTrack.Tracktype, + TrackFilter = gdiTrack.Trackfilter, + TrackFile = gdiTrack.Trackfile, + TrackFileOffset = (ulong)gdiTrack.Offset, + TrackFileType = "BINARY", + TrackRawBytesPerSector = gdiTrack.Bps, + TrackBytesPerSector = gdiTrack.Tracktype == TrackType.Data ? 2048 : 2352, + TrackSubchannelType = TrackSubchannelType.None + }; + + track.TrackEndSector = track.TrackStartSector + gdiTrack.Sectors - 1; + + tracks.Add(track); + } + + return tracks; + } + } + + public override List Sessions => discimage.Sessions; + // Due to .gdi format, this method must parse whole file, ignoring errors (those will be thrown by OpenImage()). public override bool IdentifyImage(Filter imageFilter) { @@ -368,8 +408,8 @@ namespace DiscImageChef.DiscImages ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); } - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); ImageInfo.MediaType = discimage.Disktype; @@ -390,26 +430,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureSupportedButNotImplementedImageException("Feature not supported by image format"); @@ -848,93 +868,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Dreamcast GDI image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return partitions; - } - - public override List GetTracks() - { - List tracks = new List(); - - foreach(GdiTrack gdiTrack in discimage.Tracks) - { - Track track = new Track - { - Indexes = new Dictionary(), - TrackDescription = null, - TrackStartSector = gdiTrack.StartSector, - TrackPregap = gdiTrack.Pregap, - TrackSession = (ushort)(gdiTrack.HighDensity ? 2 : 1), - TrackSequence = gdiTrack.Sequence, - TrackType = gdiTrack.Tracktype, - TrackFilter = gdiTrack.Trackfilter, - TrackFile = gdiTrack.Trackfile, - TrackFileOffset = (ulong)gdiTrack.Offset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = gdiTrack.Bps, - TrackBytesPerSector = gdiTrack.Tracktype == TrackType.Data ? 2048 : 2352, - TrackSubchannelType = TrackSubchannelType.None - }; - - track.TrackEndSector = track.TrackStartSector + gdiTrack.Sectors - 1; - - tracks.Add(track); - } - - return tracks; - } - public override List GetSessionTracks(Session session) { if(discimage.Sessions.Contains(session)) return GetSessionTracks(session.SessionSequence); @@ -987,11 +920,6 @@ namespace DiscImageChef.DiscImages return tracks; } - public override List GetSessions() - { - return discimage.Sessions; - } - public override bool? VerifySector(ulong sectorAddress) { byte[] buffer = ReadSectorLong(sectorAddress); @@ -1069,56 +997,6 @@ namespace DiscImageChef.DiscImages return null; } - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - struct GdiTrack { /// Track # diff --git a/DiscImageChef.DiscImages/HDCopy.cs b/DiscImageChef.DiscImages/HDCopy.cs index ecd6b4b05..44f26e32b 100644 --- a/DiscImageChef.DiscImages/HDCopy.cs +++ b/DiscImageChef.DiscImages/HDCopy.cs @@ -115,13 +115,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -136,6 +136,16 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "HD-Copy image"; + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -197,10 +207,13 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); - ImageInfo.MediaType = GetMediaType(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.MediaType = + (from ent in mediaTypes + where ent.Tracks == ImageInfo.Cylinders && ent.SectorsPerTrack == ImageInfo.SectorsPerTrack + select ent.MediaType).FirstOrDefault(); // the start offset of the track data currentOffset = 2 + 2 * 82; @@ -239,78 +252,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "HD-Copy image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return (from ent in mediaTypes - where ent.Tracks == ImageInfo.Cylinders && ent.SectorsPerTrack == ImageInfo.SectorsPerTrack - select ent.MediaType).FirstOrDefault(); - } - void ReadTrackIntoCache(Stream stream, int tracknum) { byte[] trackData = new byte[ImageInfo.SectorSize * ImageInfo.SectorsPerTrack]; @@ -446,66 +387,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -516,11 +397,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/IMD.cs b/DiscImageChef.DiscImages/IMD.cs index 9abfec004..9f8060d42 100644 --- a/DiscImageChef.DiscImages/IMD.cs +++ b/DiscImageChef.DiscImages/IMD.cs @@ -60,13 +60,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -81,6 +81,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "IMageDisk"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -111,7 +122,7 @@ namespace DiscImageChef.DiscImages cmt.WriteByte(b); } - ImageInfo.ImageComments = StringHandlers.CToString(cmt.ToArray()); + ImageInfo.Comments = StringHandlers.CToString(cmt.ToArray()); sectorsData = new List(); byte currentCylinder = 0; @@ -196,12 +207,12 @@ namespace DiscImageChef.DiscImages } } - ImageInfo.ImageApplication = "IMD"; + ImageInfo.Application = "IMD"; // TODO: The header is the date of dump or the date of the application compilation? - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); - ImageInfo.ImageComments = StringHandlers.CToString(cmt.ToArray()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.Comments = StringHandlers.CToString(cmt.ToArray()); ImageInfo.Sectors = currentLba; ImageInfo.MediaType = MediaType.Unknown; @@ -297,8 +308,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; DicConsole.VerboseWriteLine("IMD image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("IMD comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("IMD comments: {0}", ImageInfo.Comments); /* FileStream debugFs = new FileStream("debug.img", FileMode.CreateNew, FileAccess.Write); @@ -347,26 +358,6 @@ namespace DiscImageChef.DiscImages return null; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -387,106 +378,6 @@ namespace DiscImageChef.DiscImages return buffer.ToArray(); } - public override string GetImageFormat() - { - return "IMageDisk"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -512,16 +403,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -532,11 +413,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/ImageInfo.cs b/DiscImageChef.DiscImages/ImageInfo.cs index a698207af..9e64aa422 100644 --- a/DiscImageChef.DiscImages/ImageInfo.cs +++ b/DiscImageChef.DiscImages/ImageInfo.cs @@ -36,39 +36,73 @@ using DiscImageChef.CommonTypes; namespace DiscImageChef.DiscImages { + /// + /// Contains information about a dump image and its contents + /// public struct ImageInfo { - public bool ImageHasPartitions; - public bool ImageHasSessions; + /// Image contains partitions (or tracks for optical media) + public bool HasPartitions; + /// Image contains sessions (optical media only) + public bool HasSessions; + /// Size of the image without headers public ulong ImageSize; + /// Sectors contained in the image public ulong Sectors; + /// Size of sectors contained in the image public uint SectorSize; + /// Media tags contained by the image public List ReadableMediaTags; + /// Sector tags contained by the image public List ReadableSectorTags; - public string ImageVersion; - public string ImageApplication; - public string ImageApplicationVersion; - public string ImageCreator; - public DateTime ImageCreationTime; - public DateTime ImageLastModificationTime; - public string ImageName; - public string ImageComments; + /// Image version + public string Version; + /// Application that created the image + public string Application; + /// Version of the application that created the image + public string ApplicationVersion; + /// Who (person) created the image? + public string Creator; + /// Image creation time + public DateTime CreationTime; + /// Image last modification time + public DateTime LastModificationTime; + /// Title of the media represented by the image + public string MediaTitle; + /// Image comments + public string Comments; + /// Manufacturer of the media represented by the image public string MediaManufacturer; + /// Model of the media represented by the image public string MediaModel; + /// Serial number of the media represented by the image public string MediaSerialNumber; + /// Barcode of the media represented by the image public string MediaBarcode; + /// Part number of the media represented by the image public string MediaPartNumber; + /// Media type represented by the image public MediaType MediaType; + /// Number in sequence for the media represented by the image public int MediaSequence; + /// Last media of the sequence the media represented by the image corresponds to public int LastMediaSequence; + /// Manufacturer of the drive used to read the media represented by the image public string DriveManufacturer; + /// Model of the drive used to read the media represented by the image public string DriveModel; + /// Serial number of the drive used to read the media represented by the image public string DriveSerialNumber; + /// Firmware revision of the drive used to read the media represented by the image public string DriveFirmwareRevision; + /// Type of the media represented by the image to use in XML sidecars public XmlMediaType XmlMediaType; // CHS geometry... + /// Cylinders of the media represented by the image public uint Cylinders; + /// Heads of the media represented by the image public uint Heads; + /// Sectors per track of the media represented by the image (for variable image, the smallest) public uint SectorsPerTrack; } } \ No newline at end of file diff --git a/DiscImageChef.DiscImages/ImagePlugin.cs b/DiscImageChef.DiscImages/ImagePlugin.cs index 01c82ad28..d10926492 100644 --- a/DiscImageChef.DiscImages/ImagePlugin.cs +++ b/DiscImageChef.DiscImages/ImagePlugin.cs @@ -60,6 +60,36 @@ namespace DiscImageChef.DiscImages /// Plugin UUID. public Guid PluginUuid; + // Image information functions + + /// + /// Gets the image format. + /// + /// The image format. + public abstract string ImageFormat { get; } + + // Partitioning functions + + /// + /// Gets an array partitions. Typically only useful for optical disc + /// images where each track and index means a different partition, as + /// reads can be relative to them. + /// + /// The partitions. + public abstract List Partitions { get; } + + /// + /// Gets the disc track extents (start, length). + /// + /// The track extents. + public abstract List Tracks { get; } + + /// + /// Gets the sessions (optical discs only). + /// + /// The sessions. + public abstract List Sessions { get; } + // Basic image handling functions /// @@ -76,32 +106,6 @@ namespace DiscImageChef.DiscImages /// Image filter. public abstract bool OpenImage(Filter imageFilter); - /// - /// Asks the disk image plugin if the image contains partitions - /// - /// true, if the image contains partitions, false otherwise. - public abstract bool ImageHasPartitions(); - - // Image size functions - - /// - /// Gets the size of the image, without headers. - /// - /// The image size. - public abstract ulong GetImageSize(); - - /// - /// Gets the number of sectors in the image. - /// - /// Sectors in image. - public abstract ulong GetSectors(); - - /// - /// Returns the size of the biggest sector, counting user data only. - /// - /// Biggest sector size (user data only). - public abstract uint GetSectorSize(); - // Image reading functions /// @@ -211,148 +215,6 @@ namespace DiscImageChef.DiscImages /// Track. public abstract byte[] ReadSectorsLong(ulong sectorAddress, uint length, uint track); - // Image information functions - - /// - /// Gets the image format. - /// - /// The image format. - public abstract string GetImageFormat(); - - /// - /// Gets the image version. - /// - /// The image version. - public abstract string GetImageVersion(); - - /// - /// Gets the application that created the image. - /// - /// The application that created the image. - public abstract string GetImageApplication(); - - /// - /// Gets the version of the application that created the image. - /// - /// The version of the application that created the image. - public abstract string GetImageApplicationVersion(); - - /// - /// Gets the image creator. - /// - /// Who created the image. - public abstract string GetImageCreator(); - - /// - /// Gets the image creation time. - /// - /// The image creation time. - public abstract DateTime GetImageCreationTime(); - - /// - /// Gets the image last modification time. - /// - /// The image last modification time. - public abstract DateTime GetImageLastModificationTime(); - - /// - /// Gets the name of the image. - /// - /// The image name. - public abstract string GetImageName(); - - /// - /// Gets the image comments. - /// - /// The image comments. - public abstract string GetImageComments(); - - // Functions to get information from disk represented by image - - /// - /// Gets the media manufacturer. - /// - /// The media manufacturer. - public abstract string GetMediaManufacturer(); - - /// - /// Gets the media model. - /// - /// The media model. - public abstract string GetMediaModel(); - - /// - /// Gets the media serial number. - /// - /// The media serial number. - public abstract string GetMediaSerialNumber(); - - /// - /// Gets the media (or product) barcode. - /// - /// The media barcode. - public abstract string GetMediaBarcode(); - - /// - /// Gets the media part number. - /// - /// The media part number. - public abstract string GetMediaPartNumber(); - - /// - /// Gets the type of the media. - /// - /// The media type. - public abstract MediaType GetMediaType(); - - /// - /// Gets the media sequence. - /// - /// The media sequence, starting at 1. - public abstract int GetMediaSequence(); - - /// - /// Gets the last media in the sequence. - /// - /// The last media in the sequence. - public abstract int GetLastDiskSequence(); - - // Functions to get information from drive used to create image - - /// - /// Gets the manufacturer of the drive used to create the image. - /// - /// The drive manufacturer. - public abstract string GetDriveManufacturer(); - - /// - /// Gets the model of the drive used to create the image. - /// - /// The drive model. - public abstract string GetDriveModel(); - - /// - /// Gets the serial number of the drive used to create the image. - /// - /// The drive serial number. - public abstract string GetDriveSerialNumber(); - - // Partitioning functions - - /// - /// Gets an array partitions. Typically only useful for optical disc - /// images where each track and index means a different partition, as - /// reads can be relative to them. - /// - /// The partitions. - public abstract List GetPartitions(); - - /// - /// Gets the disc track extents (start, length). - /// - /// The track extents. - public abstract List GetTracks(); - /// /// Gets the disc track extents for a specified session. /// @@ -367,12 +229,6 @@ namespace DiscImageChef.DiscImages /// Session. public abstract List GetSessionTracks(ushort session); - /// - /// Gets the sessions (optical discs only). - /// - /// The sessions. - public abstract List GetSessions(); - /// /// Verifies a sector. /// diff --git a/DiscImageChef.DiscImages/KryoFlux.cs b/DiscImageChef.DiscImages/KryoFlux.cs index bbfd868e7..ab045dd63 100644 --- a/DiscImageChef.DiscImages/KryoFlux.cs +++ b/DiscImageChef.DiscImages/KryoFlux.cs @@ -68,13 +68,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -199,8 +199,8 @@ namespace DiscImageChef.DiscImages trackFilter.Open(trackfile); if(!trackFilter.IsOpened()) throw new IOException("Could not open KryoFlux track file."); - ImageInfo.ImageCreationTime = DateTime.MaxValue; - ImageInfo.ImageLastModificationTime = DateTime.MinValue; + ImageInfo.CreationTime = DateTime.MaxValue; + ImageInfo.LastModificationTime = DateTime.MinValue; Stream trackStream = trackFilter.GetDataForkStream(); while(trackStream.Position < trackStream.Length) @@ -260,10 +260,10 @@ namespace DiscImageChef.DiscImages DateTimeStyles.AssumeLocal, out blockTime); break; case kfName: - ImageInfo.ImageApplication = kvp[1]; + ImageInfo.Application = kvp[1]; break; case kfVersion: - ImageInfo.ImageApplicationVersion = kvp[1]; + ImageInfo.ApplicationVersion = kvp[1]; break; } } @@ -274,10 +274,10 @@ namespace DiscImageChef.DiscImages blockTime.Hour, blockTime.Minute, blockTime.Second); DicConsole.DebugWriteLine("KryoFlux plugin", "Found timestamp: {0}", blockTimestamp); - if(blockTimestamp < ImageInfo.ImageCreationTime) - ImageInfo.ImageCreationTime = blockTimestamp; - if(blockTimestamp > ImageInfo.ImageLastModificationTime) - ImageInfo.ImageLastModificationTime = blockTimestamp; + if(blockTimestamp < ImageInfo.CreationTime) + ImageInfo.CreationTime = blockTimestamp; + if(blockTimestamp > ImageInfo.LastModificationTime) + ImageInfo.LastModificationTime = blockTimestamp; } break; @@ -310,26 +310,6 @@ namespace DiscImageChef.DiscImages throw new NotImplementedException("Flux decoding is not yet implemented."); } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -370,105 +350,7 @@ namespace DiscImageChef.DiscImages throw new NotImplementedException("Flux decoding is not yet implemented."); } - public override string GetImageFormat() - { - return "KryoFlux STREAM"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } + public override string ImageFormat => "KryoFlux STREAM"; public override bool? VerifySector(ulong sectorAddress) { @@ -506,15 +388,11 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { + public override List Partitions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetTracks() - { + public override List Tracks => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public override List GetSessionTracks(Session session) { @@ -526,10 +404,8 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { + public override List Sessions => throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } public override bool? VerifySector(ulong sectorAddress, uint track) { diff --git a/DiscImageChef.DiscImages/MaxiDisk.cs b/DiscImageChef.DiscImages/MaxiDisk.cs index 00efcaf26..c5c78ee67 100644 --- a/DiscImageChef.DiscImages/MaxiDisk.cs +++ b/DiscImageChef.DiscImages/MaxiDisk.cs @@ -53,11 +53,11 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "MAXI Disk", - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "MAXI Disk", + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -72,6 +72,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "MAXI Disk"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -160,8 +171,8 @@ namespace DiscImageChef.DiscImages hdkImageFilter = imageFilter; ImageInfo.ImageSize = (ulong)(stream.Length - 8); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); if(ImageInfo.Heads == 2 && ImageInfo.Cylinders == 80 && ImageInfo.SectorsPerTrack == 15 && ImageInfo.SectorSize == 512) ImageInfo.MediaType = MediaType.DOS_525_HD; @@ -255,26 +266,6 @@ namespace DiscImageChef.DiscImages return null; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -317,121 +308,11 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageFormat() - { - return "MAXI Disk"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -442,11 +323,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/NDIF.cs b/DiscImageChef.DiscImages/NDIF.cs index 436a077cb..4a221baeb 100644 --- a/DiscImageChef.DiscImages/NDIF.cs +++ b/DiscImageChef.DiscImages/NDIF.cs @@ -100,13 +100,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -121,6 +121,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Apple New Disk Image Format"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { if(!imageFilter.HasResourceFork() || imageFilter.GetResourceForkLength() == 0) return false; @@ -299,17 +310,17 @@ namespace DiscImageChef.DiscImages if(dev != null) pre = $"{version.PreReleaseVersion}"; - ImageInfo.ImageApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; - ImageInfo.ImageApplication = version.VersionString; - ImageInfo.ImageComments = version.VersionMessage; + ImageInfo.ApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; + ImageInfo.Application = version.VersionString; + ImageInfo.Comments = version.VersionMessage; - if(version.MajorVersion == 3) ImageInfo.ImageApplication = "ShrinkWrapâ„¢"; - else if(version.MajorVersion == 6) ImageInfo.ImageApplication = "DiskCopy"; + if(version.MajorVersion == 3) ImageInfo.Application = "ShrinkWrapâ„¢"; + else if(version.MajorVersion == 6) ImageInfo.Application = "DiskCopy"; } } - DicConsole.DebugWriteLine("NDIF plugin", "Image application = {0} version {1}", ImageInfo.ImageApplication, - ImageInfo.ImageApplicationVersion); + DicConsole.DebugWriteLine("NDIF plugin", "Image application = {0} version {1}", ImageInfo.Application, + ImageInfo.ApplicationVersion); sectorCache = new Dictionary(); chunkCache = new Dictionary(); @@ -317,14 +328,14 @@ namespace DiscImageChef.DiscImages imageStream = imageFilter.GetDataForkStream(); buffersize = header.maxSectorsPerChunk * SECTOR_SIZE; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = StringHandlers.PascalToString(header.name, Encoding.GetEncoding("macintosh")); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = StringHandlers.PascalToString(header.name, Encoding.GetEncoding("macintosh")); ImageInfo.SectorSize = SECTOR_SIZE; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.ImageSize = ImageInfo.Sectors * SECTOR_SIZE; - ImageInfo.ImageApplicationVersion = "6"; - ImageInfo.ImageApplication = "Apple DiskCopy"; + ImageInfo.ApplicationVersion = "6"; + ImageInfo.Application = "Apple DiskCopy"; switch(ImageInfo.MediaType) { @@ -469,76 +480,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Apple New Disk Image Format"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -594,66 +535,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -664,11 +545,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/NHDr0.cs b/DiscImageChef.DiscImages/NHDr0.cs index fff71c508..c0330f858 100644 --- a/DiscImageChef.DiscImages/NHDr0.cs +++ b/DiscImageChef.DiscImages/NHDr0.cs @@ -59,13 +59,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -80,6 +80,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "NHDr0 disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -135,92 +146,22 @@ namespace DiscImageChef.DiscImages ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = (ulong)(stream.Length - nhdhdr.dwHeadSize); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = (ulong)(nhdhdr.dwCylinder * nhdhdr.wHead * nhdhdr.wSect); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = (uint)nhdhdr.wSectLen; ImageInfo.Cylinders = (uint)nhdhdr.dwCylinder; ImageInfo.Heads = (uint)nhdhdr.wHead; ImageInfo.SectorsPerTrack = (uint)nhdhdr.wSect; - ImageInfo.ImageComments = StringHandlers.CToString(nhdhdr.szComment, shiftjis); + ImageInfo.Comments = StringHandlers.CToString(nhdhdr.szComment, shiftjis); nhdImageFilter = imageFilter; return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "NHDr0 disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -300,66 +241,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -370,11 +251,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/Nero.cs b/DiscImageChef.DiscImages/Nero.cs index 3b0b2abcc..56dd889c0 100644 --- a/DiscImageChef.DiscImages/Nero.cs +++ b/DiscImageChef.DiscImages/Nero.cs @@ -788,13 +788,13 @@ namespace DiscImageChef.DiscImages } } - ImageInfo.ImageHasPartitions = true; - ImageInfo.ImageHasSessions = true; - ImageInfo.ImageCreator = null; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); - ImageInfo.ImageComments = null; + ImageInfo.HasPartitions = true; + ImageInfo.HasSessions = true; + ImageInfo.Creator = null; + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.Comments = null; ImageInfo.MediaManufacturer = null; ImageInfo.MediaModel = null; ImageInfo.MediaSerialNumber = null; @@ -809,16 +809,16 @@ namespace DiscImageChef.DiscImages if(imageNewFormat) { ImageInfo.ImageSize = footerV2.FirstChunkOffset; - ImageInfo.ImageVersion = "Nero Burning ROM >= 5.5"; - ImageInfo.ImageApplication = "Nero Burning ROM"; - ImageInfo.ImageApplicationVersion = ">= 5.5"; + ImageInfo.Version = "Nero Burning ROM >= 5.5"; + ImageInfo.Application = "Nero Burning ROM"; + ImageInfo.ApplicationVersion = ">= 5.5"; } else { ImageInfo.ImageSize = footerV1.FirstChunkOffset; - ImageInfo.ImageVersion = "Nero Burning ROM <= 5.0"; - ImageInfo.ImageApplication = "Nero Burning ROM"; - ImageInfo.ImageApplicationVersion = "<= 5.0"; + ImageInfo.Version = "Nero Burning ROM <= 5.0"; + ImageInfo.Application = "Nero Burning ROM"; + ImageInfo.ApplicationVersion = "<= 5.0"; } if(neroSessions.Count == 0) neroSessions.Add(1, currenttrack); @@ -1039,27 +1039,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - // Even if they only have 1 track, there is a partition (track 1) - return true; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { switch(tag) @@ -1534,55 +1513,11 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Nero Burning ROM"; - } + public override string ImageFormat => "Nero Burning ROM"; - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } + public override List Partitions => imagePartitions; - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override List GetPartitions() - { - return imagePartitions; - } - - public override List GetTracks() - { - return imageTracks; - } + public override List Tracks => imageTracks; public override List GetSessionTracks(Session session) { @@ -1594,10 +1529,7 @@ namespace DiscImageChef.DiscImages return imageTracks.Where(track => track.TrackSession == session).ToList(); } - public override List GetSessions() - { - return imageSessions; - } + public override List Sessions => imageSessions; public override bool? VerifySector(ulong sectorAddress) { @@ -1747,66 +1679,6 @@ namespace DiscImageChef.DiscImages } } - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - struct NeroV1Footer { /// diff --git a/DiscImageChef.DiscImages/Parallels.cs b/DiscImageChef.DiscImages/Parallels.cs index d0038bdba..0f5de89c2 100644 --- a/DiscImageChef.DiscImages/Parallels.cs +++ b/DiscImageChef.DiscImages/Parallels.cs @@ -75,13 +75,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = "2", - ImageApplication = "Parallels", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = "2", + Application = "Parallels", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -96,6 +96,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Parallels"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -158,9 +169,9 @@ namespace DiscImageChef.DiscImages empty = (pHdr.flags & PARALLELS_EMPTY) == PARALLELS_EMPTY; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = pHdr.sectors; ImageInfo.SectorSize = 512; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -230,76 +241,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Parallels"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -355,66 +296,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -425,11 +306,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/PartClone.cs b/DiscImageChef.DiscImages/PartClone.cs index c2e7407c7..968a5c10e 100644 --- a/DiscImageChef.DiscImages/PartClone.cs +++ b/DiscImageChef.DiscImages/PartClone.cs @@ -72,12 +72,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "PartClone", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "PartClone", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -92,6 +92,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "PartClone"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -192,9 +203,9 @@ namespace DiscImageChef.DiscImages sectorCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = pHdr.totalBlocks; ImageInfo.SectorSize = pHdr.blockSize; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -265,76 +276,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "PartClone"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -390,66 +331,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -460,11 +341,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/Partimage.cs b/DiscImageChef.DiscImages/Partimage.cs index 208e17a87..64ed1ed3e 100644 --- a/DiscImageChef.DiscImages/Partimage.cs +++ b/DiscImageChef.DiscImages/Partimage.cs @@ -100,12 +100,12 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "Partimage", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "Partimage", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -120,6 +120,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Partimage"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -375,15 +386,15 @@ namespace DiscImageChef.DiscImages sectorCache = new Dictionary(); - ImageInfo.ImageCreationTime = dateCreate; - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = dateCreate; + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = localHeader.qwBlocksCount + 1; ImageInfo.SectorSize = (uint)localHeader.qwBlockSize; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; - ImageInfo.ImageVersion = StringHandlers.CToString(cMainHeader.szVersion); - ImageInfo.ImageComments = StringHandlers.CToString(cMainHeader.szPartDescription); + ImageInfo.Version = StringHandlers.CToString(cMainHeader.szVersion); + ImageInfo.Comments = StringHandlers.CToString(cMainHeader.szPartDescription); ImageInfo.ImageSize = (ulong)(stream.Length - (dataOff + Marshal.SizeOf(typeof(CMainTail)) + MAGIC_BEGIN_TAIL.Length)); imageStream = stream; @@ -465,76 +476,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Partimage"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -590,66 +531,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -660,11 +541,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/QCOW.cs b/DiscImageChef.DiscImages/QCOW.cs index 499c132b1..07a6d3157 100644 --- a/DiscImageChef.DiscImages/QCOW.cs +++ b/DiscImageChef.DiscImages/QCOW.cs @@ -85,13 +85,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = "1", - ImageApplication = "QEMU", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = "1", + Application = "QEMU", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -106,6 +106,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "QEMU Copy-On-Write"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -224,11 +235,11 @@ namespace DiscImageChef.DiscImages l2TableCache = new Dictionary(); clusterCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = qHdr.mtime > 0 + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = qHdr.mtime > 0 ? DateHandlers.UnixUnsignedToDateTime(qHdr.mtime) : imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = qHdr.size / 512; ImageInfo.SectorSize = 512; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -354,76 +365,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "QEMU Copy-On-Write"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -479,66 +420,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -549,11 +430,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/QCOW2.cs b/DiscImageChef.DiscImages/QCOW2.cs index 32977e988..f33162e92 100644 --- a/DiscImageChef.DiscImages/QCOW2.cs +++ b/DiscImageChef.DiscImages/QCOW2.cs @@ -100,13 +100,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = "QEMU", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = "QEMU", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -121,6 +121,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "QEMU Copy-On-Write"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -255,15 +266,15 @@ namespace DiscImageChef.DiscImages l2TableCache = new Dictionary(); clusterCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = qHdr.size / 512; ImageInfo.SectorSize = 512; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = qHdr.size; - ImageInfo.ImageVersion = $"{qHdr.version}"; + ImageInfo.Version = $"{qHdr.version}"; ImageInfo.Cylinders = (uint)(ImageInfo.Sectors / 16 / 63); ImageInfo.Heads = 16; @@ -385,76 +396,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "QEMU Copy-On-Write"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -510,66 +451,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -580,11 +461,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/QED.cs b/DiscImageChef.DiscImages/QED.cs index 30681350f..2a9648951 100644 --- a/DiscImageChef.DiscImages/QED.cs +++ b/DiscImageChef.DiscImages/QED.cs @@ -96,13 +96,13 @@ namespace DiscImageChef.DiscImages ImageInfo = new ImageInfo(); ImageInfo.ReadableSectorTags = new List(); ImageInfo.ReadableMediaTags = new List(); - ImageInfo.ImageHasPartitions = false; - ImageInfo.ImageHasSessions = false; - ImageInfo.ImageVersion = "1"; - ImageInfo.ImageApplication = "QEMU"; - ImageInfo.ImageApplicationVersion = null; - ImageInfo.ImageCreator = null; - ImageInfo.ImageComments = null; + ImageInfo.HasPartitions = false; + ImageInfo.HasSessions = false; + ImageInfo.Version = "1"; + ImageInfo.Application = "QEMU"; + ImageInfo.ApplicationVersion = null; + ImageInfo.Creator = null; + ImageInfo.Comments = null; ImageInfo.MediaManufacturer = null; ImageInfo.MediaModel = null; ImageInfo.MediaSerialNumber = null; @@ -116,6 +116,17 @@ namespace DiscImageChef.DiscImages ImageInfo.DriveFirmwareRevision = null; } + public override string ImageFormat => "QEMU Enhanced Disk"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -232,9 +243,9 @@ namespace DiscImageChef.DiscImages l2TableCache = new Dictionary(); clusterCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = qHdr.image_size / 512; ImageInfo.SectorSize = 512; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -331,76 +342,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "QEMU Enhanced Disk"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - static bool IsPowerOfTwo(uint x) { while((x & 1) == 0 && x > 1) x >>= 1; @@ -496,66 +437,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -566,11 +447,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/RayDIM.cs b/DiscImageChef.DiscImages/RayDIM.cs index 03cc52ce7..da489bd19 100644 --- a/DiscImageChef.DiscImages/RayDIM.cs +++ b/DiscImageChef.DiscImages/RayDIM.cs @@ -58,11 +58,11 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "Ray Arachelian's Disk IMage", - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Application = "Ray Arachelian's Disk IMage", + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -77,6 +77,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Ray Arachelian's Disk IMage"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -132,7 +143,7 @@ namespace DiscImageChef.DiscImages if(!sm.Success) return false; - ImageInfo.ImageApplicationVersion = $"{sm.Groups["major"].Value}.{sm.Groups["minor"].Value}"; + ImageInfo.ApplicationVersion = $"{sm.Groups["major"].Value}.{sm.Groups["minor"].Value}"; ImageInfo.Cylinders = (uint)(header.cylinders + 1); ImageInfo.Heads = (uint)(header.heads + 1); @@ -244,26 +255,6 @@ namespace DiscImageChef.DiscImages return null; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -305,121 +296,11 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageFormat() - { - return "Ray Arachelian's Disk IMage"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -430,11 +311,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/RsIde.cs b/DiscImageChef.DiscImages/RsIde.cs index d10a6f52b..7e37784b8 100644 --- a/DiscImageChef.DiscImages/RsIde.cs +++ b/DiscImageChef.DiscImages/RsIde.cs @@ -57,13 +57,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -78,6 +78,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "RS-IDE disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -110,11 +121,11 @@ namespace DiscImageChef.DiscImages ImageInfo.SectorSize = (uint)(hdr.flags.HasFlag(RsIdeFlags.HalfSectors) ? 256 : 512); ImageInfo.ImageSize = (ulong)(stream.Length - dataOff); ImageInfo.Sectors = ImageInfo.ImageSize / ImageInfo.SectorSize; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; - ImageInfo.ImageVersion = $"{hdr.revision >> 8}.{hdr.revision & 0x0F}"; + ImageInfo.Version = $"{hdr.revision >> 8}.{hdr.revision & 0x0F}"; if(!ArrayHelpers.ArrayIsNullOrEmpty(hdr.identify)) { @@ -148,76 +159,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "RS-IDE disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -302,66 +243,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -372,11 +253,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/SaveDskF.cs b/DiscImageChef.DiscImages/SaveDskF.cs index b34d172ac..8f51427b3 100644 --- a/DiscImageChef.DiscImages/SaveDskF.cs +++ b/DiscImageChef.DiscImages/SaveDskF.cs @@ -59,13 +59,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -80,6 +80,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "IBM SaveDskF"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -139,7 +150,7 @@ namespace DiscImageChef.DiscImages byte[] cmt = new byte[header.dataOffset - header.commentOffset]; stream.Seek(header.commentOffset, SeekOrigin.Begin); stream.Read(cmt, 0, cmt.Length); - if(cmt.Length > 1) ImageInfo.ImageComments = StringHandlers.CToString(cmt, Encoding.GetEncoding("ibm437")); + if(cmt.Length > 1) ImageInfo.Comments = StringHandlers.CToString(cmt, Encoding.GetEncoding("ibm437")); calculatedChk = 0; stream.Seek(0, SeekOrigin.Begin); @@ -155,10 +166,10 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("SaveDskF plugin", "Calculated checksum = 0x{0:X8}, {1}", calculatedChk, calculatedChk == header.checksum); - ImageInfo.ImageApplication = "SaveDskF"; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = imageFilter.GetFilename(); + ImageInfo.Application = "SaveDskF"; + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = imageFilter.GetFilename(); ImageInfo.ImageSize = (ulong)(stream.Length - header.dataOffset); ImageInfo.Sectors = (ulong)(header.sectorsPerTrack * header.heads * header.cylinders); ImageInfo.SectorSize = header.sectorSize; @@ -261,8 +272,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; DicConsole.VerboseWriteLine("SaveDskF image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("SaveDskF comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("SaveDskF comments: {0}", ImageInfo.Comments); // TODO: Support compressed images if(header.magic == SDF_MAGIC_COMPRESSED) @@ -318,26 +329,6 @@ namespace DiscImageChef.DiscImages return calculatedChk == header.checksum; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -359,106 +350,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "IBM SaveDskF"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -484,16 +375,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -504,11 +385,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/SuperCardPro.cs b/DiscImageChef.DiscImages/SuperCardPro.cs index 78b2b0ada..db0f7ebe7 100644 --- a/DiscImageChef.DiscImages/SuperCardPro.cs +++ b/DiscImageChef.DiscImages/SuperCardPro.cs @@ -116,7 +116,7 @@ namespace DiscImageChef.DiscImages // TODO: These variables have been made public so create-sidecar can access to this information until I define an API >4.0 public ScpHeader Header; Stream scpStream; - public Dictionary Tracks; + public Dictionary ScpTracks; public SuperCardPro() { @@ -126,13 +126,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -147,6 +147,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "SuperCardPro"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Header = new ScpHeader(); @@ -196,7 +207,7 @@ namespace DiscImageChef.DiscImages if(!scpSignature.SequenceEqual(Header.signature)) return false; - Tracks = new Dictionary(); + ScpTracks = new Dictionary(); for(byte t = Header.start; t <= Header.end; t++) { @@ -237,7 +248,7 @@ namespace DiscImageChef.DiscImages trk.Entries[r].dataOffset += Header.offsets[t]; } - Tracks.Add(t, trk); + ScpTracks.Add(t, trk); } if(Header.flags.HasFlag(ScpFlags.HasFooter)) @@ -296,9 +307,9 @@ namespace DiscImageChef.DiscImages ImageInfo.DriveManufacturer = ReadPStringUtf8(scpStream, footer.manufacturerOffset); ImageInfo.DriveModel = ReadPStringUtf8(scpStream, footer.modelOffset); ImageInfo.DriveSerialNumber = ReadPStringUtf8(scpStream, footer.serialOffset); - ImageInfo.ImageCreator = ReadPStringUtf8(scpStream, footer.creatorOffset); - ImageInfo.ImageApplication = ReadPStringUtf8(scpStream, footer.applicationOffset); - ImageInfo.ImageComments = ReadPStringUtf8(scpStream, footer.commentsOffset); + ImageInfo.Creator = ReadPStringUtf8(scpStream, footer.creatorOffset); + ImageInfo.Application = ReadPStringUtf8(scpStream, footer.applicationOffset); + ImageInfo.Comments = ReadPStringUtf8(scpStream, footer.commentsOffset); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.driveManufacturer = \"{0}\"", ImageInfo.DriveManufacturer); @@ -307,31 +318,31 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.driveSerialNumber = \"{0}\"", ImageInfo.DriveSerialNumber); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.imageCreator = \"{0}\"", - ImageInfo.ImageCreator); + ImageInfo.Creator); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.imageApplication = \"{0}\"", - ImageInfo.ImageApplication); + ImageInfo.Application); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.imageComments = \"{0}\"", - ImageInfo.ImageComments); + ImageInfo.Comments); - ImageInfo.ImageCreationTime = footer.creationTime != 0 + ImageInfo.CreationTime = footer.creationTime != 0 ? DateHandlers.UnixToDateTime(footer.creationTime) : imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = + ImageInfo.LastModificationTime = footer.modificationTime != 0 ? DateHandlers.UnixToDateTime(footer.modificationTime) : imageFilter.GetLastWriteTime(); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.imageCreationTime = {0}", - ImageInfo.ImageCreationTime); + ImageInfo.CreationTime); DicConsole.DebugWriteLine("SuperCardPro plugin", "ImageInfo.imageLastModificationTime = {0}", - ImageInfo.ImageLastModificationTime); + ImageInfo.LastModificationTime); - ImageInfo.ImageApplicationVersion = + ImageInfo.ApplicationVersion = $"{(footer.applicationVersion & 0xF0) >> 4}.{footer.applicationVersion & 0xF}"; ImageInfo.DriveFirmwareRevision = $"{(footer.firmwareVersion & 0xF0) >> 4}.{footer.firmwareVersion & 0xF}"; - ImageInfo.ImageVersion = $"{(footer.imageVersion & 0xF0) >> 4}.{footer.imageVersion & 0xF}"; + ImageInfo.Version = $"{(footer.imageVersion & 0xF0) >> 4}.{footer.imageVersion & 0xF}"; break; } @@ -341,11 +352,11 @@ namespace DiscImageChef.DiscImages } else { - ImageInfo.ImageApplication = "SuperCardPro"; - ImageInfo.ImageApplicationVersion = $"{(Header.version & 0xF0) >> 4}.{Header.version & 0xF}"; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageVersion = "1.5"; + ImageInfo.Application = "SuperCardPro"; + ImageInfo.ApplicationVersion = $"{(Header.version & 0xF0) >> 4}.{Header.version & 0xF}"; + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.Version = "1.5"; } throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -368,26 +379,6 @@ namespace DiscImageChef.DiscImages return Encoding.UTF8.GetString(str); } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -428,107 +419,6 @@ namespace DiscImageChef.DiscImages throw new NotImplementedException("Flux decoding is not yet implemented."); } - public override string GetImageFormat() - { - return "SuperCardPro"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - // TODO: Check if it exists. If so, read it. - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - public override bool? VerifySector(ulong sectorAddress) { throw new NotImplementedException("Flux decoding is not yet implemented."); @@ -580,16 +470,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -600,11 +480,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/T98.cs b/DiscImageChef.DiscImages/T98.cs index 96ea96190..16dd7badb 100644 --- a/DiscImageChef.DiscImages/T98.cs +++ b/DiscImageChef.DiscImages/T98.cs @@ -51,13 +51,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -72,6 +72,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "T98 disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -110,9 +121,9 @@ namespace DiscImageChef.DiscImages ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = (ulong)(stream.Length - 256); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = (ulong)(stream.Length / 256 - 1); ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = 256; @@ -125,76 +136,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "T98 disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -274,66 +215,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -344,11 +225,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/TeleDisk.cs b/DiscImageChef.DiscImages/TeleDisk.cs index e76a1e65d..d4a4b4518 100644 --- a/DiscImageChef.DiscImages/TeleDisk.cs +++ b/DiscImageChef.DiscImages/TeleDisk.cs @@ -129,11 +129,11 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageApplication = "Sydex TeleDisk", - ImageComments = null, - ImageCreator = null, + HasPartitions = false, + HasSessions = false, + Application = "Sydex TeleDisk", + Comments = null, + Creator = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -150,6 +150,17 @@ namespace DiscImageChef.DiscImages sectorsWhereCrcHasFailed = new List(); } + public override string ImageFormat => "Sydex TeleDisk"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { header = new TeleDiskHeader(); @@ -231,9 +242,9 @@ namespace DiscImageChef.DiscImages header.Sides = headerBytes[9]; header.Crc = BitConverter.ToUInt16(headerBytes, 10); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); - ImageInfo.ImageVersion = $"{(header.Version & 0xF0) >> 4}.{header.Version & 0x0F}"; - ImageInfo.ImageApplication = ImageInfo.ImageVersion; + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.Version = $"{(header.Version & 0xF0) >> 4}.{header.Version & 0x0F}"; + ImageInfo.Application = ImageInfo.Version; byte[] headerBytesForCrc = new byte[10]; Array.Copy(headerBytes, headerBytesForCrc, 10); @@ -292,7 +303,7 @@ namespace DiscImageChef.DiscImages stream.Seek(12, SeekOrigin.Begin); - ImageInfo.ImageCreationTime = DateTime.MinValue; + ImageInfo.CreationTime = DateTime.MinValue; if((header.Stepping & COMMENT_BLOCK_PRESENT) == COMMENT_BLOCK_PRESENT) { @@ -337,22 +348,22 @@ namespace DiscImageChef.DiscImages // Replace NULLs, used by TeleDisk as newline markers, with UNIX newline marker if(commentBlock[i] == 0x00) commentBlock[i] = 0x0A; - ImageInfo.ImageComments = Encoding.ASCII.GetString(commentBlock); + ImageInfo.Comments = Encoding.ASCII.GetString(commentBlock); DicConsole.DebugWriteLine("TeleDisk plugin", "Comment"); - DicConsole.DebugWriteLine("TeleDisk plugin", "{0}", ImageInfo.ImageComments); + DicConsole.DebugWriteLine("TeleDisk plugin", "{0}", ImageInfo.Comments); - ImageInfo.ImageCreationTime = new DateTime(commentHeader.Year + 1900, commentHeader.Month + 1, + ImageInfo.CreationTime = new DateTime(commentHeader.Year + 1900, commentHeader.Month + 1, commentHeader.Day, commentHeader.Hour, commentHeader.Minute, commentHeader.Second, DateTimeKind.Unspecified); } - if(ImageInfo.ImageCreationTime == DateTime.MinValue) - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); + if(ImageInfo.CreationTime == DateTime.MinValue) + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); - DicConsole.DebugWriteLine("TeleDisk plugin", "Image created on {0}", ImageInfo.ImageCreationTime); - DicConsole.DebugWriteLine("TeleDisk plugin", "Image modified on {0}", ImageInfo.ImageLastModificationTime); + DicConsole.DebugWriteLine("TeleDisk plugin", "Image created on {0}", ImageInfo.CreationTime); + DicConsole.DebugWriteLine("TeleDisk plugin", "Image modified on {0}", ImageInfo.LastModificationTime); DicConsole.DebugWriteLine("TeleDisk plugin", "Parsing image"); @@ -634,8 +645,8 @@ namespace DiscImageChef.DiscImages ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; DicConsole.VerboseWriteLine("TeleDisk image contains a disk of type {0}", ImageInfo.MediaType); - if(!string.IsNullOrEmpty(ImageInfo.ImageComments)) - DicConsole.VerboseWriteLine("TeleDisk comments: {0}", ImageInfo.ImageComments); + if(!string.IsNullOrEmpty(ImageInfo.Comments)) + DicConsole.VerboseWriteLine("TeleDisk comments: {0}", ImageInfo.Comments); inStream.Dispose(); stream.Dispose(); @@ -650,26 +661,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { (ushort cylinder, byte head, byte sector) = LbaToChs(sectorAddress); @@ -723,46 +714,6 @@ namespace DiscImageChef.DiscImages return ReadSectors(sectorAddress, length); } - public override string GetImageFormat() - { - return "Sydex TeleDisk"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override bool? VerifySector(ulong sectorAddress) { return !sectorsWhereCrcHasFailed.Contains(sectorAddress); @@ -1079,76 +1030,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -1159,11 +1040,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.DiscImages/UDIF.cs b/DiscImageChef.DiscImages/UDIF.cs index 96b770ef3..43df4af28 100644 --- a/DiscImageChef.DiscImages/UDIF.cs +++ b/DiscImageChef.DiscImages/UDIF.cs @@ -95,13 +95,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -116,6 +116,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Apple Universal Disk Image Format"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -315,17 +326,17 @@ namespace DiscImageChef.DiscImages if(dev != null) pre = $"{version.PreReleaseVersion}"; - ImageInfo.ImageApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; - ImageInfo.ImageApplication = version.VersionString; - ImageInfo.ImageComments = version.VersionMessage; + ImageInfo.ApplicationVersion = $"{major}{minor}{release}{dev}{pre}"; + ImageInfo.Application = version.VersionString; + ImageInfo.Comments = version.VersionMessage; - if(version.MajorVersion == 3) ImageInfo.ImageApplication = "ShrinkWrapâ„¢"; - else if(version.MajorVersion == 6) ImageInfo.ImageApplication = "DiskCopy"; + if(version.MajorVersion == 3) ImageInfo.Application = "ShrinkWrapâ„¢"; + else if(version.MajorVersion == 6) ImageInfo.Application = "DiskCopy"; } - else ImageInfo.ImageApplication = "DiskCopy"; + else ImageInfo.Application = "DiskCopy"; - DicConsole.DebugWriteLine("UDIF plugin", "Image application = {0} version {1}", ImageInfo.ImageApplication, - ImageInfo.ImageApplicationVersion); + DicConsole.DebugWriteLine("UDIF plugin", "Image application = {0} version {1}", ImageInfo.Application, + ImageInfo.ApplicationVersion); ImageInfo.Sectors = 0; if(!fakeBlockChunks) @@ -421,14 +432,14 @@ namespace DiscImageChef.DiscImages currentChunkCacheSize = 0; imageStream = stream; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.SectorSize = SECTOR_SIZE; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = ImageInfo.Sectors * SECTOR_SIZE; - ImageInfo.ImageVersion = $"{footer.version}"; + ImageInfo.Version = $"{footer.version}"; ImageInfo.Cylinders = (uint)(ImageInfo.Sectors / 16 / 63); ImageInfo.Heads = 16; @@ -573,76 +584,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Apple Universal Disk Image Format"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -698,66 +639,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -768,11 +649,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/UkvFdi.cs b/DiscImageChef.DiscImages/UkvFdi.cs index 6fca1377b..23e402c8f 100644 --- a/DiscImageChef.DiscImages/UkvFdi.cs +++ b/DiscImageChef.DiscImages/UkvFdi.cs @@ -56,13 +56,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -77,6 +77,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Spectrum floppy disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -122,9 +133,9 @@ namespace DiscImageChef.DiscImages stream.Seek(hdr.descOff, SeekOrigin.Begin); byte[] description = new byte[hdr.dataOff - hdr.descOff]; stream.Read(description, 0, description.Length); - ImageInfo.ImageComments = StringHandlers.CToString(description); + ImageInfo.Comments = StringHandlers.CToString(description); - DicConsole.DebugWriteLine("UkvFdi plugin", "hdr.description = \"{0}\"", ImageInfo.ImageComments); + DicConsole.DebugWriteLine("UkvFdi plugin", "hdr.description = \"{0}\"", ImageInfo.Comments); stream.Seek(0xE + hdr.addInfoLen, SeekOrigin.Begin); @@ -220,9 +231,9 @@ namespace DiscImageChef.DiscImages // TODO: What about double sided, half track pitch compact floppies? ImageInfo.MediaType = MediaType.CompactFloppy; ImageInfo.ImageSize = (ulong)stream.Length - hdr.dataOff; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.SectorsPerTrack = (uint)spt; ImageInfo.Sectors = ImageInfo.Cylinders * ImageInfo.Heads * ImageInfo.SectorsPerTrack; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; @@ -230,76 +241,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Spectrum floppy disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { (ushort cylinder, byte head, byte sector) = LbaToChs(sectorAddress); @@ -398,66 +339,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -468,11 +349,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/VDI.cs b/DiscImageChef.DiscImages/VDI.cs index 14cbec942..d72a51980 100644 --- a/DiscImageChef.DiscImages/VDI.cs +++ b/DiscImageChef.DiscImages/VDI.cs @@ -69,13 +69,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -90,6 +90,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "VDI"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -156,34 +167,34 @@ namespace DiscImageChef.DiscImages sectorCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = vHdr.size / vHdr.sectorSize; ImageInfo.ImageSize = vHdr.size; ImageInfo.SectorSize = vHdr.sectorSize; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; - ImageInfo.ImageComments = vHdr.description; - ImageInfo.ImageVersion = $"{vHdr.majorVersion}.{vHdr.minorVersion}"; + ImageInfo.Comments = vHdr.description; + ImageInfo.Version = $"{vHdr.majorVersion}.{vHdr.minorVersion}"; switch(vHdr.creator) { case SUN_VDI: - ImageInfo.ImageApplication = "Sun VirtualBox"; + ImageInfo.Application = "Sun VirtualBox"; break; case SUN_OLD_VDI: - ImageInfo.ImageApplication = "Sun xVM"; + ImageInfo.Application = "Sun xVM"; break; case ORACLE_VDI: - ImageInfo.ImageApplication = "Oracle VirtualBox"; + ImageInfo.Application = "Oracle VirtualBox"; break; case QEMUVDI: - ImageInfo.ImageApplication = "QEMU"; + ImageInfo.Application = "QEMU"; break; case INNOTEK_VDI: case INNOTEK_OLD_VDI: - ImageInfo.ImageApplication = "innotek VirtualBox"; + ImageInfo.Application = "innotek VirtualBox"; break; } @@ -248,76 +259,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "VDI"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -373,66 +314,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -443,11 +324,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/VHD.cs b/DiscImageChef.DiscImages/VHD.cs index 8829288e2..386ba6399 100644 --- a/DiscImageChef.DiscImages/VHD.cs +++ b/DiscImageChef.DiscImages/VHD.cs @@ -202,13 +202,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -223,6 +223,29 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat + { + get + { + switch(thisFooter.DiskType) + { + case TYPE_FIXED: return "Virtual PC fixed size disk image"; + case TYPE_DYNAMIC: return "Virtual PC dynamic size disk image"; + case TYPE_DIFFERENCING: return "Virtual PC differencing disk image"; + default: return "Virtual PC disk image"; + } + } + } + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream imageStream = imageFilter.GetDataForkStream(); @@ -364,7 +387,7 @@ namespace DiscImageChef.DiscImages DicConsole.DebugWriteLine("VirtualPC plugin", "footer.savedState = 0x{0:X2}", thisFooter.SavedState); DicConsole.DebugWriteLine("VirtualPC plugin", "footer.reserved's SHA1 = 0x{0}", sha1Ctx.End()); - if(thisFooter.Version == VERSION1) ImageInfo.ImageVersion = "1.0"; + if(thisFooter.Version == VERSION1) ImageInfo.Version = "1.0"; else throw new ImageNotSupportedException($"(VirtualPC plugin): Unknown image type {thisFooter.DiskType} found. Please submit a bug with an example image."); @@ -373,28 +396,28 @@ namespace DiscImageChef.DiscImages { case CREATOR_QEMU: { - ImageInfo.ImageApplication = "QEMU"; + ImageInfo.Application = "QEMU"; // QEMU always set same version - ImageInfo.ImageApplicationVersion = "Unknown"; + ImageInfo.ApplicationVersion = "Unknown"; break; } case CREATOR_VIRTUAL_BOX: { - ImageInfo.ImageApplicationVersion = + ImageInfo.ApplicationVersion = $"{(thisFooter.CreatorVersion & 0xFFFF0000) >> 16}.{thisFooter.CreatorVersion & 0x0000FFFF:D2}"; switch(thisFooter.CreatorHostOs) { case CREATOR_MACINTOSH: case CREATOR_MACINTOSH_OLD: - ImageInfo.ImageApplication = "VirtualBox for Mac"; + ImageInfo.Application = "VirtualBox for Mac"; break; case CREATOR_WINDOWS: // VirtualBox uses Windows creator for any other OS - ImageInfo.ImageApplication = "VirtualBox"; + ImageInfo.Application = "VirtualBox"; break; default: - ImageInfo.ImageApplication = + ImageInfo.Application = $"VirtualBox for unknown OS \"{Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(thisFooter.CreatorHostOs))}\""; break; } @@ -403,14 +426,14 @@ namespace DiscImageChef.DiscImages } case CREATOR_VIRTUAL_SERVER: { - ImageInfo.ImageApplication = "Microsoft Virtual Server"; + ImageInfo.Application = "Microsoft Virtual Server"; switch(thisFooter.CreatorVersion) { case VERSION_VIRTUAL_SERVER2004: - ImageInfo.ImageApplicationVersion = "2004"; + ImageInfo.ApplicationVersion = "2004"; break; default: - ImageInfo.ImageApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; + ImageInfo.ApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; break; } @@ -425,11 +448,11 @@ namespace DiscImageChef.DiscImages switch(thisFooter.CreatorVersion) { case VERSION_VIRTUAL_PC_MAC: - ImageInfo.ImageApplication = "Connectix Virtual PC"; - ImageInfo.ImageApplicationVersion = "5, 6 or 7"; + ImageInfo.Application = "Connectix Virtual PC"; + ImageInfo.ApplicationVersion = "5, 6 or 7"; break; default: - ImageInfo.ImageApplicationVersion = + ImageInfo.ApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; break; } @@ -439,28 +462,28 @@ namespace DiscImageChef.DiscImages switch(thisFooter.CreatorVersion) { case VERSION_VIRTUAL_PC_MAC: - ImageInfo.ImageApplication = "Connectix Virtual PC"; - ImageInfo.ImageApplicationVersion = "5, 6 or 7"; + ImageInfo.Application = "Connectix Virtual PC"; + ImageInfo.ApplicationVersion = "5, 6 or 7"; break; case VERSION_VIRTUAL_PC2004: - ImageInfo.ImageApplication = "Microsoft Virtual PC"; - ImageInfo.ImageApplicationVersion = "2004"; + ImageInfo.Application = "Microsoft Virtual PC"; + ImageInfo.ApplicationVersion = "2004"; break; case VERSION_VIRTUAL_PC2007: - ImageInfo.ImageApplication = "Microsoft Virtual PC"; - ImageInfo.ImageApplicationVersion = "2007"; + ImageInfo.Application = "Microsoft Virtual PC"; + ImageInfo.ApplicationVersion = "2007"; break; default: - ImageInfo.ImageApplicationVersion = + ImageInfo.ApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; break; } break; default: - ImageInfo.ImageApplication = + ImageInfo.Application = $"Virtual PC for unknown OS \"{Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(thisFooter.CreatorHostOs))}\""; - ImageInfo.ImageApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; + ImageInfo.ApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; break; } @@ -468,9 +491,9 @@ namespace DiscImageChef.DiscImages } default: { - ImageInfo.ImageApplication = + ImageInfo.Application = $"Unknown application \"{Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(thisFooter.CreatorHostOs))}\""; - ImageInfo.ImageApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; + ImageInfo.ApplicationVersion = $"Unknown version 0x{thisFooter.CreatorVersion:X8}"; break; } } @@ -480,9 +503,9 @@ namespace DiscImageChef.DiscImages ImageInfo.Sectors = thisFooter.CurrentSize / 512; ImageInfo.SectorSize = 512; - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = thisDateTime; - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = thisDateTime; + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Cylinders = (thisFooter.DiskGeometry & 0xFFFF0000) >> 16; ImageInfo.Heads = (thisFooter.DiskGeometry & 0xFF00) >> 8; @@ -772,7 +795,7 @@ namespace DiscImageChef.DiscImages // the parent never stored itself. So the only real way to know that images are related is // because the parent IS found and SAME SIZE. Ugly... // More funny even, tested parent images show an empty host OS, and child images a correct one. - if(parentImage.GetSectors() != GetSectors()) + if(parentImage.ImageInfo.Sectors != ImageInfo.Sectors) throw new ImageNotSupportedException("(VirtualPC plugin): Parent image is of different size"); } @@ -794,77 +817,6 @@ namespace DiscImageChef.DiscImages } } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - switch(thisFooter.DiskType) - { - case TYPE_FIXED: return "Virtual PC fixed size disk image"; - case TYPE_DYNAMIC: return "Virtual PC dynamic size disk image"; - case TYPE_DIFFERENCING: return "Virtual PC differencing disk image"; - default: return "Virtual PC disk image"; - } - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return MediaType.GENERIC_HDD; - } - public override byte[] ReadSector(ulong sectorAddress) { switch(thisFooter.DiskType) @@ -1029,11 +981,6 @@ namespace DiscImageChef.DiscImages return ~checksum; } - public override string GetImageComments() - { - return null; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -1089,66 +1036,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -1159,11 +1046,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/VHDX.cs b/DiscImageChef.DiscImages/VHDX.cs index dfe64487a..8c39f0891 100644 --- a/DiscImageChef.DiscImages/VHDX.cs +++ b/DiscImageChef.DiscImages/VHDX.cs @@ -136,13 +136,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -157,6 +157,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "VHDX"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -192,7 +203,7 @@ namespace DiscImageChef.DiscImages if(vhdxId.signature != VHDX_SIGNATURE) return false; - ImageInfo.ImageApplication = Encoding.Unicode.GetString(vhdxId.creator); + ImageInfo.Application = Encoding.Unicode.GetString(vhdxId.creator); stream.Seek(64 * 1024, SeekOrigin.Begin); byte[] vHdrB = new byte[Marshal.SizeOf(vHdr)]; @@ -530,9 +541,9 @@ namespace DiscImageChef.DiscImages sectorCache = new Dictionary(); blockCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.SectorSize = logicalSectorSize; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; @@ -560,71 +571,6 @@ namespace DiscImageChef.DiscImages return (sectorBitmap[index] & val) == val; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "VHDX"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return MediaType.GENERIC_HDD; - } - public override byte[] ReadSector(ulong sectorAddress) { if(sectorAddress > ImageInfo.Sectors - 1) @@ -706,11 +652,6 @@ namespace DiscImageChef.DiscImages return ~checksum; } - public override string GetImageComments() - { - return null; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -766,66 +707,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -836,11 +717,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/VMware.cs b/DiscImageChef.DiscImages/VMware.cs index 72ffbe67e..26c7e6670 100644 --- a/DiscImageChef.DiscImages/VMware.cs +++ b/DiscImageChef.DiscImages/VMware.cs @@ -77,8 +77,7 @@ namespace DiscImageChef.DiscImages const string REGEX_EXTENT = @"^\s*(?(RW|RDONLY|NOACCESS))\s+(?\d+)\s+(?(FLAT|SPARSE|ZERO|VMFS|VMFSSPARSE|VMFSRDM|VMFSRAW))\s+\""(?.+)\""(\s*(?\d+))?$" ; - const string REGEX_DDB_TYPE = - @"^\s*ddb\.adapterType\s*=\s*\""(?ide|buslogic|lsilogic|legacyESX)\""$"; + const string REGEX_DDB_TYPE = @"^\s*ddb\.adapterType\s*=\s*\""(?ide|buslogic|lsilogic|legacyESX)\""$"; const string REGEX_DDB_SECTORS = @"^\s*ddb\.geometry\.sectors\s*=\s*\""(?\d+)\""$"; const string REGEX_DDB_HEADS = @"^\s*ddb\.geometry\.heads\s*=\s*\""(?\d+)\""$"; const string REGEX_DDB_CYLINDERS = @"^\s*ddb\.geometry\.cylinders\s*=\s*\""(?\d+)\""$"; @@ -131,13 +130,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = "VMware", - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = "VMware", + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -152,6 +151,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "VMware"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -554,8 +564,8 @@ namespace DiscImageChef.DiscImages gdEntries = vmCHdr.numGDEntries; gdOffset = vmCHdr.gdOffset; gtEsPerGt = grains / gdEntries; - ImageInfo.ImageName = StringHandlers.CToString(vmCHdr.name); - ImageInfo.ImageComments = StringHandlers.CToString(vmCHdr.description); + ImageInfo.MediaTitle = StringHandlers.CToString(vmCHdr.name); + ImageInfo.Comments = StringHandlers.CToString(vmCHdr.description); version = vmCHdr.version; } @@ -609,15 +619,15 @@ namespace DiscImageChef.DiscImages sectorCache = new Dictionary(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.SectorSize = SECTOR_SIZE; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = ImageInfo.Sectors * SECTOR_SIZE; // VMDK version 1 started on VMware 4, so there is a previous version, "COWD" - ImageInfo.ImageVersion = cowD ? $"{version}" : $"{version + 3}"; + ImageInfo.Version = cowD ? $"{version}" : $"{version + 3}"; if(cowD) { @@ -742,76 +752,6 @@ namespace DiscImageChef.DiscImages return ms.ToArray(); } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "VMware"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSectorTag(ulong sectorAddress, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -867,66 +807,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -937,11 +817,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/Virtual98.cs b/DiscImageChef.DiscImages/Virtual98.cs index b27d32178..f5e649899 100644 --- a/DiscImageChef.DiscImages/Virtual98.cs +++ b/DiscImageChef.DiscImages/Virtual98.cs @@ -58,13 +58,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -79,6 +79,17 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Virtual98 disk image"; + + public override List Partitions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Tracks => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + public override List Sessions => + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + public override bool IdentifyImage(Filter imageFilter) { Stream stream = imageFilter.GetDataForkStream(); @@ -135,92 +146,22 @@ namespace DiscImageChef.DiscImages ImageInfo.MediaType = MediaType.GENERIC_HDD; ImageInfo.ImageSize = (ulong)(stream.Length - 0xDC); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); ImageInfo.Sectors = v98Hdr.totals; ImageInfo.XmlMediaType = XmlMediaType.BlockMedia; ImageInfo.SectorSize = v98Hdr.sectorsize; ImageInfo.Cylinders = v98Hdr.cylinders; ImageInfo.Heads = v98Hdr.surfaces; ImageInfo.SectorsPerTrack = v98Hdr.sectors; - ImageInfo.ImageComments = StringHandlers.CToString(v98Hdr.comment, shiftjis); + ImageInfo.Comments = StringHandlers.CToString(v98Hdr.comment, shiftjis); nhdImageFilter = imageFilter; return true; } - public override bool ImageHasPartitions() - { - return false; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - - public override string GetImageFormat() - { - return "Virtual98 disk image"; - } - - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -307,66 +248,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetMediaManufacturer() - { - return null; - } - - public override string GetMediaModel() - { - return null; - } - - public override string GetMediaSerialNumber() - { - return null; - } - - public override string GetMediaBarcode() - { - return null; - } - - public override string GetMediaPartNumber() - { - return null; - } - - public override int GetMediaSequence() - { - return 0; - } - - public override int GetLastDiskSequence() - { - return 0; - } - - public override string GetDriveManufacturer() - { - return null; - } - - public override string GetDriveModel() - { - return null; - } - - public override string GetDriveSerialNumber() - { - return null; - } - - public override List GetPartitions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - - public override List GetTracks() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override List GetSessionTracks(Session session) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); @@ -377,11 +258,6 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override List GetSessions() - { - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - } - public override bool? VerifySector(ulong sectorAddress) { return null; diff --git a/DiscImageChef.DiscImages/ZZZRawImage.cs b/DiscImageChef.DiscImages/ZZZRawImage.cs index c93d4fb63..7f2a6d828 100644 --- a/DiscImageChef.DiscImages/ZZZRawImage.cs +++ b/DiscImageChef.DiscImages/ZZZRawImage.cs @@ -54,13 +54,13 @@ namespace DiscImageChef.DiscImages { ReadableSectorTags = new List(), ReadableMediaTags = new List(), - ImageHasPartitions = false, - ImageHasSessions = false, - ImageVersion = null, - ImageApplication = null, - ImageApplicationVersion = null, - ImageCreator = null, - ImageComments = null, + HasPartitions = false, + HasSessions = false, + Version = null, + Application = null, + ApplicationVersion = null, + Creator = null, + Comments = null, MediaManufacturer = null, MediaModel = null, MediaSerialNumber = null, @@ -75,6 +75,76 @@ namespace DiscImageChef.DiscImages }; } + public override string ImageFormat => "Raw disk image (sector by sector copy)"; + + public override List Tracks + { + get + { + if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + Track trk = new Track + { + TrackBytesPerSector = (int)ImageInfo.SectorSize, + TrackEndSector = ImageInfo.Sectors - 1, + TrackFile = rawImageFilter.GetFilename(), + TrackFileOffset = 0, + TrackFileType = "BINARY", + TrackRawBytesPerSector = (int)ImageInfo.SectorSize, + TrackSequence = 1, + TrackStartSector = 0, + TrackSubchannelType = TrackSubchannelType.None, + TrackType = TrackType.Data, + TrackSession = 1 + }; + List lst = new List {trk}; + return lst; + } + } + + public override List Sessions + { + get + { + if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + Session sess = new Session + { + EndSector = ImageInfo.Sectors - 1, + EndTrack = 1, + SessionSequence = 1, + StartSector = 0, + StartTrack = 1 + }; + List lst = new List {sess}; + return lst; + } + } + + public override List Partitions + { + get + { + if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) + throw new FeatureUnsupportedImageException("Feature not supported by image format"); + + List parts = new List(); + Partition part = new Partition + { + Start = 0, + Length = ImageInfo.Sectors, + Offset = 0, + Sequence = 0, + Type = "MODE1/2048", + Size = ImageInfo.Sectors * ImageInfo.SectorSize + }; + parts.Add(part); + return parts; + } + } + public override bool IdentifyImage(Filter imageFilter) { // Check if file is not multiple of 512 @@ -196,9 +266,9 @@ namespace DiscImageChef.DiscImages } ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength(); - ImageInfo.ImageCreationTime = imageFilter.GetCreationTime(); - ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime(); - ImageInfo.ImageName = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); + ImageInfo.CreationTime = imageFilter.GetCreationTime(); + ImageInfo.LastModificationTime = imageFilter.GetLastWriteTime(); + ImageInfo.MediaTitle = Path.GetFileNameWithoutExtension(imageFilter.GetFilename()); differentTrackZeroSize = false; rawImageFilter = imageFilter; @@ -322,8 +392,8 @@ namespace DiscImageChef.DiscImages if(ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { - ImageInfo.ImageHasSessions = true; - ImageInfo.ImageHasPartitions = true; + ImageInfo.HasSessions = true; + ImageInfo.HasPartitions = true; } DicConsole.VerboseWriteLine("Raw disk image contains a disk of type {0}", ImageInfo.MediaType); @@ -651,26 +721,6 @@ namespace DiscImageChef.DiscImages return true; } - public override bool ImageHasPartitions() - { - return ImageInfo.ImageHasPartitions; - } - - public override ulong GetImageSize() - { - return ImageInfo.ImageSize; - } - - public override ulong GetSectors() - { - return ImageInfo.Sectors; - } - - public override uint GetSectorSize() - { - return ImageInfo.SectorSize; - } - public override byte[] ReadSector(ulong sectorAddress) { return ReadSectors(sectorAddress, 1); @@ -697,31 +747,6 @@ namespace DiscImageChef.DiscImages return buffer; } - public override string GetImageFormat() - { - return "Raw disk image (sector by sector copy)"; - } - - public override DateTime GetImageCreationTime() - { - return ImageInfo.ImageCreationTime; - } - - public override DateTime GetImageLastModificationTime() - { - return ImageInfo.ImageLastModificationTime; - } - - public override string GetImageName() - { - return ImageInfo.ImageName; - } - - public override MediaType GetMediaType() - { - return ImageInfo.MediaType; - } - public override bool? VerifySector(ulong sectorAddress) { return null; @@ -759,29 +784,6 @@ namespace DiscImageChef.DiscImages return null; } - public override List GetTracks() - { - if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - - Track trk = new Track - { - TrackBytesPerSector = (int)ImageInfo.SectorSize, - TrackEndSector = ImageInfo.Sectors - 1, - TrackFile = rawImageFilter.GetFilename(), - TrackFileOffset = 0, - TrackFileType = "BINARY", - TrackRawBytesPerSector = (int)ImageInfo.SectorSize, - TrackSequence = 1, - TrackStartSector = 0, - TrackSubchannelType = TrackSubchannelType.None, - TrackType = TrackType.Data, - TrackSession = 1 - }; - List lst = new List {trk}; - return lst; - } - public override List GetSessionTracks(Session session) { if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) @@ -836,23 +838,6 @@ namespace DiscImageChef.DiscImages return lst; } - public override List GetSessions() - { - if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - - Session sess = new Session - { - EndSector = ImageInfo.Sectors - 1, - EndTrack = 1, - SessionSequence = 1, - StartSector = 0, - StartTrack = 1 - }; - List lst = new List {sess}; - return lst; - } - public override byte[] ReadSector(ulong sectorAddress, uint track) { if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) @@ -1026,105 +1011,11 @@ namespace DiscImageChef.DiscImages throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageVersion() - { - return ImageInfo.ImageVersion; - } - - public override string GetImageApplication() - { - return ImageInfo.ImageApplication; - } - - public override string GetImageApplicationVersion() - { - return ImageInfo.ImageApplicationVersion; - } - public override byte[] ReadDiskTag(MediaTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); } - public override string GetImageCreator() - { - return ImageInfo.ImageCreator; - } - - public override string GetImageComments() - { - return ImageInfo.ImageComments; - } - - public override string GetMediaManufacturer() - { - return ImageInfo.MediaManufacturer; - } - - public override string GetMediaModel() - { - return ImageInfo.MediaModel; - } - - public override string GetMediaSerialNumber() - { - return ImageInfo.MediaSerialNumber; - } - - public override string GetMediaBarcode() - { - return ImageInfo.MediaBarcode; - } - - public override string GetMediaPartNumber() - { - return ImageInfo.MediaPartNumber; - } - - public override int GetMediaSequence() - { - return ImageInfo.MediaSequence; - } - - public override int GetLastDiskSequence() - { - return ImageInfo.LastMediaSequence; - } - - public override string GetDriveManufacturer() - { - return ImageInfo.DriveManufacturer; - } - - public override string GetDriveModel() - { - return ImageInfo.DriveModel; - } - - public override string GetDriveSerialNumber() - { - return ImageInfo.DriveSerialNumber; - } - - public override List GetPartitions() - { - if(ImageInfo.XmlMediaType != XmlMediaType.OpticalDisc) - throw new FeatureUnsupportedImageException("Feature not supported by image format"); - - List parts = new List(); - Partition part = new Partition - { - Start = 0, - Length = ImageInfo.Sectors, - Offset = 0, - Sequence = 0, - Type = "MODE1/2048", - Size = ImageInfo.Sectors * ImageInfo.SectorSize - }; - parts.Add(part); - return parts; - } - public override byte[] ReadSectorTag(ulong sectorAddress, uint track, SectorTagType tag) { throw new FeatureUnsupportedImageException("Feature not supported by image format"); diff --git a/DiscImageChef.Filesystems/Acorn.cs b/DiscImageChef.Filesystems/Acorn.cs index 585562ec3..4dfc28c70 100644 --- a/DiscImageChef.Filesystems/Acorn.cs +++ b/DiscImageChef.Filesystems/Acorn.cs @@ -258,7 +258,7 @@ namespace DiscImageChef.Filesystems bytes *= 0x100000000; bytes += drSb.disc_size; - return bytes <= imagePlugin.GetSectors() * imagePlugin.GetSectorSize(); + return bytes <= imagePlugin.ImageInfo.Sectors * imagePlugin.ImageInfo.SectorSize; } // TODO: Find root directory on volumes with DiscRecord @@ -476,7 +476,7 @@ namespace DiscImageChef.Filesystems zones *= 0x100000000; zones += drSb.nzones; - if(bytes > imagePlugin.GetSectors() * imagePlugin.GetSectorSize()) return; + if(bytes > imagePlugin.ImageInfo.Sectors * imagePlugin.ImageInfo.SectorSize) return; XmlFsType = new FileSystemType(); diff --git a/DiscImageChef.Filesystems/AppleHFS.cs b/DiscImageChef.Filesystems/AppleHFS.cs index 1e1685474..d7dcdcdc7 100644 --- a/DiscImageChef.Filesystems/AppleHFS.cs +++ b/DiscImageChef.Filesystems/AppleHFS.cs @@ -85,8 +85,8 @@ namespace DiscImageChef.Filesystems byte[] mdbSector; ushort drSigWord; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448 || - imagePlugin.GetSectorSize() == 2048) + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448 || + imagePlugin.ImageInfo.SectorSize == 2048) { mdbSector = imagePlugin.ReadSectors(partition.Start, 2); @@ -128,8 +128,8 @@ namespace DiscImageChef.Filesystems bool APMFromHDDOnCD = false; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448 || - imagePlugin.GetSectorSize() == 2048) + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448 || + imagePlugin.ImageInfo.SectorSize == 2048) { byte[] tmpSector = imagePlugin.ReadSectors(partition.Start, 2); diff --git a/DiscImageChef.Filesystems/AppleHFSPlus.cs b/DiscImageChef.Filesystems/AppleHFSPlus.cs index dcd2d183c..27b0270f7 100644 --- a/DiscImageChef.Filesystems/AppleHFSPlus.cs +++ b/DiscImageChef.Filesystems/AppleHFSPlus.cs @@ -104,7 +104,7 @@ namespace DiscImageChef.Filesystems ushort drAlBlSt = BigEndianBitConverter.ToUInt16(vhSector, 0x41C); - hfspOffset = (ulong)((drAlBlSt * 512 + xdrStABNt * drAlBlkSiz) / imagePlugin.GetSectorSize()); + hfspOffset = (ulong)((drAlBlSt * 512 + xdrStABNt * drAlBlkSiz) / imagePlugin.ImageInfo.SectorSize); } else hfspOffset = 0; } @@ -145,7 +145,7 @@ namespace DiscImageChef.Filesystems ushort drAlBlSt = BigEndianBitConverter.ToUInt16(vhSector, 0x41C); - hfspOffset = (ulong)((drAlBlSt * 512 + xdrStABNt * drAlBlkSiz) / imagePlugin.GetSectorSize()); + hfspOffset = (ulong)((drAlBlSt * 512 + xdrStABNt * drAlBlkSiz) / imagePlugin.ImageInfo.SectorSize); wrapped = true; } else diff --git a/DiscImageChef.Filesystems/AppleMFS/File.cs b/DiscImageChef.Filesystems/AppleMFS/File.cs index 1905f3d1f..069c4e02c 100644 --- a/DiscImageChef.Filesystems/AppleMFS/File.cs +++ b/DiscImageChef.Filesystems/AppleMFS/File.cs @@ -157,7 +157,7 @@ namespace DiscImageChef.Filesystems.AppleMFS { stat = new FileEntryInfo { - BlockSize = device.GetSectorSize(), + BlockSize = device.ImageInfo.SectorSize, DeviceNo = 0, GID = 0, Inode = 0, diff --git a/DiscImageChef.Filesystems/AtheOS.cs b/DiscImageChef.Filesystems/AtheOS.cs index 5be52af40..18b033b14 100644 --- a/DiscImageChef.Filesystems/AtheOS.cs +++ b/DiscImageChef.Filesystems/AtheOS.cs @@ -73,12 +73,12 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - ulong sector = AFS_BOOTBLOCK_SIZE / imagePlugin.GetSectorSize(); - uint offset = AFS_BOOTBLOCK_SIZE % imagePlugin.GetSectorSize(); + ulong sector = AFS_BOOTBLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; + uint offset = AFS_BOOTBLOCK_SIZE % imagePlugin.ImageInfo.SectorSize; uint run = 1; - if(imagePlugin.GetSectorSize() < AFS_SUPERBLOCK_SIZE) - run = AFS_SUPERBLOCK_SIZE / imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize < AFS_SUPERBLOCK_SIZE) + run = AFS_SUPERBLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; if(sector + partition.Start >= partition.End) return false; @@ -99,12 +99,12 @@ namespace DiscImageChef.Filesystems StringBuilder sb = new StringBuilder(); - ulong sector = AFS_BOOTBLOCK_SIZE / imagePlugin.GetSectorSize(); - uint offset = AFS_BOOTBLOCK_SIZE % imagePlugin.GetSectorSize(); + ulong sector = AFS_BOOTBLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; + uint offset = AFS_BOOTBLOCK_SIZE % imagePlugin.ImageInfo.SectorSize; uint run = 1; - if(imagePlugin.GetSectorSize() < AFS_SUPERBLOCK_SIZE) - run = AFS_SUPERBLOCK_SIZE / imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize < AFS_SUPERBLOCK_SIZE) + run = AFS_SUPERBLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; byte[] tmp = imagePlugin.ReadSectors(sector + partition.Start, run); byte[] sbSector = new byte[AFS_SUPERBLOCK_SIZE]; diff --git a/DiscImageChef.Filesystems/BTRFS.cs b/DiscImageChef.Filesystems/BTRFS.cs index be8882b7f..5192d3ac9 100644 --- a/DiscImageChef.Filesystems/BTRFS.cs +++ b/DiscImageChef.Filesystems/BTRFS.cs @@ -73,8 +73,8 @@ namespace DiscImageChef.Filesystems { if(partition.Start >= partition.End) return false; - ulong sbSectorOff = 0x10000 / imagePlugin.GetSectorSize(); - uint sbSectorSize = 0x1000 / imagePlugin.GetSectorSize(); + ulong sbSectorOff = 0x10000 / imagePlugin.ImageInfo.SectorSize; + uint sbSectorSize = 0x1000 / imagePlugin.ImageInfo.SectorSize; if(sbSectorOff + partition.Start >= partition.End) return false; @@ -103,8 +103,8 @@ namespace DiscImageChef.Filesystems XmlFsType = new FileSystemType(); information = ""; - ulong sbSectorOff = 0x10000 / imagePlugin.GetSectorSize(); - uint sbSectorSize = 0x1000 / imagePlugin.GetSectorSize(); + ulong sbSectorOff = 0x10000 / imagePlugin.ImageInfo.SectorSize; + uint sbSectorSize = 0x1000 / imagePlugin.ImageInfo.SectorSize; byte[] sector = imagePlugin.ReadSectors(sbSectorOff + partition.Start, sbSectorSize); diff --git a/DiscImageChef.Filesystems/CPM/Info.cs b/DiscImageChef.Filesystems/CPM/Info.cs index 3723b73f4..72a869249 100644 --- a/DiscImageChef.Filesystems/CPM/Info.cs +++ b/DiscImageChef.Filesystems/CPM/Info.cs @@ -203,7 +203,8 @@ namespace DiscImageChef.Filesystems.CPM sectorSize = (ulong)(128 << amsSb.psh); // Compare device limits from superblock to real limits - if(sectorSize == imagePlugin.GetSectorSize() && sectorCount == imagePlugin.GetSectors()) + if(sectorSize == imagePlugin.ImageInfo.SectorSize && + sectorCount == imagePlugin.ImageInfo.Sectors) { cpmFound = true; firstDirectorySector = (ulong)(amsSb.off * amsSb.spt); @@ -318,7 +319,7 @@ namespace DiscImageChef.Filesystems.CPM (ulong)((hddSb.firstCylinder * hddSb.heads + hddSb.heads) * hddSb.sectorsPerTrack); // If volume size corresponds with working partition (this variant will be inside MBR partitioning) - if(sectorSize == imagePlugin.GetSectorSize() && startingSector == partition.Start && + if(sectorSize == imagePlugin.ImageInfo.SectorSize && startingSector == partition.Start && sectorsInPartition + partition.Start <= partition.End) { cpmFound = true; @@ -404,7 +405,7 @@ namespace DiscImageChef.Filesystems.CPM switch((FormatByte)formatByte) { case FormatByte.k160: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 320) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 320) { cpmFound = true; firstDirectorySector86 = 8; @@ -452,7 +453,7 @@ namespace DiscImageChef.Filesystems.CPM break; case FormatByte.k320: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 640) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 640) { cpmFound = true; firstDirectorySector86 = 16; @@ -505,7 +506,7 @@ namespace DiscImageChef.Filesystems.CPM case FormatByte.k360: case FormatByte.k360Alt: case FormatByte.k360Alt2: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 720) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 720) { cpmFound = true; firstDirectorySector86 = 36; @@ -557,7 +558,7 @@ namespace DiscImageChef.Filesystems.CPM break; case FormatByte.k720: case FormatByte.k720Alt: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 1440) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 1440) { cpmFound = true; firstDirectorySector86 = 36; @@ -608,7 +609,7 @@ namespace DiscImageChef.Filesystems.CPM break; case FormatByte.f720: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 1440) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 1440) { cpmFound = true; firstDirectorySector86 = 18; @@ -659,7 +660,7 @@ namespace DiscImageChef.Filesystems.CPM break; case FormatByte.f1200: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 2400) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 2400) { cpmFound = true; firstDirectorySector86 = 30; @@ -710,7 +711,7 @@ namespace DiscImageChef.Filesystems.CPM break; case FormatByte.f1440: - if(imagePlugin.GetSectorSize() == 512 && imagePlugin.GetSectors() == 2880) + if(imagePlugin.ImageInfo.SectorSize == 512 && imagePlugin.ImageInfo.Sectors == 2880) { cpmFound = true; firstDirectorySector86 = 36; @@ -764,7 +765,7 @@ namespace DiscImageChef.Filesystems.CPM if(cpmFound) { - uint directoryLength = (uint)(((ulong)dpb.drm + 1) * 32 / imagePlugin.GetSectorSize()); + uint directoryLength = (uint)(((ulong)dpb.drm + 1) * 32 / imagePlugin.ImageInfo.SectorSize); directory = imagePlugin.ReadSectors(firstDirectorySector86 + partition.Start, directoryLength); DicConsole.DebugWriteLine("CP/M Plugin", "Found CP/M-86 floppy identifier."); } @@ -793,8 +794,8 @@ namespace DiscImageChef.Filesystems.CPM foreach(CpmDefinition def in from def in definitions.definitions let sectors = (ulong)(def.cylinders * def.sides * def.sectorsPerTrack) - where sectors == imagePlugin.GetSectors() && - def.bytesPerSector == imagePlugin.GetSectorSize() + where sectors == imagePlugin.ImageInfo.Sectors && + def.bytesPerSector == imagePlugin.ImageInfo.SectorSize select def) { // Definition seems to describe current disk, at least, same number of volume sectors and bytes per sector diff --git a/DiscImageChef.Filesystems/EFS.cs b/DiscImageChef.Filesystems/EFS.cs index fe44db792..7c5645d79 100644 --- a/DiscImageChef.Filesystems/EFS.cs +++ b/DiscImageChef.Filesystems/EFS.cs @@ -70,15 +70,15 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; // Misaligned if(imagePlugin.ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { EFS_Superblock efsSb = new EFS_Superblock(); - uint sbSize = (uint)((Marshal.SizeOf(efsSb) + 0x200) / imagePlugin.GetSectorSize()); - if((Marshal.SizeOf(efsSb) + 0x200) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)((Marshal.SizeOf(efsSb) + 0x200) / imagePlugin.ImageInfo.SectorSize); + if((Marshal.SizeOf(efsSb) + 0x200) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(efsSb)) return false; @@ -98,8 +98,8 @@ namespace DiscImageChef.Filesystems { EFS_Superblock efsSb = new EFS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(efsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(efsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(efsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(efsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + 1, sbSize); if(sector.Length < Marshal.SizeOf(efsSb)) return false; @@ -118,15 +118,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; EFS_Superblock efsSb = new EFS_Superblock(); // Misaligned if(imagePlugin.ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { - uint sbSize = (uint)((Marshal.SizeOf(efsSb) + 0x400) / imagePlugin.GetSectorSize()); - if((Marshal.SizeOf(efsSb) + 0x400) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)((Marshal.SizeOf(efsSb) + 0x400) / imagePlugin.ImageInfo.SectorSize); + if((Marshal.SizeOf(efsSb) + 0x400) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(efsSb)) return; @@ -142,8 +142,8 @@ namespace DiscImageChef.Filesystems } else { - uint sbSize = (uint)(Marshal.SizeOf(efsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(efsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(efsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(efsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + 1, sbSize); if(sector.Length < Marshal.SizeOf(efsSb)) return; diff --git a/DiscImageChef.Filesystems/F2FS.cs b/DiscImageChef.Filesystems/F2FS.cs index 4b74a3fcf..5444181a7 100644 --- a/DiscImageChef.Filesystems/F2FS.cs +++ b/DiscImageChef.Filesystems/F2FS.cs @@ -72,16 +72,16 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < F2FS_MIN_SECTOR || imagePlugin.GetSectorSize() > F2FS_MAX_SECTOR) - return false; + if(imagePlugin.ImageInfo.SectorSize < F2FS_MIN_SECTOR || + imagePlugin.ImageInfo.SectorSize > F2FS_MAX_SECTOR) return false; - uint sbAddr = F2FS_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = F2FS_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; F2FS_Superblock f2fsSb = new F2FS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(f2fsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(f2fsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(f2fsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(f2fsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; if(partition.Start + sbAddr >= partition.End) return false; @@ -99,15 +99,16 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < F2FS_MIN_SECTOR || imagePlugin.GetSectorSize() > F2FS_MAX_SECTOR) return; + if(imagePlugin.ImageInfo.SectorSize < F2FS_MIN_SECTOR || + imagePlugin.ImageInfo.SectorSize > F2FS_MAX_SECTOR) return; - uint sbAddr = F2FS_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = F2FS_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; F2FS_Superblock f2fsSb = new F2FS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(f2fsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(f2fsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(f2fsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(f2fsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + sbAddr, sbSize); if(sector.Length < Marshal.SizeOf(f2fsSb)) return; diff --git a/DiscImageChef.Filesystems/FAT.cs b/DiscImageChef.Filesystems/FAT.cs index 7e5b5cd3f..7910972b7 100644 --- a/DiscImageChef.Filesystems/FAT.cs +++ b/DiscImageChef.Filesystems/FAT.cs @@ -242,7 +242,7 @@ namespace DiscImageChef.Filesystems if(partition.Start != 0) return false; // DEC Rainbow, lacks a BPB but has a very concrete structure... - if(imagePlugin.GetSectors() == 800 && imagePlugin.GetSectorSize() == 512) + if(imagePlugin.ImageInfo.Sectors == 800 && imagePlugin.ImageInfo.SectorSize == 512) { // DEC Rainbow boots up with a Z80, first byte should be DI (disable interrupts) byte z80Di = bpbSector[0]; @@ -598,9 +598,9 @@ namespace DiscImageChef.Filesystems uint sectorsForRootDirectory = 0; // DEC Rainbow, lacks a BPB but has a very concrete structure... - if(imagePlugin.GetSectors() == 800 && imagePlugin.GetSectorSize() == 512 && !useAtariBpb && !useMsxBpb && - !useDos2Bpb && !useDos3Bpb && !useDos32Bpb && !useDos33Bpb && !userShortExtendedBpb && !useExtendedBpb && - !useShortFat32 && !useLongFat32 && !useApricotBpb) + if(imagePlugin.ImageInfo.Sectors == 800 && imagePlugin.ImageInfo.SectorSize == 512 && !useAtariBpb && + !useMsxBpb && !useDos2Bpb && !useDos3Bpb && !useDos32Bpb && !useDos33Bpb && !userShortExtendedBpb && + !useExtendedBpb && !useShortFat32 && !useLongFat32 && !useApricotBpb) { // DEC Rainbow boots up with a Z80, first byte should be DI (disable interrupts) byte z80Di = bpbSector[0]; @@ -1132,10 +1132,10 @@ namespace DiscImageChef.Filesystems XmlFsType.Bootable = apricotBpb.bootType > 0; if(apricotBpb.bootLocation > 0 && - apricotBpb.bootLocation + apricotBpb.bootSize < imagePlugin.GetSectors()) + apricotBpb.bootLocation + apricotBpb.bootSize < imagePlugin.ImageInfo.Sectors) fakeBpb.boot_code = imagePlugin.ReadSectors(apricotBpb.bootLocation, (uint)(apricotBpb.sectorSize * apricotBpb.bootSize) / - imagePlugin.GetSectorSize()); + imagePlugin.ImageInfo.SectorSize); } if(!isFat32) diff --git a/DiscImageChef.Filesystems/FATX.cs b/DiscImageChef.Filesystems/FATX.cs index b8b4b50ff..becaea97a 100644 --- a/DiscImageChef.Filesystems/FATX.cs +++ b/DiscImageChef.Filesystems/FATX.cs @@ -67,7 +67,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; FATX_Superblock fatxSb; byte[] sector = imagePlugin.ReadSector(partition.Start); @@ -80,7 +80,7 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; FATX_Superblock fatxSb; diff --git a/DiscImageChef.Filesystems/FFS.cs b/DiscImageChef.Filesystems/FFS.cs index b226d0557..fb12eaa3e 100644 --- a/DiscImageChef.Filesystems/FFS.cs +++ b/DiscImageChef.Filesystems/FFS.cs @@ -108,15 +108,15 @@ namespace DiscImageChef.Filesystems uint sbSizeInSectors; - if(imagePlugin.GetSectorSize() == 2336 || imagePlugin.GetSectorSize() == 2352 || - imagePlugin.GetSectorSize() == 2448) sbSizeInSectors = block_size / 2048; - else sbSizeInSectors = block_size / imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize == 2336 || imagePlugin.ImageInfo.SectorSize == 2352 || + imagePlugin.ImageInfo.SectorSize == 2448) sbSizeInSectors = block_size / 2048; + else sbSizeInSectors = block_size / imagePlugin.ImageInfo.SectorSize; ulong[] locations = { sb_start_floppy, sb_start_boot, sb_start_long_boot, sb_start_piggy, sb_start_att_dsdd, - 8192 / imagePlugin.GetSectorSize(), 65536 / imagePlugin.GetSectorSize(), - 262144 / imagePlugin.GetSectorSize() + 8192 / imagePlugin.ImageInfo.SectorSize, 65536 / imagePlugin.ImageInfo.SectorSize, + 262144 / imagePlugin.ImageInfo.SectorSize }; return locations.Where(loc => partition.End > partition.Start + loc + sbSizeInSectors) @@ -144,15 +144,15 @@ namespace DiscImageChef.Filesystems bool fs_type_sun = false; bool fs_type_sun86 = false; - if(imagePlugin.GetSectorSize() == 2336 || imagePlugin.GetSectorSize() == 2352 || - imagePlugin.GetSectorSize() == 2448) sb_size_in_sectors = block_size / 2048; - else sb_size_in_sectors = block_size / imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize == 2336 || imagePlugin.ImageInfo.SectorSize == 2352 || + imagePlugin.ImageInfo.SectorSize == 2448) sb_size_in_sectors = block_size / 2048; + else sb_size_in_sectors = block_size / imagePlugin.ImageInfo.SectorSize; ulong[] locations = { sb_start_floppy, sb_start_boot, sb_start_long_boot, sb_start_piggy, sb_start_att_dsdd, - 8192 / imagePlugin.GetSectorSize(), 65536 / imagePlugin.GetSectorSize(), - 262144 / imagePlugin.GetSectorSize() + 8192 / imagePlugin.ImageInfo.SectorSize, 65536 / imagePlugin.ImageInfo.SectorSize, + 262144 / imagePlugin.ImageInfo.SectorSize }; foreach(ulong loc in locations.Where(loc => partition.End > partition.Start + loc + sb_size_in_sectors)) @@ -594,19 +594,19 @@ namespace DiscImageChef.Filesystems /// public uint fs_rlink; /// addr of super-block in filesys - public ufs_daddr_t fs_sblkno; + public int fs_sblkno; /// offset of cyl-block in filesys - public ufs_daddr_t fs_cblkno; + public int fs_cblkno; /// offset of inode-blocks in filesys - public ufs_daddr_t fs_iblkno; + public int fs_iblkno; /// offset of first data after cg - public ufs_daddr_t fs_dblkno; + public int fs_dblkno; /// cylinder group offset in cylinder public int fs_old_cgoffset; /// used to calc mod fs_ntrak public int fs_old_cgmask; /// last time written - public time_t fs_old_time; + public int fs_old_time; /// number of blocks in fs public int fs_old_size; /// number of data blocks in fs @@ -684,7 +684,7 @@ namespace DiscImageChef.Filesystems public int fs_id_2; /* sizes determined by number of cylinder groups and their sizes */ /// blk addr of cyl grp summary area - public ufs_daddr_t fs_old_csaddr; + public int fs_old_csaddr; /// size of cyl grp summary area public int fs_cssize; /// cylinder group size diff --git a/DiscImageChef.Filesystems/Fossil.cs b/DiscImageChef.Filesystems/Fossil.cs index 2887524c0..fcaabc460 100644 --- a/DiscImageChef.Filesystems/Fossil.cs +++ b/DiscImageChef.Filesystems/Fossil.cs @@ -73,11 +73,11 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - ulong hdrSector = HEADER_POS / imagePlugin.GetSectorSize(); + ulong hdrSector = HEADER_POS / imagePlugin.ImageInfo.SectorSize; FossilHeader hdr; - if(partition.Start + hdrSector > imagePlugin.GetSectors()) return false; + if(partition.Start + hdrSector > imagePlugin.ImageInfo.Sectors) return false; byte[] sector = imagePlugin.ReadSector(partition.Start + hdrSector); hdr = BigEndianMarshal.ByteArrayToStructureBigEndian(sector); @@ -91,9 +91,9 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; - ulong hdrSector = HEADER_POS / imagePlugin.GetSectorSize(); + ulong hdrSector = HEADER_POS / imagePlugin.ImageInfo.SectorSize; FossilHeader hdr; @@ -113,7 +113,7 @@ namespace DiscImageChef.Filesystems sb.AppendFormat("Data starts at block {0}", hdr.data).AppendLine(); sb.AppendFormat("Volume has {0} blocks", hdr.end).AppendLine(); - ulong sbLocation = hdr.super * (hdr.blockSize / imagePlugin.GetSectorSize()) + partition.Start; + ulong sbLocation = hdr.super * (hdr.blockSize / imagePlugin.ImageInfo.SectorSize) + partition.Start; XmlFsType = new FileSystemType { diff --git a/DiscImageChef.Filesystems/HAMMER.cs b/DiscImageChef.Filesystems/HAMMER.cs index c4bae14eb..2195830f2 100644 --- a/DiscImageChef.Filesystems/HAMMER.cs +++ b/DiscImageChef.Filesystems/HAMMER.cs @@ -76,9 +76,9 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - uint run = HAMMER_VOLHDR_SIZE / imagePlugin.GetSectorSize(); + uint run = HAMMER_VOLHDR_SIZE / imagePlugin.ImageInfo.SectorSize; - if(HAMMER_VOLHDR_SIZE % imagePlugin.GetSectorSize() > 0) run++; + if(HAMMER_VOLHDR_SIZE % imagePlugin.ImageInfo.SectorSize > 0) run++; if(run + partition.Start >= partition.End) return false; @@ -99,9 +99,9 @@ namespace DiscImageChef.Filesystems HammerSuperBlock hammerSb; - uint run = HAMMER_VOLHDR_SIZE / imagePlugin.GetSectorSize(); + uint run = HAMMER_VOLHDR_SIZE / imagePlugin.ImageInfo.SectorSize; - if(HAMMER_VOLHDR_SIZE % imagePlugin.GetSectorSize() > 0) run++; + if(HAMMER_VOLHDR_SIZE % imagePlugin.ImageInfo.SectorSize > 0) run++; ulong magic; diff --git a/DiscImageChef.Filesystems/ISO9660/Info.cs b/DiscImageChef.Filesystems/ISO9660/Info.cs index 612b5a057..05791432a 100644 --- a/DiscImageChef.Filesystems/ISO9660/Info.cs +++ b/DiscImageChef.Filesystems/ISO9660/Info.cs @@ -48,7 +48,7 @@ namespace DiscImageChef.Filesystems.ISO9660 public override bool Identify(ImagePlugin imagePlugin, Partition partition) { // ISO9660 is designed for 2048 bytes/sector devices - if(imagePlugin.GetSectorSize() < 2048) return false; + if(imagePlugin.ImageInfo.SectorSize < 2048) return false; // ISO9660 Primary Volume Descriptor starts at sector 16, so that's minimal size. if(partition.End <= 16 + partition.Start) return false; @@ -94,7 +94,7 @@ namespace DiscImageChef.Filesystems.ISO9660 ElToritoBootRecord? torito = null; // ISO9660 is designed for 2048 bytes/sector devices - if(imagePlugin.GetSectorSize() < 2048) return; + if(imagePlugin.ImageInfo.SectorSize < 2048) return; // ISO9660 Primary Volume Descriptor starts at sector 16, so that's minimal size. if(partition.End < 16) return; diff --git a/DiscImageChef.Filesystems/JFS.cs b/DiscImageChef.Filesystems/JFS.cs index 841414c61..117dd747f 100644 --- a/DiscImageChef.Filesystems/JFS.cs +++ b/DiscImageChef.Filesystems/JFS.cs @@ -68,7 +68,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - uint bootSectors = JFS_BOOT_BLOCKS_SIZE / imagePlugin.GetSectorSize(); + uint bootSectors = JFS_BOOT_BLOCKS_SIZE / imagePlugin.ImageInfo.SectorSize; if(partition.Start + bootSectors >= partition.End) return false; byte[] sector = imagePlugin.ReadSector(partition.Start + bootSectors); @@ -87,7 +87,7 @@ namespace DiscImageChef.Filesystems { information = ""; StringBuilder sb = new StringBuilder(); - uint bootSectors = JFS_BOOT_BLOCKS_SIZE / imagePlugin.GetSectorSize(); + uint bootSectors = JFS_BOOT_BLOCKS_SIZE / imagePlugin.ImageInfo.SectorSize; byte[] sector = imagePlugin.ReadSector(partition.Start + bootSectors); if(sector.Length < 512) return; diff --git a/DiscImageChef.Filesystems/LIF.cs b/DiscImageChef.Filesystems/LIF.cs index 410deb229..e203fe5b4 100644 --- a/DiscImageChef.Filesystems/LIF.cs +++ b/DiscImageChef.Filesystems/LIF.cs @@ -69,7 +69,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 256) return false; + if(imagePlugin.ImageInfo.SectorSize < 256) return false; byte[] sector = imagePlugin.ReadSector(partition.Start); LIF_SystemBlock lifSb = BigEndianMarshal.ByteArrayToStructureBigEndian(sector); @@ -82,7 +82,7 @@ namespace DiscImageChef.Filesystems { information = ""; - if(imagePlugin.GetSectorSize() < 256) return; + if(imagePlugin.ImageInfo.SectorSize < 256) return; byte[] sector = imagePlugin.ReadSector(partition.Start); LIF_SystemBlock lifSb = BigEndianMarshal.ByteArrayToStructureBigEndian(sector); diff --git a/DiscImageChef.Filesystems/LisaFS/Dir.cs b/DiscImageChef.Filesystems/LisaFS/Dir.cs index f5566cee1..a78767299 100644 --- a/DiscImageChef.Filesystems/LisaFS/Dir.cs +++ b/DiscImageChef.Filesystems/LisaFS/Dir.cs @@ -164,7 +164,7 @@ namespace DiscImageChef.Filesystems.LisaFS // Search for the first sector describing the catalog // While root catalog is not stored in S-Records, probably rest are? (unchecked) // If root catalog is not pointed in MDDF (unchecked) maybe it's always following S-Records File? - for(ulong i = 0; i < device.GetSectors(); i++) + for(ulong i = 0; i < device.ImageInfo.Sectors; i++) { DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out LisaTag.PriamTag catTag); diff --git a/DiscImageChef.Filesystems/LisaFS/File.cs b/DiscImageChef.Filesystems/LisaFS/File.cs index 0a43a8d0e..7574378c1 100644 --- a/DiscImageChef.Filesystems/LisaFS/File.cs +++ b/DiscImageChef.Filesystems/LisaFS/File.cs @@ -194,7 +194,7 @@ namespace DiscImageChef.Filesystems.LisaFS if(count == 0) return Errno.NoSuchFile; - buf = !tags ? new byte[count * device.GetSectorSize()] : new byte[count * devTagSize]; + buf = !tags ? new byte[count * device.ImageInfo.SectorSize] : new byte[count * devTagSize]; // Should be enough to check 100 sectors? for(ulong i = 0; i < 100; i++) @@ -325,7 +325,7 @@ namespace DiscImageChef.Filesystems.LisaFS int sectorSize; if(tags) sectorSize = devTagSize; - else sectorSize = (int)device.GetSectorSize(); + else sectorSize = (int)device.ImageInfo.SectorSize; byte[] temp = new byte[file.length * sectorSize]; diff --git a/DiscImageChef.Filesystems/LisaFS/Info.cs b/DiscImageChef.Filesystems/LisaFS/Info.cs index 099edd773..afbad6cfa 100644 --- a/DiscImageChef.Filesystems/LisaFS/Info.cs +++ b/DiscImageChef.Filesystems/LisaFS/Info.cs @@ -54,7 +54,7 @@ namespace DiscImageChef.Filesystems.LisaFS BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; // Minimal LisaOS disk is 3.5" single sided double density, 800 sectors - if(imagePlugin.GetSectors() < 800) return false; + if(imagePlugin.ImageInfo.Sectors < 800) return false; int beforeMddf = -1; @@ -83,18 +83,20 @@ namespace DiscImageChef.Filesystems.LisaFS DicConsole.DebugWriteLine("LisaFS plugin", "Current sector = {0}", i); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.mddf_block = {0}", infoMddf.mddf_block); - DicConsole.DebugWriteLine("LisaFS plugin", "Disk size = {0} sectors", imagePlugin.GetSectors()); + DicConsole.DebugWriteLine("LisaFS plugin", "Disk size = {0} sectors", + imagePlugin.ImageInfo.Sectors); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.vol_size = {0} sectors", infoMddf.vol_size); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.vol_size - 1 = {0}", infoMddf.volsize_minus_one); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.vol_size - mddf.mddf_block -1 = {0}", infoMddf.volsize_minus_mddf_minus_one); - DicConsole.DebugWriteLine("LisaFS plugin", "Disk sector = {0} bytes", imagePlugin.GetSectorSize()); + DicConsole.DebugWriteLine("LisaFS plugin", "Disk sector = {0} bytes", + imagePlugin.ImageInfo.SectorSize); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.blocksize = {0} bytes", infoMddf.blocksize); DicConsole.DebugWriteLine("LisaFS plugin", "mddf.datasize = {0} bytes", infoMddf.datasize); if(infoMddf.mddf_block != i - beforeMddf) return false; - if(infoMddf.vol_size > imagePlugin.GetSectors()) return false; + if(infoMddf.vol_size > imagePlugin.ImageInfo.Sectors) return false; if(infoMddf.vol_size - 1 != infoMddf.volsize_minus_one) return false; @@ -102,9 +104,9 @@ namespace DiscImageChef.Filesystems.LisaFS if(infoMddf.datasize > infoMddf.blocksize) return false; - if(infoMddf.blocksize < imagePlugin.GetSectorSize()) return false; + if(infoMddf.blocksize < imagePlugin.ImageInfo.SectorSize) return false; - return infoMddf.datasize == imagePlugin.GetSectorSize(); + return infoMddf.datasize == imagePlugin.ImageInfo.SectorSize; } return false; @@ -131,7 +133,7 @@ namespace DiscImageChef.Filesystems.LisaFS BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; // Minimal LisaOS disk is 3.5" single sided double density, 800 sectors - if(imagePlugin.GetSectors() < 800) return; + if(imagePlugin.ImageInfo.Sectors < 800) return; int beforeMddf = -1; @@ -274,7 +276,7 @@ namespace DiscImageChef.Filesystems.LisaFS if(infoMddf.mddf_block != i - beforeMddf) return; - if(infoMddf.vol_size > imagePlugin.GetSectors()) return; + if(infoMddf.vol_size > imagePlugin.ImageInfo.Sectors) return; if(infoMddf.vol_size - 1 != infoMddf.volsize_minus_one) return; @@ -282,9 +284,9 @@ namespace DiscImageChef.Filesystems.LisaFS if(infoMddf.datasize > infoMddf.blocksize) return; - if(infoMddf.blocksize < imagePlugin.GetSectorSize()) return; + if(infoMddf.blocksize < imagePlugin.ImageInfo.SectorSize) return; - if(infoMddf.datasize != imagePlugin.GetSectorSize()) return; + if(infoMddf.datasize != imagePlugin.ImageInfo.SectorSize) return; switch(infoMddf.fsversion) { diff --git a/DiscImageChef.Filesystems/LisaFS/Super.cs b/DiscImageChef.Filesystems/LisaFS/Super.cs index 67a6b5eb8..431abee1f 100644 --- a/DiscImageChef.Filesystems/LisaFS/Super.cs +++ b/DiscImageChef.Filesystems/LisaFS/Super.cs @@ -70,7 +70,7 @@ namespace DiscImageChef.Filesystems.LisaFS BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; // Minimal LisaOS disk is 3.5" single sided double density, 800 sectors - if(device.GetSectors() < 800) + if(device.ImageInfo.Sectors < 800) { DicConsole.DebugWriteLine("LisaFS plugin", "Device is too small"); return Errno.InOutError; @@ -178,11 +178,11 @@ namespace DiscImageChef.Filesystems.LisaFS mddf.vol_left_mounted = sector[0x138]; // Check that the MDDF is correct - if(mddf.mddf_block != i - volumePrefix || mddf.vol_size > device.GetSectors() || + if(mddf.mddf_block != i - volumePrefix || mddf.vol_size > device.ImageInfo.Sectors || mddf.vol_size - 1 != mddf.volsize_minus_one || mddf.vol_size - i - 1 != mddf.volsize_minus_mddf_minus_one - volumePrefix || - mddf.datasize > mddf.blocksize || mddf.blocksize < device.GetSectorSize() || - mddf.datasize != device.GetSectorSize()) + mddf.datasize > mddf.blocksize || mddf.blocksize < device.ImageInfo.SectorSize || + mddf.datasize != device.ImageInfo.SectorSize) { DicConsole.DebugWriteLine("LisaFS plugin", "Incorrect MDDF found"); return Errno.InvalidArgument; diff --git a/DiscImageChef.Filesystems/Locus.cs b/DiscImageChef.Filesystems/Locus.cs index 77c613aae..105a08a17 100644 --- a/DiscImageChef.Filesystems/Locus.cs +++ b/DiscImageChef.Filesystems/Locus.cs @@ -91,16 +91,16 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; for(ulong location = 0; location <= 8; location++) { Locus_Superblock LocusSb = new Locus_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(LocusSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(LocusSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(LocusSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(LocusSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; - if(partition.Start + location + sbSize >= imagePlugin.GetSectors()) break; + if(partition.Start + location + sbSize >= imagePlugin.ImageInfo.Sectors) break; byte[] sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(LocusSb)) return false; @@ -122,15 +122,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; Locus_Superblock LocusSb = new Locus_Superblock(); byte[] sector = null; for(ulong location = 0; location <= 8; location++) { - uint sbSize = (uint)(Marshal.SizeOf(LocusSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(LocusSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(LocusSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(LocusSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(LocusSb)) return; diff --git a/DiscImageChef.Filesystems/MicroDOS.cs b/DiscImageChef.Filesystems/MicroDOS.cs index 73b050dde..3caee2730 100644 --- a/DiscImageChef.Filesystems/MicroDOS.cs +++ b/DiscImageChef.Filesystems/MicroDOS.cs @@ -72,7 +72,7 @@ namespace DiscImageChef.Filesystems { if(1 + partition.Start >= partition.End) return false; - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; byte[] bk0 = imagePlugin.ReadSector(0 + partition.Start); diff --git a/DiscImageChef.Filesystems/NILFS2.cs b/DiscImageChef.Filesystems/NILFS2.cs index e775ba041..4f39a4d93 100644 --- a/DiscImageChef.Filesystems/NILFS2.cs +++ b/DiscImageChef.Filesystems/NILFS2.cs @@ -68,15 +68,15 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - uint sbAddr = NILFS2_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = NILFS2_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; NILFS2_Superblock nilfsSb = new NILFS2_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(nilfsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(nilfsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(nilfsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(nilfsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; if(partition.Start + sbAddr + sbSize >= partition.End) return false; @@ -94,15 +94,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; - uint sbAddr = NILFS2_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = NILFS2_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; NILFS2_Superblock nilfsSb = new NILFS2_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(nilfsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(nilfsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(nilfsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(nilfsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + sbAddr, sbSize); if(sector.Length < Marshal.SizeOf(nilfsSb)) return; diff --git a/DiscImageChef.Filesystems/Nintendo.cs b/DiscImageChef.Filesystems/Nintendo.cs index 32c97d5a3..3560fb8bc 100644 --- a/DiscImageChef.Filesystems/Nintendo.cs +++ b/DiscImageChef.Filesystems/Nintendo.cs @@ -67,11 +67,11 @@ namespace DiscImageChef.Filesystems { if(partition.Start != 0) return false; - if(imagePlugin.GetSectors() * imagePlugin.GetSectorSize() < 0x50000) return false; + if(imagePlugin.ImageInfo.Sectors * imagePlugin.ImageInfo.SectorSize < 0x50000) return false; BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; - byte[] header = imagePlugin.ReadSectors(0, 0x50000 / imagePlugin.GetSectorSize()); + byte[] header = imagePlugin.ReadSectors(0, 0x50000 / imagePlugin.ImageInfo.SectorSize); uint magicGc = BigEndianBitConverter.ToUInt32(header, 0x1C); uint magicWii = BigEndianBitConverter.ToUInt32(header, 0x18); @@ -88,7 +88,7 @@ namespace DiscImageChef.Filesystems NintendoFields fields = new NintendoFields(); BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; - byte[] header = imagePlugin.ReadSectors(0, 0x50000 / imagePlugin.GetSectorSize()); + byte[] header = imagePlugin.ReadSectors(0, 0x50000 / imagePlugin.ImageInfo.SectorSize); bool wii = false; @@ -304,7 +304,7 @@ namespace DiscImageChef.Filesystems information = sbInformation.ToString(); XmlFsType.Bootable = true; - XmlFsType.Clusters = (long)(imagePlugin.GetSectors() * imagePlugin.GetSectorSize() / 2048); + XmlFsType.Clusters = (long)(imagePlugin.ImageInfo.Sectors * imagePlugin.ImageInfo.SectorSize / 2048); XmlFsType.ClusterSize = 2048; XmlFsType.Type = wii ? "Nintendo Wii filesystem" : "Nintendo Gamecube filesystem"; XmlFsType.VolumeName = fields.Title; diff --git a/DiscImageChef.Filesystems/ODS.cs b/DiscImageChef.Filesystems/ODS.cs index 51f2238bf..26c5ea3b5 100644 --- a/DiscImageChef.Filesystems/ODS.cs +++ b/DiscImageChef.Filesystems/ODS.cs @@ -77,7 +77,7 @@ namespace DiscImageChef.Filesystems { if(2 + partition.Start >= partition.End) return false; - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; byte[] magicB = new byte[12]; byte[] hbSector = imagePlugin.ReadSector(1 + partition.Start); diff --git a/DiscImageChef.Filesystems/Opera.cs b/DiscImageChef.Filesystems/Opera.cs index 8f8253673..76b8ca6b0 100644 --- a/DiscImageChef.Filesystems/Opera.cs +++ b/DiscImageChef.Filesystems/Opera.cs @@ -106,25 +106,25 @@ namespace DiscImageChef.Filesystems .AppendLine(); superBlockMetadata.AppendFormat("Volume identifier: 0x{0:X8}", sb.volume_id).AppendLine(); superBlockMetadata.AppendFormat("Block size: {0} bytes", sb.block_size).AppendLine(); - if(imagePlugin.GetSectorSize() == 2336 || imagePlugin.GetSectorSize() == 2352 || - imagePlugin.GetSectorSize() == 2448) + if(imagePlugin.ImageInfo.SectorSize == 2336 || imagePlugin.ImageInfo.SectorSize == 2352 || + imagePlugin.ImageInfo.SectorSize == 2448) { if(sb.block_size != 2048) superBlockMetadata .AppendFormat("WARNING: Filesystem indicates {0} bytes/block while device indicates {1} bytes/block", sb.block_size, 2048); } - else if(imagePlugin.GetSectorSize() != sb.block_size) + else if(imagePlugin.ImageInfo.SectorSize != sb.block_size) superBlockMetadata .AppendFormat("WARNING: Filesystem indicates {0} bytes/block while device indicates {1} bytes/block", - sb.block_size, imagePlugin.GetSectorSize()); + sb.block_size, imagePlugin.ImageInfo.SectorSize); superBlockMetadata .AppendFormat("Volume size: {0} blocks, {1} bytes", sb.block_count, sb.block_size * sb.block_count) .AppendLine(); - if((ulong)sb.block_count > imagePlugin.GetSectors()) + if((ulong)sb.block_count > imagePlugin.ImageInfo.Sectors) superBlockMetadata .AppendFormat("WARNING: Filesystem indicates {0} blocks while device indicates {1} blocks", - sb.block_count, imagePlugin.GetSectors()); + sb.block_count, imagePlugin.ImageInfo.Sectors); superBlockMetadata.AppendFormat("Root directory identifier: 0x{0:X8}", sb.root_dirid).AppendLine(); superBlockMetadata.AppendFormat("Root directory block size: {0} bytes", sb.rootdir_bsize).AppendLine(); superBlockMetadata.AppendFormat("Root directory size: {0} blocks, {1} bytes", sb.rootdir_blocks, diff --git a/DiscImageChef.Filesystems/PCEngine.cs b/DiscImageChef.Filesystems/PCEngine.cs index ae82d25b8..502104208 100644 --- a/DiscImageChef.Filesystems/PCEngine.cs +++ b/DiscImageChef.Filesystems/PCEngine.cs @@ -80,7 +80,7 @@ namespace DiscImageChef.Filesystems XmlFsType = new FileSystemType { Type = "PC Engine filesystem", - Clusters = (long)((partition.End - partition.Start + 1) / imagePlugin.GetSectorSize() * 2048), + Clusters = (long)((partition.End - partition.Start + 1) / imagePlugin.ImageInfo.SectorSize * 2048), ClusterSize = 2048 }; } diff --git a/DiscImageChef.Filesystems/PFS.cs b/DiscImageChef.Filesystems/PFS.cs index 0dda11893..ea9dc71c8 100644 --- a/DiscImageChef.Filesystems/PFS.cs +++ b/DiscImageChef.Filesystems/PFS.cs @@ -149,7 +149,7 @@ namespace DiscImageChef.Filesystems XmlFsType.FreeClusters = rootBlock.blocksfree; XmlFsType.FreeClustersSpecified = true; XmlFsType.Clusters = rootBlock.diskSize; - XmlFsType.ClusterSize = (int)imagePlugin.GetSectorSize(); + XmlFsType.ClusterSize = (int)imagePlugin.ImageInfo.SectorSize; XmlFsType.VolumeName = StringHandlers.PascalToString(rootBlock.diskname, CurrentEncoding); } diff --git a/DiscImageChef.Filesystems/ProDOS.cs b/DiscImageChef.Filesystems/ProDOS.cs index f6a2d525d..f7f1d8789 100644 --- a/DiscImageChef.Filesystems/ProDOS.cs +++ b/DiscImageChef.Filesystems/ProDOS.cs @@ -115,8 +115,8 @@ namespace DiscImageChef.Filesystems byte[] rootDirectoryKeyBlock = imagePlugin.ReadSector(2 + partition.Start); bool APMFromHDDOnCD = false; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448 || - imagePlugin.GetSectorSize() == 2048) + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448 || + imagePlugin.ImageInfo.SectorSize == 2048) { byte[] tmp = imagePlugin.ReadSectors(partition.Start, 2); @@ -178,8 +178,8 @@ namespace DiscImageChef.Filesystems bool APMFromHDDOnCD = false; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448 || - imagePlugin.GetSectorSize() == 2048) + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448 || + imagePlugin.ImageInfo.SectorSize == 2048) { byte[] tmp = imagePlugin.ReadSectors(partition.Start, 2); diff --git a/DiscImageChef.Filesystems/QNX4.cs b/DiscImageChef.Filesystems/QNX4.cs index 6ba58a227..578f293ff 100644 --- a/DiscImageChef.Filesystems/QNX4.cs +++ b/DiscImageChef.Filesystems/QNX4.cs @@ -69,7 +69,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(partition.Start + 1 >= imagePlugin.GetSectors()) return false; + if(partition.Start + 1 >= imagePlugin.ImageInfo.Sectors) return false; byte[] sector = imagePlugin.ReadSector(partition.Start + 1); if(sector.Length < 512) return false; diff --git a/DiscImageChef.Filesystems/QNX6.cs b/DiscImageChef.Filesystems/QNX6.cs index 9cc259786..05b4b9fbd 100644 --- a/DiscImageChef.Filesystems/QNX6.cs +++ b/DiscImageChef.Filesystems/QNX6.cs @@ -69,8 +69,8 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - uint sectors = QNX6_SUPER_BLOCK_SIZE / imagePlugin.GetSectorSize(); - uint bootSectors = QNX6_BOOT_BLOCKS_SIZE / imagePlugin.GetSectorSize(); + uint sectors = QNX6_SUPER_BLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; + uint bootSectors = QNX6_BOOT_BLOCKS_SIZE / imagePlugin.ImageInfo.SectorSize; if(partition.Start + bootSectors + sectors >= partition.End) return false; @@ -97,8 +97,8 @@ namespace DiscImageChef.Filesystems { information = ""; StringBuilder sb = new StringBuilder(); - uint sectors = QNX6_SUPER_BLOCK_SIZE / imagePlugin.GetSectorSize(); - uint bootSectors = QNX6_BOOT_BLOCKS_SIZE / imagePlugin.GetSectorSize(); + uint sectors = QNX6_SUPER_BLOCK_SIZE / imagePlugin.ImageInfo.SectorSize; + uint bootSectors = QNX6_BOOT_BLOCKS_SIZE / imagePlugin.ImageInfo.SectorSize; byte[] audiSector = imagePlugin.ReadSectors(partition.Start, sectors); byte[] sector = imagePlugin.ReadSectors(partition.Start + bootSectors, sectors); diff --git a/DiscImageChef.Filesystems/RBF.cs b/DiscImageChef.Filesystems/RBF.cs index 3eb0d02b0..5996cf631 100644 --- a/DiscImageChef.Filesystems/RBF.cs +++ b/DiscImageChef.Filesystems/RBF.cs @@ -70,7 +70,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 256) return false; + if(imagePlugin.ImageInfo.SectorSize < 256) return false; // Documentation says ID should be sector 0 // I've found that OS-9/X68000 has it on sector 4 @@ -79,10 +79,10 @@ namespace DiscImageChef.Filesystems { RBF_IdSector rbfSb = new RBF_IdSector(); - uint sbSize = (uint)(Marshal.SizeOf(rbfSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(rbfSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(rbfSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(rbfSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; - if(partition.Start + location + sbSize >= imagePlugin.GetSectors()) break; + if(partition.Start + location + sbSize >= imagePlugin.ImageInfo.Sectors) break; byte[] sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(rbfSb)) return false; @@ -104,15 +104,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 256) return; + if(imagePlugin.ImageInfo.SectorSize < 256) return; RBF_IdSector rbfSb = new RBF_IdSector(); RBF_NewIdSector rbf9000Sb = new RBF_NewIdSector(); foreach(ulong location in new[] {0, 4, 15}) { - uint sbSize = (uint)(Marshal.SizeOf(rbfSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(rbfSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(rbfSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(rbfSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(rbfSb)) return; diff --git a/DiscImageChef.Filesystems/RT11.cs b/DiscImageChef.Filesystems/RT11.cs index c5fe8432b..9073a80c0 100644 --- a/DiscImageChef.Filesystems/RT11.cs +++ b/DiscImageChef.Filesystems/RT11.cs @@ -69,7 +69,7 @@ namespace DiscImageChef.Filesystems { if(1 + partition.Start >= partition.End) return false; - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; byte[] magicB = new byte[12]; byte[] hbSector = imagePlugin.ReadSector(1 + partition.Start); diff --git a/DiscImageChef.Filesystems/Reiser.cs b/DiscImageChef.Filesystems/Reiser.cs index 28c171ee0..1bfc19685 100644 --- a/DiscImageChef.Filesystems/Reiser.cs +++ b/DiscImageChef.Filesystems/Reiser.cs @@ -72,15 +72,15 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - uint sbAddr = REISER_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = REISER_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; Reiser_Superblock reiserSb = new Reiser_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(reiserSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(reiserSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; if(partition.Start + sbAddr + sbSize >= partition.End) return false; @@ -99,15 +99,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; - uint sbAddr = REISER_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = REISER_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; Reiser_Superblock reiserSb = new Reiser_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(reiserSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(reiserSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + sbAddr, sbSize); if(sector.Length < Marshal.SizeOf(reiserSb)) return; diff --git a/DiscImageChef.Filesystems/Reiser4.cs b/DiscImageChef.Filesystems/Reiser4.cs index 202de725e..6aabe4b31 100644 --- a/DiscImageChef.Filesystems/Reiser4.cs +++ b/DiscImageChef.Filesystems/Reiser4.cs @@ -71,15 +71,15 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - uint sbAddr = REISER4_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = REISER4_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; Reiser4_Superblock reiserSb = new Reiser4_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(reiserSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(reiserSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; if(partition.Start + sbAddr + sbSize >= partition.End) return false; @@ -97,15 +97,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; - uint sbAddr = REISER4_SUPER_OFFSET / imagePlugin.GetSectorSize(); + uint sbAddr = REISER4_SUPER_OFFSET / imagePlugin.ImageInfo.SectorSize; if(sbAddr == 0) sbAddr = 1; Reiser4_Superblock reiserSb = new Reiser4_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(reiserSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(reiserSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(reiserSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + sbAddr, sbSize); if(sector.Length < Marshal.SizeOf(reiserSb)) return; @@ -131,7 +131,8 @@ namespace DiscImageChef.Filesystems { Type = "Reiser 4 filesystem", ClusterSize = reiserSb.blocksize, - Clusters = (long)((partition.End - partition.Start) * imagePlugin.GetSectorSize() / reiserSb.blocksize), + Clusters = + (long)((partition.End - partition.Start) * imagePlugin.ImageInfo.SectorSize / reiserSb.blocksize), VolumeName = StringHandlers.CToString(reiserSb.label, CurrentEncoding), VolumeSerial = reiserSb.uuid.ToString() }; diff --git a/DiscImageChef.Filesystems/SolarFS.cs b/DiscImageChef.Filesystems/SolarFS.cs index ab6b535ba..1b539dd3e 100644 --- a/DiscImageChef.Filesystems/SolarFS.cs +++ b/DiscImageChef.Filesystems/SolarFS.cs @@ -141,22 +141,22 @@ namespace DiscImageChef.Filesystems sb.AppendLine("Solar_OS filesystem"); sb.AppendFormat("Media descriptor: 0x{0:X2}", bpb.media).AppendLine(); sb.AppendFormat("{0} bytes per sector", bpb.bps).AppendLine(); - if(imagePlugin.GetSectorSize() == 2336 || imagePlugin.GetSectorSize() == 2352 || - imagePlugin.GetSectorSize() == 2448) + if(imagePlugin.ImageInfo.SectorSize == 2336 || imagePlugin.ImageInfo.SectorSize == 2352 || + imagePlugin.ImageInfo.SectorSize == 2448) { - if(bpb.bps != imagePlugin.GetSectorSize()) + if(bpb.bps != imagePlugin.ImageInfo.SectorSize) sb .AppendFormat("WARNING: Filesystem describes a {0} bytes/sector, while device describes a {1} bytes/sector", bpb.bps, 2048).AppendLine(); } - else if(bpb.bps != imagePlugin.GetSectorSize()) + else if(bpb.bps != imagePlugin.ImageInfo.SectorSize) sb .AppendFormat("WARNING: Filesystem describes a {0} bytes/sector, while device describes a {1} bytes/sector", - bpb.bps, imagePlugin.GetSectorSize()).AppendLine(); + bpb.bps, imagePlugin.ImageInfo.SectorSize).AppendLine(); sb.AppendFormat("{0} sectors on volume ({1} bytes)", bpb.sectors, bpb.sectors * bpb.bps).AppendLine(); - if(bpb.sectors > imagePlugin.GetSectors()) + if(bpb.sectors > imagePlugin.ImageInfo.Sectors) sb.AppendFormat("WARNING: Filesystem describes a {0} sectors volume, bigger than device ({1} sectors)", - bpb.sectors, imagePlugin.GetSectors()); + bpb.sectors, imagePlugin.ImageInfo.Sectors); sb.AppendFormat("{0} heads", bpb.heads).AppendLine(); sb.AppendFormat("{0} sectors per track", bpb.sptrk).AppendLine(); sb.AppendFormat("Volume name: {0}", bpb.vol_name).AppendLine(); diff --git a/DiscImageChef.Filesystems/SysV.cs b/DiscImageChef.Filesystems/SysV.cs index f088e3589..89bd5fd23 100644 --- a/DiscImageChef.Filesystems/SysV.cs +++ b/DiscImageChef.Filesystems/SysV.cs @@ -90,9 +90,9 @@ namespace DiscImageChef.Filesystems byte sb_size_in_sectors; - if(imagePlugin.GetSectorSize() <= 0x400 + if(imagePlugin.ImageInfo.SectorSize <= 0x400 ) // Check if underlying device sector size is smaller than SuperBlock size - sb_size_in_sectors = (byte)(0x400 / imagePlugin.GetSectorSize()); + sb_size_in_sectors = (byte)(0x400 / imagePlugin.ImageInfo.SectorSize); else sb_size_in_sectors = 1; // If not a single sector can store it if(partition.End <= partition.Start + 4 * (ulong)sb_size_in_sectors + sb_size_in_sectors @@ -158,8 +158,8 @@ namespace DiscImageChef.Filesystems if(s_fsize >= V7_MAXSIZE || s_nfree >= V7_NICFREE || s_ninode >= V7_NICINOD) continue; - if(s_fsize * 1024 == (partition.End - partition.Start) * imagePlugin.GetSectorSize() || - s_fsize * 512 == (partition.End - partition.Start) * imagePlugin.GetSectorSize()) return true; + if(s_fsize * 1024 == (partition.End - partition.Start) * imagePlugin.ImageInfo.SectorSize || + s_fsize * 512 == (partition.End - partition.Start) * imagePlugin.ImageInfo.SectorSize) return true; } return false; @@ -182,9 +182,9 @@ namespace DiscImageChef.Filesystems byte sb_size_in_sectors; int offset = 0; - if(imagePlugin.GetSectorSize() <= 0x400 + if(imagePlugin.ImageInfo.SectorSize <= 0x400 ) // Check if underlying device sector size is smaller than SuperBlock size - sb_size_in_sectors = (byte)(0x400 / imagePlugin.GetSectorSize()); + sb_size_in_sectors = (byte)(0x400 / imagePlugin.ImageInfo.SectorSize); else sb_size_in_sectors = 1; // If not a single sector can store it // Sectors in a cylinder int spc = (int)(imagePlugin.ImageInfo.Heads * imagePlugin.ImageInfo.SectorsPerTrack); @@ -301,8 +301,8 @@ namespace DiscImageChef.Filesystems if(s_fsize >= V7_MAXSIZE || s_nfree >= V7_NICFREE || s_ninode >= V7_NICINOD) continue; - if(s_fsize * 1024 != (partition.End - partition.Start) * imagePlugin.GetSectorSize() && - s_fsize * 512 != (partition.End - partition.Start) * imagePlugin.GetSectorSize()) continue; + if(s_fsize * 1024 != (partition.End - partition.Start) * imagePlugin.ImageInfo.SectorSize && + s_fsize * 512 != (partition.End - partition.Start) * imagePlugin.ImageInfo.SectorSize) continue; sys7th = true; BigEndianBitConverter.IsLittleEndian = true; @@ -395,8 +395,8 @@ namespace DiscImageChef.Filesystems break; } - if(imagePlugin.GetSectorSize() == 2336 || imagePlugin.GetSectorSize() == 2352 || - imagePlugin.GetSectorSize() == 2448) + if(imagePlugin.ImageInfo.SectorSize == 2336 || imagePlugin.ImageInfo.SectorSize == 2352 || + imagePlugin.ImageInfo.SectorSize == 2448) { if(bs != 2048) sb @@ -405,10 +405,10 @@ namespace DiscImageChef.Filesystems } else { - if(bs != imagePlugin.GetSectorSize()) + if(bs != imagePlugin.ImageInfo.SectorSize) sb .AppendFormat("WARNING: Filesystem indicates {0} bytes/block while device indicates {1} bytes/sector", - bs, imagePlugin.GetSectorSize()).AppendLine(); + bs, imagePlugin.ImageInfo.SectorSize).AppendLine(); } sb.AppendFormat("{0} zones on volume ({1} bytes)", xnx_sb.s_fsize, xnx_sb.s_fsize * bs).AppendLine(); sb.AppendFormat("{0} free zones on volume ({1} bytes)", xnx_sb.s_tfree, xnx_sb.s_tfree * bs) @@ -593,7 +593,7 @@ namespace DiscImageChef.Filesystems XmlFsType.Clusters = coh_sb.s_fsize; sb.AppendLine("Coherent UNIX filesystem"); - if(imagePlugin.GetSectorSize() != 512) + if(imagePlugin.ImageInfo.SectorSize != 512) sb .AppendFormat("WARNING: Filesystem indicates {0} bytes/block while device indicates {1} bytes/sector", 512, 2048).AppendLine(); @@ -649,7 +649,7 @@ namespace DiscImageChef.Filesystems XmlFsType.ClusterSize = 512; XmlFsType.Clusters = v7_sb.s_fsize; sb.AppendLine("UNIX 7th Edition filesystem"); - if(imagePlugin.GetSectorSize() != 512) + if(imagePlugin.ImageInfo.SectorSize != 512) sb .AppendFormat("WARNING: Filesystem indicates {0} bytes/block while device indicates {1} bytes/sector", 512, 2048).AppendLine(); diff --git a/DiscImageChef.Filesystems/UCSDPascal/File.cs b/DiscImageChef.Filesystems/UCSDPascal/File.cs index 7d9af2160..3d014b837 100644 --- a/DiscImageChef.Filesystems/UCSDPascal/File.cs +++ b/DiscImageChef.Filesystems/UCSDPascal/File.cs @@ -79,7 +79,8 @@ namespace DiscImageChef.Filesystems.UCSDPascal if(error != Errno.NoError) return error; byte[] tmp = device.ReadSectors((ulong)entry.firstBlock, (uint)(entry.lastBlock - entry.firstBlock)); - file = new byte[(entry.lastBlock - entry.firstBlock - 1) * device.GetSectorSize() + entry.lastBytes]; + file = new byte[(entry.lastBlock - entry.firstBlock - 1) * device.ImageInfo.SectorSize + + entry.lastBytes]; Array.Copy(tmp, 0, file, 0, file.Length); } @@ -110,7 +111,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal stat = new FileEntryInfo { Attributes = FileAttributes.System, - BlockSize = device.GetSectorSize(), + BlockSize = device.ImageInfo.SectorSize, DeviceNo = 0, GID = 0, Inode = 0, @@ -141,12 +142,12 @@ namespace DiscImageChef.Filesystems.UCSDPascal { Attributes = FileAttributes.File, Blocks = entry.lastBlock - entry.firstBlock, - BlockSize = device.GetSectorSize(), + BlockSize = device.ImageInfo.SectorSize, DeviceNo = 0, GID = 0, Inode = 0, LastWriteTimeUtc = DateHandlers.UcsdPascalToDateTime(entry.mtime), - Length = (entry.lastBlock - entry.firstBlock) * device.GetSectorSize() + entry.lastBytes, + Length = (entry.lastBlock - entry.firstBlock) * device.ImageInfo.SectorSize + entry.lastBytes, Links = 1, Mode = 0x124, UID = 0 diff --git a/DiscImageChef.Filesystems/UCSDPascal/Info.cs b/DiscImageChef.Filesystems/UCSDPascal/Info.cs index ce91db0ac..d8c8220d5 100644 --- a/DiscImageChef.Filesystems/UCSDPascal/Info.cs +++ b/DiscImageChef.Filesystems/UCSDPascal/Info.cs @@ -68,7 +68,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal // Last volume record block must be after first block, and before end of device if(volEntry.lastBlock <= volEntry.firstBlock || - (ulong)volEntry.lastBlock > imagePlugin.GetSectors() - 2) return false; + (ulong)volEntry.lastBlock > imagePlugin.ImageInfo.Sectors - 2) return false; // Volume record entry type must be volume or secure if(volEntry.entryType != PascalFileKind.Volume && volEntry.entryType != PascalFileKind.Secure) return false; @@ -77,7 +77,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal if(volEntry.volumeName[0] > 7) return false; // Volume blocks is equal to volume sectors - if(volEntry.blocks < 0 || (ulong)volEntry.blocks != imagePlugin.GetSectors()) return false; + if(volEntry.blocks < 0 || (ulong)volEntry.blocks != imagePlugin.ImageInfo.Sectors) return false; // There can be not less than zero files return volEntry.files >= 0; @@ -88,7 +88,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal StringBuilder sbInformation = new StringBuilder(); information = ""; - if(imagePlugin.GetSectors() < 3) return; + if(imagePlugin.ImageInfo.Sectors < 3) return; // Blocks 0 and 1 are boot code byte[] volBlock = imagePlugin.ReadSector(2 + partition.Start); @@ -113,7 +113,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal // Last volume record block must be after first block, and before end of device if(volEntry.lastBlock <= volEntry.firstBlock || - (ulong)volEntry.lastBlock > imagePlugin.GetSectors() - 2) return; + (ulong)volEntry.lastBlock > imagePlugin.ImageInfo.Sectors - 2) return; // Volume record entry type must be volume or secure if(volEntry.entryType != PascalFileKind.Volume && volEntry.entryType != PascalFileKind.Secure) return; @@ -122,7 +122,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal if(volEntry.volumeName[0] > 7) return; // Volume blocks is equal to volume sectors - if(volEntry.blocks < 0 || (ulong)volEntry.blocks != imagePlugin.GetSectors()) return; + if(volEntry.blocks < 0 || (ulong)volEntry.blocks != imagePlugin.ImageInfo.Sectors) return; // There can be not less than zero files if(volEntry.files < 0) return; @@ -144,7 +144,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal { Bootable = !ArrayHelpers.ArrayIsNullOrEmpty(imagePlugin.ReadSectors(partition.Start, 2)), Clusters = volEntry.blocks, - ClusterSize = (int)imagePlugin.GetSectorSize(), + ClusterSize = (int)imagePlugin.ImageInfo.SectorSize, Files = volEntry.files, FilesSpecified = true, Type = "UCSD Pascal", diff --git a/DiscImageChef.Filesystems/UCSDPascal/Super.cs b/DiscImageChef.Filesystems/UCSDPascal/Super.cs index 2ef6f16fb..d5f41fff8 100644 --- a/DiscImageChef.Filesystems/UCSDPascal/Super.cs +++ b/DiscImageChef.Filesystems/UCSDPascal/Super.cs @@ -47,7 +47,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal public override Errno Mount(bool debug) { this.debug = debug; - if(device.GetSectors() < 3) return Errno.InvalidArgument; + if(device.ImageInfo.Sectors < 3) return Errno.InvalidArgument; // Blocks 0 and 1 are boot code catalogBlocks = device.ReadSector(2); @@ -66,10 +66,10 @@ namespace DiscImageChef.Filesystems.UCSDPascal mountedVolEntry.tail = BigEndianBitConverter.ToInt32(catalogBlocks, 0x16); if(mountedVolEntry.firstBlock != 0 || mountedVolEntry.lastBlock <= mountedVolEntry.firstBlock || - (ulong)mountedVolEntry.lastBlock > device.GetSectors() - 2 || + (ulong)mountedVolEntry.lastBlock > device.ImageInfo.Sectors - 2 || mountedVolEntry.entryType != PascalFileKind.Volume && mountedVolEntry.entryType != PascalFileKind.Secure || mountedVolEntry.volumeName[0] > 7 || - mountedVolEntry.blocks < 0 || (ulong)mountedVolEntry.blocks != device.GetSectors() || + mountedVolEntry.blocks < 0 || (ulong)mountedVolEntry.blocks != device.ImageInfo.Sectors || mountedVolEntry.files < 0) return Errno.InvalidArgument; catalogBlocks = device.ReadSectors(2, (uint)(mountedVolEntry.lastBlock - mountedVolEntry.firstBlock - 2)); @@ -100,7 +100,7 @@ namespace DiscImageChef.Filesystems.UCSDPascal { Bootable = !ArrayHelpers.ArrayIsNullOrEmpty(bootBlocks), Clusters = mountedVolEntry.blocks, - ClusterSize = (int)device.GetSectorSize(), + ClusterSize = (int)device.ImageInfo.SectorSize, Files = mountedVolEntry.files, FilesSpecified = true, Type = "UCSD Pascal", diff --git a/DiscImageChef.Filesystems/UNICOS.cs b/DiscImageChef.Filesystems/UNICOS.cs index 3dee0d3c5..3dcfb052a 100644 --- a/DiscImageChef.Filesystems/UNICOS.cs +++ b/DiscImageChef.Filesystems/UNICOS.cs @@ -80,12 +80,12 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; UNICOS_Superblock unicosSb = new UNICOS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(unicosSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(unicosSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(unicosSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(unicosSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(unicosSb)) return false; @@ -101,12 +101,12 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; UNICOS_Superblock unicosSb = new UNICOS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(unicosSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(unicosSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(unicosSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(unicosSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(unicosSb)) return; diff --git a/DiscImageChef.Filesystems/UNIXBFS.cs b/DiscImageChef.Filesystems/UNIXBFS.cs index 2d2964607..c08f777d9 100644 --- a/DiscImageChef.Filesystems/UNIXBFS.cs +++ b/DiscImageChef.Filesystems/UNIXBFS.cs @@ -120,7 +120,7 @@ namespace DiscImageChef.Filesystems XmlFsType = new FileSystemType(); XmlFsType.Type = "BFS"; XmlFsType.VolumeName = bfsSb.s_volume; - XmlFsType.ClusterSize = (int)imagePlugin.GetSectorSize(); + XmlFsType.ClusterSize = (int)imagePlugin.ImageInfo.SectorSize; XmlFsType.Clusters = (long)(partition.End - partition.Start + 1); information = sb.ToString(); diff --git a/DiscImageChef.Filesystems/XFS.cs b/DiscImageChef.Filesystems/XFS.cs index b0d91bb8c..58a4109cb 100644 --- a/DiscImageChef.Filesystems/XFS.cs +++ b/DiscImageChef.Filesystems/XFS.cs @@ -68,15 +68,15 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; // Misaligned if(imagePlugin.ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { XFS_Superblock xfsSb = new XFS_Superblock(); - uint sbSize = (uint)((Marshal.SizeOf(xfsSb) + 0x400) / imagePlugin.GetSectorSize()); - if((Marshal.SizeOf(xfsSb) + 0x400) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)((Marshal.SizeOf(xfsSb) + 0x400) / imagePlugin.ImageInfo.SectorSize); + if((Marshal.SizeOf(xfsSb) + 0x400) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(xfsSb)) return false; @@ -100,8 +100,8 @@ namespace DiscImageChef.Filesystems { XFS_Superblock xfsSb = new XFS_Superblock(); - uint sbSize = (uint)(Marshal.SizeOf(xfsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(xfsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(xfsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(xfsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(xfsSb)) return false; @@ -120,15 +120,15 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; XFS_Superblock xfsSb = new XFS_Superblock(); // Misaligned if(imagePlugin.ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { - uint sbSize = (uint)((Marshal.SizeOf(xfsSb) + 0x400) / imagePlugin.GetSectorSize()); - if((Marshal.SizeOf(xfsSb) + 0x400) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)((Marshal.SizeOf(xfsSb) + 0x400) / imagePlugin.ImageInfo.SectorSize); + if((Marshal.SizeOf(xfsSb) + 0x400) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(xfsSb)) return; @@ -150,8 +150,8 @@ namespace DiscImageChef.Filesystems else foreach(ulong location in new[] {0, 1, 2}) { - uint sbSize = (uint)(Marshal.SizeOf(xfsSb) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(xfsSb) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(xfsSb) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(xfsSb) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start + location, sbSize); if(sector.Length < Marshal.SizeOf(xfsSb)) return; diff --git a/DiscImageChef.Filesystems/Xia.cs b/DiscImageChef.Filesystems/Xia.cs index 842214598..2b781630a 100644 --- a/DiscImageChef.Filesystems/Xia.cs +++ b/DiscImageChef.Filesystems/Xia.cs @@ -75,8 +75,8 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { int sbSizeInBytes = Marshal.SizeOf(typeof(XiaSuperBlock)); - uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.GetSectorSize()); - if(sbSizeInBytes % imagePlugin.GetSectorSize() > 0) sbSizeInSectors++; + uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.ImageInfo.SectorSize); + if(sbSizeInBytes % imagePlugin.ImageInfo.SectorSize > 0) sbSizeInSectors++; if(sbSizeInSectors + partition.Start >= partition.End) return false; byte[] sbSector = imagePlugin.ReadSectors(partition.Start, sbSizeInSectors); @@ -95,8 +95,8 @@ namespace DiscImageChef.Filesystems StringBuilder sb = new StringBuilder(); int sbSizeInBytes = Marshal.SizeOf(typeof(XiaSuperBlock)); - uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.GetSectorSize()); - if(sbSizeInBytes % imagePlugin.GetSectorSize() > 0) sbSizeInSectors++; + uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.ImageInfo.SectorSize); + if(sbSizeInBytes % imagePlugin.ImageInfo.SectorSize > 0) sbSizeInSectors++; byte[] sbSector = imagePlugin.ReadSectors(partition.Start, sbSizeInSectors); IntPtr sbPtr = Marshal.AllocHGlobal(sbSizeInBytes); diff --git a/DiscImageChef.Filesystems/ZFS.cs b/DiscImageChef.Filesystems/ZFS.cs index cdbd1e5e0..b947fb189 100644 --- a/DiscImageChef.Filesystems/ZFS.cs +++ b/DiscImageChef.Filesystems/ZFS.cs @@ -101,7 +101,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; byte[] sector; ulong magic; @@ -123,7 +123,7 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; byte[] sector; ulong magic; diff --git a/DiscImageChef.Filesystems/dump.cs b/DiscImageChef.Filesystems/dump.cs index ccab6ab57..4d46f2f12 100644 --- a/DiscImageChef.Filesystems/dump.cs +++ b/DiscImageChef.Filesystems/dump.cs @@ -122,7 +122,7 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; // It should be start of a tape or floppy or file if(partition.Start != 0) return false; @@ -131,8 +131,8 @@ namespace DiscImageChef.Filesystems spcl_aix aixHdr = new spcl_aix(); s_spcl newHdr = new s_spcl(); - uint sbSize = (uint)(Marshal.SizeOf(newHdr) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(newHdr) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(newHdr) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(newHdr) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(newHdr)) return false; @@ -164,7 +164,7 @@ namespace DiscImageChef.Filesystems public override void GetInformation(ImagePlugin imagePlugin, Partition partition, out string information) { information = ""; - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; if(partition.Start != 0) return; @@ -172,8 +172,8 @@ namespace DiscImageChef.Filesystems spcl_aix aixHdr = new spcl_aix(); s_spcl newHdr = new s_spcl(); - uint sbSize = (uint)(Marshal.SizeOf(newHdr) / imagePlugin.GetSectorSize()); - if(Marshal.SizeOf(newHdr) % imagePlugin.GetSectorSize() != 0) sbSize++; + uint sbSize = (uint)(Marshal.SizeOf(newHdr) / imagePlugin.ImageInfo.SectorSize); + if(Marshal.SizeOf(newHdr) % imagePlugin.ImageInfo.SectorSize != 0) sbSize++; byte[] sector = imagePlugin.ReadSectors(partition.Start, sbSize); if(sector.Length < Marshal.SizeOf(newHdr)) return; @@ -469,10 +469,9 @@ namespace DiscImageChef.Filesystems public int di_mtimensec; /* 28: Last modified time. */ public int di_ctime; /* 32: Last inode change time. */ public int di_ctimensec; /* 36: Last inode change time. */ - [MarshalAs(UnmanagedType.ByValArray, SizeConst = NDADDR)] - public ufs_daddr_t[] di_db; /* 40: Direct disk blocks. */ + [MarshalAs(UnmanagedType.ByValArray, SizeConst = NDADDR)] public int[] di_db; /* 40: Direct disk blocks. */ [MarshalAs(UnmanagedType.ByValArray, SizeConst = NIADDR)] - public ufs_daddr_t[] di_ib; /* 88: Indirect disk blocks. */ + public int[] di_ib; /* 88: Indirect disk blocks. */ public uint di_flags; /* 100: Status flags (chflags). */ public uint di_blocks; /* 104: Blocks actually held. */ public int di_gen; /* 108: Generation number. */ diff --git a/DiscImageChef.Filesystems/ext2FS.cs b/DiscImageChef.Filesystems/ext2FS.cs index 49e6e8fd4..fcc260e87 100644 --- a/DiscImageChef.Filesystems/ext2FS.cs +++ b/DiscImageChef.Filesystems/ext2FS.cs @@ -185,14 +185,14 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - ulong sbSectorOff = SB_POS / imagePlugin.GetSectorSize(); - uint sbOff = SB_POS % imagePlugin.GetSectorSize(); + ulong sbSectorOff = SB_POS / imagePlugin.ImageInfo.SectorSize; + uint sbOff = SB_POS % imagePlugin.ImageInfo.SectorSize; if(sbSectorOff + partition.Start >= partition.End) return false; int sbSizeInBytes = Marshal.SizeOf(typeof(ext2FSSuperBlock)); - uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.GetSectorSize()); - if(sbSizeInBytes % imagePlugin.GetSectorSize() > 0) sbSizeInSectors++; + uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.ImageInfo.SectorSize); + if(sbSizeInBytes % imagePlugin.ImageInfo.SectorSize > 0) sbSizeInSectors++; byte[] sbSector = imagePlugin.ReadSectors(sbSectorOff + partition.Start, sbSizeInSectors); byte[] sb = new byte[sbSizeInBytes]; @@ -214,11 +214,11 @@ namespace DiscImageChef.Filesystems bool ext4 = false; int sbSizeInBytes = Marshal.SizeOf(typeof(ext2FSSuperBlock)); - uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.GetSectorSize()); - if(sbSizeInBytes % imagePlugin.GetSectorSize() > 0) sbSizeInSectors++; + uint sbSizeInSectors = (uint)(sbSizeInBytes / imagePlugin.ImageInfo.SectorSize); + if(sbSizeInBytes % imagePlugin.ImageInfo.SectorSize > 0) sbSizeInSectors++; - ulong sbSectorOff = SB_POS / imagePlugin.GetSectorSize(); - uint sbOff = SB_POS % imagePlugin.GetSectorSize(); + ulong sbSectorOff = SB_POS / imagePlugin.ImageInfo.SectorSize; + uint sbOff = SB_POS % imagePlugin.ImageInfo.SectorSize; byte[] sbSector = imagePlugin.ReadSectors(sbSectorOff + partition.Start, sbSizeInSectors); byte[] sblock = new byte[sbSizeInBytes]; diff --git a/DiscImageChef.Filesystems/extFS.cs b/DiscImageChef.Filesystems/extFS.cs index 806390f11..08519e2bd 100644 --- a/DiscImageChef.Filesystems/extFS.cs +++ b/DiscImageChef.Filesystems/extFS.cs @@ -73,10 +73,10 @@ namespace DiscImageChef.Filesystems public override bool Identify(ImagePlugin imagePlugin, Partition partition) { - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - ulong sbSectorOff = SB_POS / imagePlugin.GetSectorSize(); - uint sbOff = SB_POS % imagePlugin.GetSectorSize(); + ulong sbSectorOff = SB_POS / imagePlugin.ImageInfo.SectorSize; + uint sbOff = SB_POS % imagePlugin.ImageInfo.SectorSize; if(sbSectorOff + partition.Start >= partition.End) return false; @@ -95,10 +95,10 @@ namespace DiscImageChef.Filesystems StringBuilder sb = new StringBuilder(); - if(imagePlugin.GetSectorSize() < 512) return; + if(imagePlugin.ImageInfo.SectorSize < 512) return; - ulong sbSectorOff = SB_POS / imagePlugin.GetSectorSize(); - uint sbOff = SB_POS % imagePlugin.GetSectorSize(); + ulong sbSectorOff = SB_POS / imagePlugin.ImageInfo.SectorSize; + uint sbOff = SB_POS % imagePlugin.ImageInfo.SectorSize; if(sbSectorOff + partition.Start >= partition.End) return; @@ -136,7 +136,7 @@ namespace DiscImageChef.Filesystems FreeClusters = extSb.freecountblk, FreeClustersSpecified = true, ClusterSize = 1024, - Clusters = (long)((partition.End - partition.Start + 1) * imagePlugin.GetSectorSize() / 1024) + Clusters = (long)((partition.End - partition.Start + 1) * imagePlugin.ImageInfo.SectorSize / 1024) }; information = sb.ToString(); diff --git a/DiscImageChef.Partitions/Acorn.cs b/DiscImageChef.Partitions/Acorn.cs index 9e4ad0840..26ef9b6af 100644 --- a/DiscImageChef.Partitions/Acorn.cs +++ b/DiscImageChef.Partitions/Acorn.cs @@ -65,8 +65,8 @@ namespace DiscImageChef.Partitions // RISC OS always checks for the partition on 0. Afaik no emulator chains it. if(sectorOffset != 0) return false; - if(imagePlugin.GetSectorSize() > ADFS_SB_POS) sbSector = 0; - else sbSector = ADFS_SB_POS / imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize > ADFS_SB_POS) sbSector = 0; + else sbSector = ADFS_SB_POS / imagePlugin.ImageInfo.SectorSize; byte[] sector = imagePlugin.ReadSector(sbSector); @@ -84,7 +84,7 @@ namespace DiscImageChef.Partitions int secCyl = bootBlock.discRecord.spt * heads; int mapSector = bootBlock.startCylinder * secCyl; - if((ulong)mapSector >= imagePlugin.GetSectors()) return false; + if((ulong)mapSector >= imagePlugin.ImageInfo.Sectors) return false; byte[] map = imagePlugin.ReadSector((ulong)mapSector); diff --git a/DiscImageChef.Partitions/AppleMap.cs b/DiscImageChef.Partitions/AppleMap.cs index 209a232d1..d61869f46 100644 --- a/DiscImageChef.Partitions/AppleMap.cs +++ b/DiscImageChef.Partitions/AppleMap.cs @@ -63,12 +63,12 @@ namespace DiscImageChef.Partitions { uint sectorSize; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448) sectorSize = 2048; - else sectorSize = imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448) sectorSize = 2048; + else sectorSize = imagePlugin.ImageInfo.SectorSize; partitions = new List(); - if(sectorOffset + 2 >= imagePlugin.GetSectors()) return false; + if(sectorOffset + 2 >= imagePlugin.ImageInfo.Sectors) return false; byte[] ddmSector = imagePlugin.ReadSector(sectorOffset); diff --git a/DiscImageChef.Partitions/Apricot.cs b/DiscImageChef.Partitions/Apricot.cs index 5c497511e..49cb08b91 100644 --- a/DiscImageChef.Partitions/Apricot.cs +++ b/DiscImageChef.Partitions/Apricot.cs @@ -79,7 +79,7 @@ namespace DiscImageChef.Partitions Marshal.FreeHGlobal(lblPtr); // Not much to check but... - ulong deviceSectors = imagePlugin.GetSectors(); + ulong deviceSectors = imagePlugin.ImageInfo.Sectors; ulong deviceSizeAccordingToLabel = label.cylinders * label.heads * label.spt; if(label.operatingSystem > 4 || label.bootType > 5 || label.partitionCount > 8 || deviceSizeAccordingToLabel > deviceSectors || label.firstDataBlock > deviceSectors) return false; diff --git a/DiscImageChef.Partitions/Atari.cs b/DiscImageChef.Partitions/Atari.cs index edbde643b..1298281bf 100644 --- a/DiscImageChef.Partitions/Atari.cs +++ b/DiscImageChef.Partitions/Atari.cs @@ -65,7 +65,7 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; @@ -159,13 +159,13 @@ namespace DiscImageChef.Partitions case TypeMinix2: validTable = true; - if(table.entries[i].start <= imagePlugin.GetSectors()) + if(table.entries[i].start <= imagePlugin.ImageInfo.Sectors) { - if(table.entries[i].start + table.entries[i].length > imagePlugin.GetSectors()) + if(table.entries[i].start + table.entries[i].length > imagePlugin.ImageInfo.Sectors) DicConsole.DebugWriteLine("Atari partition plugin", "WARNING: End of partition goes beyond device size"); - ulong sectorSize = imagePlugin.GetSectorSize(); + ulong sectorSize = imagePlugin.ImageInfo.SectorSize; if(sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; byte[] partType = new byte[3]; @@ -253,14 +253,14 @@ namespace DiscImageChef.Partitions extendedType != TypeMinix2) continue; validTable = true; - if(extendedTable.entries[j].start > imagePlugin.GetSectors()) continue; + if(extendedTable.entries[j].start > imagePlugin.ImageInfo.Sectors) continue; if(extendedTable.entries[j].start + extendedTable.entries[j].length > - imagePlugin.GetSectors()) + imagePlugin.ImageInfo.Sectors) DicConsole.DebugWriteLine("Atari partition plugin", "WARNING: End of partition goes beyond device size"); - ulong sectorSize = imagePlugin.GetSectorSize(); + ulong sectorSize = imagePlugin.ImageInfo.SectorSize; if(sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; byte[] partType = new byte[3]; @@ -335,13 +335,13 @@ namespace DiscImageChef.Partitions type != TypeRAW && type != TypeNetBSD && type != TypeNetBSDSwap && type != TypeSysV && type != TypeMac && type != TypeMinix && type != TypeMinix2) continue; - if(table.icdEntries[i].start > imagePlugin.GetSectors()) continue; + if(table.icdEntries[i].start > imagePlugin.ImageInfo.Sectors) continue; - if(table.icdEntries[i].start + table.icdEntries[i].length > imagePlugin.GetSectors()) + if(table.icdEntries[i].start + table.icdEntries[i].length > imagePlugin.ImageInfo.Sectors) DicConsole.DebugWriteLine("Atari partition plugin", "WARNING: End of partition goes beyond device size"); - ulong sectorSize = imagePlugin.GetSectorSize(); + ulong sectorSize = imagePlugin.ImageInfo.SectorSize; if(sectorSize == 2448 || sectorSize == 2352) sectorSize = 2048; byte[] partType = new byte[3]; diff --git a/DiscImageChef.Partitions/BSD.cs b/DiscImageChef.Partitions/BSD.cs index 865f23e47..f160853e3 100644 --- a/DiscImageChef.Partitions/BSD.cs +++ b/DiscImageChef.Partitions/BSD.cs @@ -60,15 +60,15 @@ namespace DiscImageChef.Partitions public override bool GetInformation(ImagePlugin imagePlugin, out List partitions, ulong sectorOffset) { partitions = new List(); - uint run = (MAX_LABEL_SIZE + labelOffsets.Last()) / imagePlugin.GetSectorSize(); - if((MAX_LABEL_SIZE + labelOffsets.Last()) % imagePlugin.GetSectorSize() > 0) run++; + uint run = (MAX_LABEL_SIZE + labelOffsets.Last()) / imagePlugin.ImageInfo.SectorSize; + if((MAX_LABEL_SIZE + labelOffsets.Last()) % imagePlugin.ImageInfo.SectorSize > 0) run++; DiskLabel dl = new DiskLabel(); bool found = false; foreach(ulong location in labelLocations) { - if(location + run + sectorOffset >= imagePlugin.GetSectors()) return false; + if(location + run + sectorOffset >= imagePlugin.ImageInfo.Sectors) return false; byte[] tmp = imagePlugin.ReadSectors(location + sectorOffset, run); foreach(uint offset in labelOffsets) @@ -141,9 +141,9 @@ namespace DiscImageChef.Partitions dl.d_partitions[i].p_fstype, fsTypeToString(dl.d_partitions[i].p_fstype)); Partition part = new Partition { - Start = dl.d_partitions[i].p_offset * dl.d_secsize / imagePlugin.GetSectorSize(), + Start = dl.d_partitions[i].p_offset * dl.d_secsize / imagePlugin.ImageInfo.SectorSize, Offset = dl.d_partitions[i].p_offset * dl.d_secsize, - Length = dl.d_partitions[i].p_size * dl.d_secsize / imagePlugin.GetSectorSize(), + Length = dl.d_partitions[i].p_size * dl.d_secsize / imagePlugin.ImageInfo.SectorSize, Size = dl.d_partitions[i].p_size * dl.d_secsize, Type = fsTypeToString(dl.d_partitions[i].p_fstype), Sequence = counter, @@ -156,7 +156,7 @@ namespace DiscImageChef.Partitions if(addSectorOffset) { part.Start += sectorOffset; - part.Offset += sectorOffset * imagePlugin.GetSectorSize(); + part.Offset += sectorOffset * imagePlugin.ImageInfo.SectorSize; } DicConsole.DebugWriteLine("BSD plugin", "part.start = {0}", part.Start); DicConsole.DebugWriteLine("BSD plugin", "Adding it..."); diff --git a/DiscImageChef.Partitions/DEC.cs b/DiscImageChef.Partitions/DEC.cs index 862394136..c1f896c77 100644 --- a/DiscImageChef.Partitions/DEC.cs +++ b/DiscImageChef.Partitions/DEC.cs @@ -54,7 +54,7 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(31 + sectorOffset >= imagePlugin.GetSectors()) return false; + if(31 + sectorOffset >= imagePlugin.ImageInfo.Sectors) return false; byte[] sector = imagePlugin.ReadSector(31 + sectorOffset); if(sector.Length < 512) return false; diff --git a/DiscImageChef.Partitions/DragonFlyBSD.cs b/DiscImageChef.Partitions/DragonFlyBSD.cs index a814c9b86..2ce96dc2b 100644 --- a/DiscImageChef.Partitions/DragonFlyBSD.cs +++ b/DiscImageChef.Partitions/DragonFlyBSD.cs @@ -51,10 +51,10 @@ namespace DiscImageChef.Partitions public override bool GetInformation(ImagePlugin imagePlugin, out List partitions, ulong sectorOffset) { partitions = new List(); - uint nSectors = 2048 / imagePlugin.GetSectorSize(); - if(2048 % imagePlugin.GetSectorSize() > 0) nSectors++; + uint nSectors = 2048 / imagePlugin.ImageInfo.SectorSize; + if(2048 % imagePlugin.ImageInfo.SectorSize > 0) nSectors++; - if(sectorOffset + nSectors >= imagePlugin.GetSectors()) return false; + if(sectorOffset + nSectors >= imagePlugin.ImageInfo.Sectors) return false; byte[] sectors = imagePlugin.ReadSectors(sectorOffset, nSectors); if(sectors.Length < 2048) return false; @@ -72,10 +72,10 @@ namespace DiscImageChef.Partitions { Partition part = new Partition { - Start = entry.p_boffset / imagePlugin.GetSectorSize() + sectorOffset, - Offset = entry.p_boffset + sectorOffset * imagePlugin.GetSectorSize(), + Start = entry.p_boffset / imagePlugin.ImageInfo.SectorSize + sectorOffset, + Offset = entry.p_boffset + sectorOffset * imagePlugin.ImageInfo.SectorSize, Size = entry.p_bsize, - Length = entry.p_bsize / imagePlugin.GetSectorSize(), + Length = entry.p_bsize / imagePlugin.ImageInfo.SectorSize, Name = entry.p_stor_uuid.ToString(), Sequence = counter, Scheme = Name, @@ -84,7 +84,7 @@ namespace DiscImageChef.Partitions : BSD.fsTypeToString((BSD.fsType)entry.p_fstype) }; - if(entry.p_bsize % imagePlugin.GetSectorSize() > 0) part.Length++; + if(entry.p_bsize % imagePlugin.ImageInfo.SectorSize > 0) part.Length++; if(entry.p_bsize <= 0 || entry.p_boffset <= 0) continue; diff --git a/DiscImageChef.Partitions/GPT.cs b/DiscImageChef.Partitions/GPT.cs index 14cd5e6c1..91edab1fe 100644 --- a/DiscImageChef.Partitions/GPT.cs +++ b/DiscImageChef.Partitions/GPT.cs @@ -55,7 +55,7 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(sectorOffset + 2 >= imagePlugin.GetSectors()) return false; + if(sectorOffset + 2 >= imagePlugin.ImageInfo.Sectors) return false; byte[] hdrBytes = imagePlugin.ReadSector(1 + sectorOffset); GptHeader hdr; @@ -121,11 +121,11 @@ namespace DiscImageChef.Partitions { divisor = 1; modulo = 0; - sectorSize = imagePlugin.GetSectorSize(); + sectorSize = imagePlugin.ImageInfo.SectorSize; } - uint totalEntriesSectors = hdr.entries * hdr.entriesSize / imagePlugin.GetSectorSize(); - if(hdr.entries * hdr.entriesSize % imagePlugin.GetSectorSize() > 0) totalEntriesSectors++; + uint totalEntriesSectors = hdr.entries * hdr.entriesSize / imagePlugin.ImageInfo.SectorSize; + if(hdr.entries * hdr.entriesSize % imagePlugin.ImageInfo.SectorSize > 0) totalEntriesSectors++; byte[] temp = imagePlugin.ReadSectors(hdr.entryLBA / divisor, totalEntriesSectors + modulo); byte[] entriesBytes = new byte[temp.Length - modulo * 512]; @@ -165,8 +165,8 @@ namespace DiscImageChef.Partitions DicConsole.DebugWriteLine("GPT Plugin", "entry.attributes = 0x{0:X16}", entry.attributes); DicConsole.DebugWriteLine("GPT Plugin", "entry.name = {0}", entry.name); - if(entry.startLBA / divisor > imagePlugin.GetSectors() || - entry.endLBA / divisor > imagePlugin.GetSectors()) return false; + if(entry.startLBA / divisor > imagePlugin.ImageInfo.Sectors || + entry.endLBA / divisor > imagePlugin.ImageInfo.Sectors) return false; Partition part = new Partition { diff --git a/DiscImageChef.Partitions/Human68k.cs b/DiscImageChef.Partitions/Human68k.cs index e8de04438..839d66609 100644 --- a/DiscImageChef.Partitions/Human68k.cs +++ b/DiscImageChef.Partitions/Human68k.cs @@ -57,11 +57,11 @@ namespace DiscImageChef.Partitions byte[] sector; ulong sectsPerUnit; - DicConsole.DebugWriteLine("Human68k plugin", "sectorSize = {0}", imagePlugin.GetSectorSize()); + DicConsole.DebugWriteLine("Human68k plugin", "sectorSize = {0}", imagePlugin.ImageInfo.SectorSize); - if(sectorOffset + 4 >= imagePlugin.GetSectors()) return false; + if(sectorOffset + 4 >= imagePlugin.ImageInfo.Sectors) return false; - switch(imagePlugin.GetSectorSize()) + switch(imagePlugin.ImageInfo.SectorSize) { case 256: sector = imagePlugin.ReadSector(4 + sectorOffset); @@ -100,7 +100,7 @@ namespace DiscImageChef.Partitions DicConsole.DebugWriteLine("Human68k plugin", "entry.stateStart = {0}", entry.stateStart); DicConsole.DebugWriteLine("Human68k plugin", "entry.length = {0}", entry.length); DicConsole.DebugWriteLine("Human68k plugin", "sectsPerUnit = {0} {1}", sectsPerUnit, - imagePlugin.GetSectorSize()); + imagePlugin.ImageInfo.SectorSize); Partition part = new Partition { diff --git a/DiscImageChef.Partitions/MBR.cs b/DiscImageChef.Partitions/MBR.cs index a83888832..a903a024a 100644 --- a/DiscImageChef.Partitions/MBR.cs +++ b/DiscImageChef.Partitions/MBR.cs @@ -196,9 +196,9 @@ namespace DiscImageChef.Partitions partitions = new List(); - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - uint sectorSize = imagePlugin.GetSectorSize(); + uint sectorSize = imagePlugin.ImageInfo.SectorSize; // Divider of sector size in MBR between real sector size ulong divider = 1; @@ -300,14 +300,15 @@ namespace DiscImageChef.Partitions if(minix && lbaStart == sectorOffset) minix = false; - if(lbaStart > imagePlugin.GetSectors()) + if(lbaStart > imagePlugin.ImageInfo.Sectors) { valid = false; extended = false; } // Some buggy implementations do some rounding errors getting a few sectors beyond device size - if(lbaStart + lbaSectors > imagePlugin.GetSectors()) lbaSectors = imagePlugin.GetSectors() - lbaStart; + if(lbaStart + lbaSectors > imagePlugin.ImageInfo.Sectors) + lbaSectors = imagePlugin.ImageInfo.Sectors - lbaStart; DicConsole.DebugWriteLine("MBR plugin", "entry.status {0}", entry.status); DicConsole.DebugWriteLine("MBR plugin", "entry.type {0}", entry.type); @@ -436,11 +437,11 @@ namespace DiscImageChef.Partitions } extStart += lbaStart; - extValid &= extStart <= imagePlugin.GetSectors(); + extValid &= extStart <= imagePlugin.ImageInfo.Sectors; // Some buggy implementations do some rounding errors getting a few sectors beyond device size - if(extStart + extSectors > imagePlugin.GetSectors()) - extSectors = imagePlugin.GetSectors() - extStart; + if(extStart + extSectors > imagePlugin.ImageInfo.Sectors) + extSectors = imagePlugin.ImageInfo.Sectors - extStart; if(extValid && extMinix) // Let's mix the fun if(GetMinix(imagePlugin, lbaStart, divider, sectorOffset, sectorSize, @@ -473,7 +474,7 @@ namespace DiscImageChef.Partitions DicConsole.DebugWriteLine("MBR plugin", "next_start {0}", nextStart); processingExtended &= nextStart != 0; - processingExtended &= nextStart <= imagePlugin.GetSectors(); + processingExtended &= nextStart <= imagePlugin.ImageInfo.Sectors; lbaStart = nextStart; } } diff --git a/DiscImageChef.Partitions/NeXT.cs b/DiscImageChef.Partitions/NeXT.cs index 3e936544e..4f1322470 100644 --- a/DiscImageChef.Partitions/NeXT.cs +++ b/DiscImageChef.Partitions/NeXT.cs @@ -68,8 +68,8 @@ namespace DiscImageChef.Partitions uint sectorSize; - if(imagePlugin.GetSectorSize() == 2352 || imagePlugin.GetSectorSize() == 2448) sectorSize = 2048; - else sectorSize = imagePlugin.GetSectorSize(); + if(imagePlugin.ImageInfo.SectorSize == 2352 || imagePlugin.ImageInfo.SectorSize == 2448) sectorSize = 2048; + else sectorSize = imagePlugin.ImageInfo.SectorSize; partitions = new List(); @@ -77,7 +77,8 @@ namespace DiscImageChef.Partitions ulong labelPosition = 0; - foreach(ulong i in new ulong[] {0, 4, 15, 16}.TakeWhile(i => i + sectorOffset < imagePlugin.GetSectors())) + foreach(ulong i in + new ulong[] {0, 4, 15, 16}.TakeWhile(i => i + sectorOffset < imagePlugin.ImageInfo.Sectors)) { labelSector = imagePlugin.ReadSector(i + sectorOffset); uint magic = BigEndianBitConverter.ToUInt32(labelSector, 0x00); diff --git a/DiscImageChef.Partitions/PC98.cs b/DiscImageChef.Partitions/PC98.cs index 254c34ccb..f189f2d45 100644 --- a/DiscImageChef.Partitions/PC98.cs +++ b/DiscImageChef.Partitions/PC98.cs @@ -100,11 +100,11 @@ namespace DiscImageChef.Partitions Sequence = counter, Scheme = Name }; - part.Offset = part.Start * imagePlugin.GetSectorSize(); + part.Offset = part.Start * imagePlugin.ImageInfo.SectorSize; part.Length = CHS.ToLBA(entry.dp_ecyl, entry.dp_ehd, (uint)(entry.dp_esect + 1), imagePlugin.ImageInfo.Heads, imagePlugin.ImageInfo.SectorsPerTrack) - part.Start; - part.Size = part.Length * imagePlugin.GetSectorSize(); + part.Size = part.Length * imagePlugin.ImageInfo.SectorSize; DicConsole.DebugWriteLine("PC98 plugin", "part.Start = {0}", part.Start); DicConsole.DebugWriteLine("PC98 plugin", "part.Type = {0}", part.Type); diff --git a/DiscImageChef.Partitions/Plan9.cs b/DiscImageChef.Partitions/Plan9.cs index 1f85c17da..80f37cc09 100644 --- a/DiscImageChef.Partitions/Plan9.cs +++ b/DiscImageChef.Partitions/Plan9.cs @@ -55,7 +55,7 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(sectorOffset + 2 >= imagePlugin.GetSectors()) return false; + if(sectorOffset + 2 >= imagePlugin.ImageInfo.Sectors) return false; byte[] sector = imagePlugin.ReadSector(sectorOffset + 1); // While all of Plan9 is supposedly UTF-8, it uses ASCII strcmp for reading its partition table @@ -69,10 +69,10 @@ namespace DiscImageChef.Partitions Partition part = new Partition { Length = end - start + 1, - Offset = (start + sectorOffset) * imagePlugin.GetSectorSize(), + Offset = (start + sectorOffset) * imagePlugin.ImageInfo.SectorSize, Scheme = Name, Sequence = (ulong)partitions.Count, - Size = (end - start + 1) * imagePlugin.GetSectorSize(), + Size = (end - start + 1) * imagePlugin.ImageInfo.SectorSize, Start = start + sectorOffset, Type = tokens[1] }; diff --git a/DiscImageChef.Partitions/RDB.cs b/DiscImageChef.Partitions/RDB.cs index 2075df8d4..eb3c89b91 100644 --- a/DiscImageChef.Partitions/RDB.cs +++ b/DiscImageChef.Partitions/RDB.cs @@ -290,9 +290,9 @@ namespace DiscImageChef.Partitions while(rdbBlock < 16) { - if(imagePlugin.GetSectors() <= rdbBlock) return false; + if(imagePlugin.ImageInfo.Sectors <= rdbBlock) return false; - if(rdbBlock + sectorOffset >= imagePlugin.GetSectors()) break; + if(rdbBlock + sectorOffset >= imagePlugin.ImageInfo.Sectors) break; byte[] tmpSector = imagePlugin.ReadSector(rdbBlock + sectorOffset); uint magic = BigEndianBitConverter.ToUInt32(tmpSector, 0); diff --git a/DiscImageChef.Partitions/SGI.cs b/DiscImageChef.Partitions/SGI.cs index 3d03c2139..826db486f 100644 --- a/DiscImageChef.Partitions/SGI.cs +++ b/DiscImageChef.Partitions/SGI.cs @@ -121,9 +121,12 @@ namespace DiscImageChef.Partitions Partition part = new Partition { - Start = dvh.partitions[i].first_block * dvh.device_params.dp_secbytes / imagePlugin.GetSectorSize(), + Start = + dvh.partitions[i].first_block * dvh.device_params.dp_secbytes / + imagePlugin.ImageInfo.SectorSize, Offset = dvh.partitions[i].first_block * dvh.device_params.dp_secbytes, - Length = dvh.partitions[i].num_blocks * dvh.device_params.dp_secbytes / imagePlugin.GetSectorSize(), + Length = + dvh.partitions[i].num_blocks * dvh.device_params.dp_secbytes / imagePlugin.ImageInfo.SectorSize, Size = dvh.partitions[i].num_blocks * dvh.device_params.dp_secbytes, Type = TypeToString(dvh.partitions[i].type), Sequence = counter, diff --git a/DiscImageChef.Partitions/Sun.cs b/DiscImageChef.Partitions/Sun.cs index 3cc98af54..cc9147a7d 100644 --- a/DiscImageChef.Partitions/Sun.cs +++ b/DiscImageChef.Partitions/Sun.cs @@ -80,9 +80,9 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(imagePlugin.GetSectorSize() < 512) return false; + if(imagePlugin.ImageInfo.SectorSize < 512) return false; - if(sectorOffset + 2 >= imagePlugin.GetSectors()) return false; + if(sectorOffset + 2 >= imagePlugin.ImageInfo.Sectors) return false; bool useDkl = false, useDkl8 = false, useDkl16 = false; @@ -161,16 +161,17 @@ namespace DiscImageChef.Partitions Partition part = new Partition { Size = (ulong)dkl.dkl_map[i].dkl_nblk * DK_LABEL_SIZE, - Length = (ulong)(dkl.dkl_map[i].dkl_nblk * DK_LABEL_SIZE / imagePlugin.GetSectorSize()), + Length = + (ulong)(dkl.dkl_map[i].dkl_nblk * DK_LABEL_SIZE / imagePlugin.ImageInfo.SectorSize), Sequence = (ulong)i, Offset = ((ulong)dkl.dkl_map[i].dkl_cylno * sectorsPerCylinder + sectorOffset) * DK_LABEL_SIZE, Start = ((ulong)dkl.dkl_map[i].dkl_cylno * sectorsPerCylinder + sectorOffset) * - DK_LABEL_SIZE / imagePlugin.GetSectorSize(), + DK_LABEL_SIZE / imagePlugin.ImageInfo.SectorSize, Type = "SunOS partition", Scheme = Name }; - if(part.Start < imagePlugin.GetSectors() && part.End <= imagePlugin.GetSectors()) + if(part.Start < imagePlugin.ImageInfo.Sectors && part.End <= imagePlugin.ImageInfo.Sectors) partitions.Add(part); } } @@ -227,12 +228,13 @@ namespace DiscImageChef.Partitions { Description = SunFlagsToString(dkl8.dkl_vtoc.v_part[i].p_flag), Size = (ulong)dkl8.dkl_map[i].dkl_nblk * DK_LABEL_SIZE, - Length = (ulong)(dkl8.dkl_map[i].dkl_nblk * DK_LABEL_SIZE / imagePlugin.GetSectorSize()), + Length = + (ulong)(dkl8.dkl_map[i].dkl_nblk * DK_LABEL_SIZE / imagePlugin.ImageInfo.SectorSize), Sequence = (ulong)i, Offset = ((ulong)dkl8.dkl_map[i].dkl_cylno * sectorsPerCylinder + sectorOffset) * DK_LABEL_SIZE, Start = ((ulong)dkl8.dkl_map[i].dkl_cylno * sectorsPerCylinder + sectorOffset) * - DK_LABEL_SIZE / imagePlugin.GetSectorSize(), + DK_LABEL_SIZE / imagePlugin.ImageInfo.SectorSize, Type = SunIdToString(dkl8.dkl_vtoc.v_part[i].p_tag), Scheme = Name }; @@ -240,7 +242,7 @@ namespace DiscImageChef.Partitions part.Description += $"\nPartition timestamped on {DateHandlers.UnixToDateTime(dkl8.dkl_vtoc.v_timestamp[i])}"; - if(part.Start < imagePlugin.GetSectors() && part.End <= imagePlugin.GetSectors()) + if(part.Start < imagePlugin.ImageInfo.Sectors && part.End <= imagePlugin.ImageInfo.Sectors) partitions.Add(part); } } @@ -295,19 +297,19 @@ namespace DiscImageChef.Partitions Size = (ulong)dkl16.dkl_vtoc.v_part[i].p_size * dkl16.dkl_vtoc.v_sectorsz, Length = (ulong)(dkl16.dkl_vtoc.v_part[i].p_size * dkl16.dkl_vtoc.v_sectorsz / - imagePlugin.GetSectorSize()), + imagePlugin.ImageInfo.SectorSize), Sequence = (ulong)i, Offset = ((ulong)dkl16.dkl_vtoc.v_part[i].p_start + sectorOffset) * dkl16.dkl_vtoc.v_sectorsz, Start = ((ulong)dkl16.dkl_vtoc.v_part[i].p_start + sectorOffset) * - dkl16.dkl_vtoc.v_sectorsz / imagePlugin.GetSectorSize(), + dkl16.dkl_vtoc.v_sectorsz / imagePlugin.ImageInfo.SectorSize, Type = SunIdToString(dkl16.dkl_vtoc.v_part[i].p_tag), Scheme = Name }; if(dkl16.dkl_vtoc.v_timestamp[i] != 0) part.Description += $"\nPartition timestamped on {DateHandlers.UnixToDateTime(dkl16.dkl_vtoc.v_timestamp[i])}"; - if(part.Start < imagePlugin.GetSectors() && part.End <= imagePlugin.GetSectors()) + if(part.Start < imagePlugin.ImageInfo.Sectors && part.End <= imagePlugin.ImageInfo.Sectors) partitions.Add(part); } } diff --git a/DiscImageChef.Partitions/VTOC.cs b/DiscImageChef.Partitions/VTOC.cs index c913385b4..228a8471f 100644 --- a/DiscImageChef.Partitions/VTOC.cs +++ b/DiscImageChef.Partitions/VTOC.cs @@ -65,7 +65,8 @@ namespace DiscImageChef.Partitions bool magicFound = false; bool absolute = false; - foreach(ulong i in new ulong[] {0, 1, 8, 29}.TakeWhile(i => i + sectorOffset < imagePlugin.GetSectors())) + foreach(ulong i in + new ulong[] {0, 1, 8, 29}.TakeWhile(i => i + sectorOffset < imagePlugin.ImageInfo.Sectors)) { pdsector = imagePlugin.ReadSector(i + sectorOffset); magic = BitConverter.ToUInt32(pdsector, 4); @@ -204,14 +205,14 @@ namespace DiscImageChef.Partitions if(!magicFound) { DicConsole.DebugWriteLine("VTOC plugin", "Searching for VTOC on relative byte {0}", pd.vtoc_ptr); - ulong relSecPtr = pd.vtoc_ptr / imagePlugin.GetSectorSize(); - uint relSecOff = pd.vtoc_ptr % imagePlugin.GetSectorSize(); - uint secCount = (relSecOff + pd.vtoc_len) / imagePlugin.GetSectorSize(); - if((relSecOff + pd.vtoc_len) % imagePlugin.GetSectorSize() > 0) secCount++; + ulong relSecPtr = pd.vtoc_ptr / imagePlugin.ImageInfo.SectorSize; + uint relSecOff = pd.vtoc_ptr % imagePlugin.ImageInfo.SectorSize; + uint secCount = (relSecOff + pd.vtoc_len) / imagePlugin.ImageInfo.SectorSize; + if((relSecOff + pd.vtoc_len) % imagePlugin.ImageInfo.SectorSize > 0) secCount++; DicConsole.DebugWriteLine("VTOC plugin", "Going to read {0} sectors from sector {1}, getting VTOC from byte {2}", secCount, relSecPtr + sectorOffset, relSecOff); - if(relSecPtr + sectorOffset + secCount >= imagePlugin.GetSectors()) + if(relSecPtr + sectorOffset + secCount >= imagePlugin.ImageInfo.Sectors) { DicConsole.DebugWriteLine("VTOC plugin", "Going to read past device size, aborting..."); return false; @@ -330,8 +331,8 @@ namespace DiscImageChef.Partitions { Partition part = new Partition { - Start = (ulong)(parts[i].p_start * bps) / imagePlugin.GetSectorSize(), - Length = (ulong)(parts[i].p_size * bps) / imagePlugin.GetSectorSize(), + Start = (ulong)(parts[i].p_start * bps) / imagePlugin.ImageInfo.SectorSize, + Length = (ulong)(parts[i].p_size * bps) / imagePlugin.ImageInfo.SectorSize, Offset = (ulong)(parts[i].p_start * bps), Size = (ulong)(parts[i].p_size * bps), Sequence = (ulong)i, @@ -344,7 +345,7 @@ namespace DiscImageChef.Partitions if(!useOld && !absolute) { part.Start += sectorOffset; - part.Offset += sectorOffset * imagePlugin.GetSectorSize(); + part.Offset += sectorOffset * imagePlugin.ImageInfo.SectorSize; } if(parts[i].p_flag.HasFlag(pFlag.V_VALID)) info += " (valid)"; @@ -356,7 +357,7 @@ namespace DiscImageChef.Partitions part.Description = "UNIX slice" + info + "."; - if(part.End < imagePlugin.GetSectors()) partitions.Add(part); + if(part.End < imagePlugin.ImageInfo.Sectors) partitions.Add(part); } return partitions.Count > 0; diff --git a/DiscImageChef.Partitions/XENIX.cs b/DiscImageChef.Partitions/XENIX.cs index c57db4553..df61dbb04 100644 --- a/DiscImageChef.Partitions/XENIX.cs +++ b/DiscImageChef.Partitions/XENIX.cs @@ -58,7 +58,7 @@ namespace DiscImageChef.Partitions { partitions = new List(); - if(42 + sectorOffset >= imagePlugin.GetSectors()) return false; + if(42 + sectorOffset >= imagePlugin.ImageInfo.Sectors) return false; byte[] tblsector = imagePlugin.ReadSector(42 + sectorOffset); @@ -80,19 +80,19 @@ namespace DiscImageChef.Partitions Partition part = new Partition { Start = - (ulong)((xnxtbl.p[i].p_off + XENIX_OFFSET) * XENIX_BSIZE) / imagePlugin.GetSectorSize() + + (ulong)((xnxtbl.p[i].p_off + XENIX_OFFSET) * XENIX_BSIZE) / imagePlugin.ImageInfo.SectorSize + sectorOffset, - Length = (ulong)(xnxtbl.p[i].p_size * XENIX_BSIZE) / imagePlugin.GetSectorSize(), + Length = (ulong)(xnxtbl.p[i].p_size * XENIX_BSIZE) / imagePlugin.ImageInfo.SectorSize, Offset = (ulong)((xnxtbl.p[i].p_off + XENIX_OFFSET) * XENIX_BSIZE) + - imagePlugin.GetSectorSize() * sectorOffset, + imagePlugin.ImageInfo.SectorSize * sectorOffset, Size = (ulong)(xnxtbl.p[i].p_size * XENIX_BSIZE), Sequence = (ulong)i, Type = "XENIX", Scheme = Name }; - if(part.End < imagePlugin.GetSectors()) partitions.Add(part); + if(part.End < imagePlugin.ImageInfo.Sectors) partitions.Add(part); } return partitions.Count > 0; diff --git a/DiscImageChef.Tests/Filesystems/Xia.cs b/DiscImageChef.Tests/Filesystems/Xia.cs index fbfd06283..07d816868 100644 --- a/DiscImageChef.Tests/Filesystems/Xia.cs +++ b/DiscImageChef.Tests/Filesystems/Xia.cs @@ -39,19 +39,19 @@ namespace DiscImageChef.Tests.Filesystems [TestFixture] public class XiaMbr { - readonly string[] testfiles = {"linux.vdi.lz"}; + readonly string[] testfiles = {"linux.vdi.lz", "linux-files.vdi.lz"}; - readonly ulong[] sectors = {1024000}; + readonly ulong[] sectors = {1024000, 2048000}; - readonly uint[] sectorsize = {512}; + readonly uint[] sectorsize = {512, 512}; - readonly long[] clusters = {511528}; + readonly long[] clusters = {511528, 1023088}; - readonly int[] clustersize = {1024}; + readonly int[] clustersize = {1024, 1024}; - readonly string[] volumename = {null}; + readonly string[] volumename = {null, null}; - readonly string[] volumeserial = {null}; + readonly string[] volumeserial = {null, null}; [Test] public void Test() diff --git a/DiscImageChef/Commands/Analyze.cs b/DiscImageChef/Commands/Analyze.cs index 9b8aa9822..d04eb861b 100644 --- a/DiscImageChef/Commands/Analyze.cs +++ b/DiscImageChef/Commands/Analyze.cs @@ -106,12 +106,12 @@ namespace DiscImageChef.Commands DicConsole.DebugWriteLine("Analyze command", "Correctly opened image file."); DicConsole.DebugWriteLine("Analyze command", "Image without headers is {0} bytes.", - imageFormat.GetImageSize()); - DicConsole.DebugWriteLine("Analyze command", "Image has {0} sectors.", imageFormat.GetSectors()); + imageFormat.ImageInfo.ImageSize); + DicConsole.DebugWriteLine("Analyze command", "Image has {0} sectors.", imageFormat.ImageInfo.Sectors); DicConsole.DebugWriteLine("Analyze command", "Image identifies disk type as {0}.", - imageFormat.GetMediaType()); + imageFormat.ImageInfo.MediaType); - Core.Statistics.AddMediaFormat(imageFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(imageFormat.ImageFormat); Core.Statistics.AddMedia(imageFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); } @@ -198,8 +198,8 @@ namespace DiscImageChef.Commands Partition wholePart = new Partition { Name = "Whole device", - Length = imageFormat.GetSectors(), - Size = imageFormat.GetSectors() * imageFormat.GetSectorSize() + Length = imageFormat.ImageInfo.Sectors, + Size = imageFormat.ImageInfo.Sectors * imageFormat.ImageInfo.SectorSize }; Core.Filesystems.Identify(imageFormat, out idPlugins, wholePart); diff --git a/DiscImageChef/Commands/Checksum.cs b/DiscImageChef/Commands/Checksum.cs index bb81bd567..9f1b0e634 100644 --- a/DiscImageChef/Commands/Checksum.cs +++ b/DiscImageChef/Commands/Checksum.cs @@ -82,7 +82,7 @@ namespace DiscImageChef.Commands } inputFormat.OpenImage(inputFilter); - Core.Statistics.AddMediaFormat(inputFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(inputFormat.ImageFormat); Core.Statistics.AddMedia(inputFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); EnableChecksum enabledChecksums = new EnableChecksum(); @@ -101,7 +101,7 @@ namespace DiscImageChef.Commands Core.Checksum mediaChecksum = null; - if(inputFormat.ImageInfo.ImageHasPartitions) + if(inputFormat.ImageInfo.HasPartitions) try { Core.Checksum trackChecksum = null; @@ -110,7 +110,7 @@ namespace DiscImageChef.Commands ulong previousTrackEnd = 0; - List inputTracks = inputFormat.GetTracks(); + List inputTracks = inputFormat.Tracks; foreach(Track currentTrack in inputTracks) { if(currentTrack.TrackStartSector - previousTrackEnd != 0 && options.WholeDisc) @@ -171,8 +171,8 @@ namespace DiscImageChef.Commands previousTrackEnd = currentTrack.TrackEndSector; } - if(inputFormat.GetSectors() - previousTrackEnd != 0 && options.WholeDisc) - for(ulong i = previousTrackEnd + 1; i < inputFormat.GetSectors(); i++) + if(inputFormat.ImageInfo.Sectors - previousTrackEnd != 0 && options.WholeDisc) + for(ulong i = previousTrackEnd + 1; i < inputFormat.ImageInfo.Sectors; i++) { DicConsole.Write("\rHashing track-less sector {0}", i); @@ -194,7 +194,7 @@ namespace DiscImageChef.Commands { mediaChecksum = new Core.Checksum(enabledChecksums); - ulong sectors = inputFormat.GetSectors(); + ulong sectors = inputFormat.ImageInfo.Sectors; DicConsole.WriteLine("Sectors {0}", sectors); ulong doneSectors = 0; diff --git a/DiscImageChef/Commands/Compare.cs b/DiscImageChef/Commands/Compare.cs index 54f89f1fc..d8a652a57 100644 --- a/DiscImageChef/Commands/Compare.cs +++ b/DiscImageChef/Commands/Compare.cs @@ -94,8 +94,8 @@ namespace DiscImageChef.Commands input1Format.OpenImage(inputFilter1); input2Format.OpenImage(inputFilter2); - Core.Statistics.AddMediaFormat(input1Format.GetImageFormat()); - Core.Statistics.AddMediaFormat(input2Format.GetImageFormat()); + Core.Statistics.AddMediaFormat(input1Format.ImageFormat); + Core.Statistics.AddMediaFormat(input2Format.ImageFormat); Core.Statistics.AddMedia(input1Format.ImageInfo.MediaType, false); Core.Statistics.AddMedia(input2Format.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter1.Name); @@ -125,55 +125,38 @@ namespace DiscImageChef.Commands Dictionary image1DiskTags = new Dictionary(); Dictionary image2DiskTags = new Dictionary(); - image1Info.ImageHasPartitions = input1Format.ImageHasPartitions(); + image1Info.HasPartitions = input1Format.ImageInfo.HasPartitions; #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - try { image1Sessions = input1Format.GetSessions(); } + try { image1Sessions = input1Format.Sessions; } catch { // ignored } #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - image1Info.ImageHasSessions |= image1Sessions.Count > 0; - image1Info.ImageSize = input1Format.GetImageSize(); - image1Info.Sectors = input1Format.GetSectors(); - image1Info.SectorSize = input1Format.GetSectorSize(); - image1Info.ImageCreationTime = input1Format.GetImageCreationTime(); - image1Info.ImageLastModificationTime = input1Format.GetImageLastModificationTime(); - image1Info.MediaType = input1Format.GetMediaType(); - try { image1Info.ImageVersion = input1Format.GetImageVersion(); } - catch { image1Info.ImageVersion = null; } - try { image1Info.ImageApplication = input1Format.GetImageApplication(); } - catch { image1Info.ImageApplication = null; } - try { image1Info.ImageApplicationVersion = input1Format.GetImageApplicationVersion(); } - catch { image1Info.ImageApplicationVersion = null; } - try { image1Info.ImageCreator = input1Format.GetImageCreator(); } - catch { image1Info.ImageCreator = null; } - try { image1Info.ImageName = input1Format.GetImageName(); } - catch { image1Info.ImageName = null; } - try { image1Info.ImageComments = input1Format.GetImageComments(); } - catch { image1Info.ImageComments = null; } - try { image1Info.MediaManufacturer = input1Format.GetMediaManufacturer(); } - catch { image1Info.MediaManufacturer = null; } - try { image1Info.MediaModel = input1Format.GetMediaModel(); } - catch { image1Info.MediaModel = null; } - try { image1Info.MediaSerialNumber = input1Format.GetMediaSerialNumber(); } - catch { image1Info.MediaSerialNumber = null; } - try { image1Info.MediaBarcode = input1Format.GetMediaBarcode(); } - catch { image1Info.MediaBarcode = null; } - try { image1Info.MediaPartNumber = input1Format.GetMediaPartNumber(); } - catch { image1Info.MediaPartNumber = null; } - try { image1Info.MediaSequence = input1Format.GetMediaSequence(); } - catch { image1Info.MediaSequence = 0; } - try { image1Info.LastMediaSequence = input1Format.GetLastDiskSequence(); } - catch { image1Info.LastMediaSequence = 0; } - try { image1Info.DriveManufacturer = input1Format.GetDriveManufacturer(); } - catch { image1Info.DriveManufacturer = null; } - try { image1Info.DriveModel = input1Format.GetDriveModel(); } - catch { image1Info.DriveModel = null; } - try { image1Info.DriveSerialNumber = input1Format.GetDriveSerialNumber(); } - catch { image1Info.DriveSerialNumber = null; } - try { image1Info.DriveFirmwareRevision = input1Format.ImageInfo.DriveFirmwareRevision; } - catch { image1Info.DriveFirmwareRevision = null; } + image1Info.HasSessions |= image1Sessions.Count > 0; + image1Info.ImageSize = input1Format.ImageInfo.ImageSize; + image1Info.Sectors = input1Format.ImageInfo.Sectors; + image1Info.SectorSize = input1Format.ImageInfo.SectorSize; + image1Info.CreationTime = input1Format.ImageInfo.CreationTime; + image1Info.LastModificationTime = input1Format.ImageInfo.LastModificationTime; + image1Info.MediaType = input1Format.ImageInfo.MediaType; + image1Info.Version = input1Format.ImageInfo.Version; + image1Info.Application = input1Format.ImageInfo.Application; + image1Info.ApplicationVersion = input1Format.ImageInfo.ApplicationVersion; + image1Info.Creator = input1Format.ImageInfo.Creator; + image1Info.MediaTitle = input1Format.ImageInfo.MediaTitle; + image1Info.Comments = input1Format.ImageInfo.Comments; + image1Info.MediaManufacturer = input1Format.ImageInfo.MediaManufacturer; + image1Info.MediaModel = input1Format.ImageInfo.MediaModel; + image1Info.MediaSerialNumber = input1Format.ImageInfo.MediaSerialNumber; + image1Info.MediaBarcode = input1Format.ImageInfo.MediaBarcode; + image1Info.MediaPartNumber = input1Format.ImageInfo.MediaPartNumber; + image1Info.MediaSequence = input1Format.ImageInfo.MediaSequence; + image1Info.LastMediaSequence = input1Format.ImageInfo.LastMediaSequence; + image1Info.DriveManufacturer = input1Format.ImageInfo.DriveManufacturer; + image1Info.DriveModel = input1Format.ImageInfo.DriveModel; + image1Info.DriveSerialNumber = input1Format.ImageInfo.DriveSerialNumber; + image1Info.DriveFirmwareRevision = input1Format.ImageInfo.DriveFirmwareRevision; foreach(MediaTagType disktag in Enum.GetValues(typeof(MediaTagType))) { try @@ -189,55 +172,38 @@ namespace DiscImageChef.Commands #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body } - image2Info.ImageHasPartitions = input2Format.ImageHasPartitions(); + image2Info.HasPartitions = input2Format.ImageInfo.HasPartitions; #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - try { image2Sessions = input2Format.GetSessions(); } + try { image2Sessions = input2Format.Sessions; } catch { // ignored } #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - image2Info.ImageHasSessions |= image2Sessions.Count > 0; - image2Info.ImageSize = input2Format.GetImageSize(); - image2Info.Sectors = input2Format.GetSectors(); - image2Info.SectorSize = input2Format.GetSectorSize(); - image2Info.ImageCreationTime = input2Format.GetImageCreationTime(); - image2Info.ImageLastModificationTime = input2Format.GetImageLastModificationTime(); - image2Info.MediaType = input2Format.GetMediaType(); - try { image2Info.ImageVersion = input2Format.GetImageVersion(); } - catch { image2Info.ImageVersion = null; } - try { image2Info.ImageApplication = input2Format.GetImageApplication(); } - catch { image2Info.ImageApplication = null; } - try { image2Info.ImageApplicationVersion = input2Format.GetImageApplicationVersion(); } - catch { image2Info.ImageApplicationVersion = null; } - try { image2Info.ImageCreator = input2Format.GetImageCreator(); } - catch { image2Info.ImageCreator = null; } - try { image2Info.ImageName = input2Format.GetImageName(); } - catch { image2Info.ImageName = null; } - try { image2Info.ImageComments = input2Format.GetImageComments(); } - catch { image2Info.ImageComments = null; } - try { image2Info.MediaManufacturer = input2Format.GetMediaManufacturer(); } - catch { image2Info.MediaManufacturer = null; } - try { image2Info.MediaModel = input2Format.GetMediaModel(); } - catch { image2Info.MediaModel = null; } - try { image2Info.MediaSerialNumber = input2Format.GetMediaSerialNumber(); } - catch { image2Info.MediaSerialNumber = null; } - try { image2Info.MediaBarcode = input2Format.GetMediaBarcode(); } - catch { image2Info.MediaBarcode = null; } - try { image2Info.MediaPartNumber = input2Format.GetMediaPartNumber(); } - catch { image2Info.MediaPartNumber = null; } - try { image2Info.MediaSequence = input2Format.GetMediaSequence(); } - catch { image2Info.MediaSequence = 0; } - try { image2Info.LastMediaSequence = input2Format.GetLastDiskSequence(); } - catch { image2Info.LastMediaSequence = 0; } - try { image2Info.DriveManufacturer = input2Format.GetDriveManufacturer(); } - catch { image2Info.DriveManufacturer = null; } - try { image2Info.DriveModel = input2Format.GetDriveModel(); } - catch { image2Info.DriveModel = null; } - try { image2Info.DriveSerialNumber = input2Format.GetDriveSerialNumber(); } - catch { image2Info.DriveSerialNumber = null; } - try { image2Info.DriveFirmwareRevision = input2Format.ImageInfo.DriveFirmwareRevision; } - catch { image2Info.DriveFirmwareRevision = null; } + image2Info.HasSessions |= image2Sessions.Count > 0; + image2Info.ImageSize = input2Format.ImageInfo.ImageSize; + image2Info.Sectors = input2Format.ImageInfo.Sectors; + image2Info.SectorSize = input2Format.ImageInfo.SectorSize; + image2Info.CreationTime = input2Format.ImageInfo.CreationTime; + image2Info.LastModificationTime = input2Format.ImageInfo.LastModificationTime; + image2Info.MediaType = input2Format.ImageInfo.MediaType; + image2Info.Version = input2Format.ImageInfo.Version; + image2Info.Application = input2Format.ImageInfo.Application; + image2Info.ApplicationVersion = input2Format.ImageInfo.ApplicationVersion; + image2Info.Creator = input2Format.ImageInfo.Creator; + image2Info.MediaTitle = input2Format.ImageInfo.MediaTitle; + image2Info.Comments = input2Format.ImageInfo.Comments; + image2Info.MediaManufacturer = input2Format.ImageInfo.MediaManufacturer; + image2Info.MediaModel = input2Format.ImageInfo.MediaModel; + image2Info.MediaSerialNumber = input2Format.ImageInfo.MediaSerialNumber; + image2Info.MediaBarcode = input2Format.ImageInfo.MediaBarcode; + image2Info.MediaPartNumber = input2Format.ImageInfo.MediaPartNumber; + image2Info.MediaSequence = input2Format.ImageInfo.MediaSequence; + image2Info.LastMediaSequence = input2Format.ImageInfo.LastMediaSequence; + image2Info.DriveManufacturer = input2Format.ImageInfo.DriveManufacturer; + image2Info.DriveModel = input2Format.ImageInfo.DriveModel; + image2Info.DriveSerialNumber = input2Format.ImageInfo.DriveSerialNumber; + image2Info.DriveFirmwareRevision = input2Format.ImageInfo.DriveFirmwareRevision; foreach(MediaTagType disktag in Enum.GetValues(typeof(MediaTagType))) { try @@ -255,28 +221,28 @@ namespace DiscImageChef.Commands if(options.Verbose) { - sb.AppendFormat("Has partitions?\t{0}\t{1}", image1Info.ImageHasPartitions, - image2Info.ImageHasPartitions).AppendLine(); - sb.AppendFormat("Has sessions?\t{0}\t{1}", image1Info.ImageHasSessions, image2Info.ImageHasSessions) + sb.AppendFormat("Has partitions?\t{0}\t{1}", image1Info.HasPartitions, + image2Info.HasPartitions).AppendLine(); + sb.AppendFormat("Has sessions?\t{0}\t{1}", image1Info.HasSessions, image2Info.HasSessions) .AppendLine(); sb.AppendFormat("Image size\t{0}\t{1}", image1Info.ImageSize, image2Info.ImageSize).AppendLine(); sb.AppendFormat("Sectors\t{0}\t{1}", image1Info.Sectors, image2Info.Sectors).AppendLine(); sb.AppendFormat("Sector size\t{0}\t{1}", image1Info.SectorSize, image2Info.SectorSize).AppendLine(); - sb.AppendFormat("Creation time\t{0}\t{1}", image1Info.ImageCreationTime, image2Info.ImageCreationTime) + sb.AppendFormat("Creation time\t{0}\t{1}", image1Info.CreationTime, image2Info.CreationTime) .AppendLine(); - sb.AppendFormat("Last modification time\t{0}\t{1}", image1Info.ImageLastModificationTime, - image2Info.ImageLastModificationTime).AppendLine(); + sb.AppendFormat("Last modification time\t{0}\t{1}", image1Info.LastModificationTime, + image2Info.LastModificationTime).AppendLine(); sb.AppendFormat("Disk type\t{0}\t{1}", image1Info.MediaType, image2Info.MediaType).AppendLine(); - sb.AppendFormat("Image version\t{0}\t{1}", image1Info.ImageVersion, image2Info.ImageVersion) + sb.AppendFormat("Image version\t{0}\t{1}", image1Info.Version, image2Info.Version) .AppendLine(); - sb.AppendFormat("Image application\t{0}\t{1}", image1Info.ImageApplication, image2Info.ImageApplication) + sb.AppendFormat("Image application\t{0}\t{1}", image1Info.Application, image2Info.Application) .AppendLine(); - sb.AppendFormat("Image application version\t{0}\t{1}", image1Info.ImageApplicationVersion, - image2Info.ImageApplicationVersion).AppendLine(); - sb.AppendFormat("Image creator\t{0}\t{1}", image1Info.ImageCreator, image2Info.ImageCreator) + sb.AppendFormat("Image application version\t{0}\t{1}", image1Info.ApplicationVersion, + image2Info.ApplicationVersion).AppendLine(); + sb.AppendFormat("Image creator\t{0}\t{1}", image1Info.Creator, image2Info.Creator) .AppendLine(); - sb.AppendFormat("Image name\t{0}\t{1}", image1Info.ImageName, image2Info.ImageName).AppendLine(); - sb.AppendFormat("Image comments\t{0}\t{1}", image1Info.ImageComments, image2Info.ImageComments) + sb.AppendFormat("Image name\t{0}\t{1}", image1Info.MediaTitle, image2Info.MediaTitle).AppendLine(); + sb.AppendFormat("Image comments\t{0}\t{1}", image1Info.Comments, image2Info.Comments) .AppendLine(); sb.AppendFormat("Disk manufacturer\t{0}\t{1}", image1Info.MediaManufacturer, image2Info.MediaManufacturer).AppendLine(); @@ -305,12 +271,12 @@ namespace DiscImageChef.Commands DicConsole.WriteLine("Comparing disk image characteristics"); - if(image1Info.ImageHasPartitions != image2Info.ImageHasPartitions) + if(image1Info.HasPartitions != image2Info.HasPartitions) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image partitioned status differ"); } - if(image1Info.ImageHasSessions != image2Info.ImageHasSessions) + if(image1Info.HasSessions != image2Info.HasSessions) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image session status differ"); @@ -330,12 +296,12 @@ namespace DiscImageChef.Commands imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image sector size differ"); } - if(image1Info.ImageCreationTime != image2Info.ImageCreationTime) + if(image1Info.CreationTime != image2Info.CreationTime) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image creation time differ"); } - if(image1Info.ImageLastModificationTime != image2Info.ImageLastModificationTime) + if(image1Info.LastModificationTime != image2Info.LastModificationTime) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image last modification time differ"); @@ -345,32 +311,32 @@ namespace DiscImageChef.Commands imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Disk type differ"); } - if(image1Info.ImageVersion != image2Info.ImageVersion) + if(image1Info.Version != image2Info.Version) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image version differ"); } - if(image1Info.ImageApplication != image2Info.ImageApplication) + if(image1Info.Application != image2Info.Application) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image application differ"); } - if(image1Info.ImageApplicationVersion != image2Info.ImageApplicationVersion) + if(image1Info.ApplicationVersion != image2Info.ApplicationVersion) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image application version differ"); } - if(image1Info.ImageCreator != image2Info.ImageCreator) + if(image1Info.Creator != image2Info.Creator) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image creator differ"); } - if(image1Info.ImageName != image2Info.ImageName) + if(image1Info.MediaTitle != image2Info.MediaTitle) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image name differ"); } - if(image1Info.ImageComments != image2Info.ImageComments) + if(image1Info.Comments != image2Info.Comments) { imagesDiffer = true; if(!options.Verbose) sb.AppendLine("Image comments differ"); diff --git a/DiscImageChef/Commands/CreateSidecar.cs b/DiscImageChef/Commands/CreateSidecar.cs index f7120c3db..152b10446 100644 --- a/DiscImageChef/Commands/CreateSidecar.cs +++ b/DiscImageChef/Commands/CreateSidecar.cs @@ -120,7 +120,7 @@ namespace DiscImageChef.Commands return; } - Core.Statistics.AddMediaFormat(imageFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(imageFormat.ImageFormat); Core.Statistics.AddFilter(inputFilter.Name); CICMMetadataType sidecar = diff --git a/DiscImageChef/Commands/Decode.cs b/DiscImageChef/Commands/Decode.cs index 27b250ba1..bd5e926c9 100644 --- a/DiscImageChef/Commands/Decode.cs +++ b/DiscImageChef/Commands/Decode.cs @@ -71,7 +71,7 @@ namespace DiscImageChef.Commands } inputFormat.OpenImage(inputFilter); - Core.Statistics.AddMediaFormat(inputFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(inputFormat.ImageFormat); Core.Statistics.AddMedia(inputFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); @@ -232,7 +232,7 @@ namespace DiscImageChef.Commands { ulong length; - if(options.Length.ToLowerInvariant() == "all") length = inputFormat.GetSectors() - 1; + if(options.Length.ToLowerInvariant() == "all") length = inputFormat.ImageInfo.Sectors - 1; else { if(!ulong.TryParse(options.Length, out length)) diff --git a/DiscImageChef/Commands/Entropy.cs b/DiscImageChef/Commands/Entropy.cs index b74ec03ed..e50ee627c 100644 --- a/DiscImageChef/Commands/Entropy.cs +++ b/DiscImageChef/Commands/Entropy.cs @@ -70,7 +70,7 @@ namespace DiscImageChef.Commands } inputFormat.OpenImage(inputFilter); - Core.Statistics.AddMediaFormat(inputFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(inputFormat.ImageFormat); Core.Statistics.AddMedia(inputFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); double entropy = 0; @@ -80,7 +80,7 @@ namespace DiscImageChef.Commands if(options.SeparatedTracks) try { - List inputTracks = inputFormat.GetTracks(); + List inputTracks = inputFormat.Tracks; foreach(Track currentTrack in inputTracks) { @@ -134,7 +134,7 @@ namespace DiscImageChef.Commands ulong diskSize = 0; List uniqueSectors = new List(); - sectors = inputFormat.GetSectors(); + sectors = inputFormat.ImageInfo.Sectors; DicConsole.WriteLine("Sectors {0}", sectors); sha1Ctx.Init(); diff --git a/DiscImageChef/Commands/ExtractFiles.cs b/DiscImageChef/Commands/ExtractFiles.cs index abd09b7d9..0b191baf9 100644 --- a/DiscImageChef/Commands/ExtractFiles.cs +++ b/DiscImageChef/Commands/ExtractFiles.cs @@ -114,13 +114,13 @@ namespace DiscImageChef.Commands DicConsole.DebugWriteLine("Extract-Files command", "Correctly opened image file."); DicConsole.DebugWriteLine("Extract-Files command", "Image without headers is {0} bytes.", - imageFormat.GetImageSize()); + imageFormat.ImageInfo.ImageSize); DicConsole.DebugWriteLine("Extract-Files command", "Image has {0} sectors.", - imageFormat.GetSectors()); + imageFormat.ImageInfo.Sectors); DicConsole.DebugWriteLine("Extract-Files command", "Image identifies disk type as {0}.", - imageFormat.GetMediaType()); + imageFormat.ImageInfo.MediaType); - Core.Statistics.AddMediaFormat(imageFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(imageFormat.ImageFormat); Core.Statistics.AddMedia(imageFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); } @@ -458,8 +458,8 @@ namespace DiscImageChef.Commands Partition wholePart = new Partition { Name = "Whole device", - Length = imageFormat.GetSectors(), - Size = imageFormat.GetSectors() * imageFormat.GetSectorSize() + Length = imageFormat.ImageInfo.Sectors, + Size = imageFormat.ImageInfo.Sectors * imageFormat.ImageInfo.SectorSize }; Core.Filesystems.Identify(imageFormat, out idPlugins, wholePart); diff --git a/DiscImageChef/Commands/Ls.cs b/DiscImageChef/Commands/Ls.cs index 9b50f8c7e..91d86b94e 100644 --- a/DiscImageChef/Commands/Ls.cs +++ b/DiscImageChef/Commands/Ls.cs @@ -102,12 +102,12 @@ namespace DiscImageChef.Commands DicConsole.DebugWriteLine("Ls command", "Correctly opened image file."); DicConsole.DebugWriteLine("Ls command", "Image without headers is {0} bytes.", - imageFormat.GetImageSize()); - DicConsole.DebugWriteLine("Ls command", "Image has {0} sectors.", imageFormat.GetSectors()); + imageFormat.ImageInfo.ImageSize); + DicConsole.DebugWriteLine("Ls command", "Image has {0} sectors.", imageFormat.ImageInfo.Sectors); DicConsole.DebugWriteLine("Ls command", "Image identifies disk type as {0}.", - imageFormat.GetMediaType()); + imageFormat.ImageInfo.MediaType); - Core.Statistics.AddMediaFormat(imageFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(imageFormat.ImageFormat); Core.Statistics.AddMedia(imageFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); } @@ -205,8 +205,8 @@ namespace DiscImageChef.Commands Partition wholePart = new Partition { Name = "Whole device", - Length = imageFormat.GetSectors(), - Size = imageFormat.GetSectors() * imageFormat.GetSectorSize() + Length = imageFormat.ImageInfo.Sectors, + Size = imageFormat.ImageInfo.Sectors * imageFormat.ImageInfo.SectorSize }; Core.Filesystems.Identify(imageFormat, out idPlugins, wholePart); diff --git a/DiscImageChef/Commands/Verify.cs b/DiscImageChef/Commands/Verify.cs index 61eb47e6b..46d9baa09 100644 --- a/DiscImageChef/Commands/Verify.cs +++ b/DiscImageChef/Commands/Verify.cs @@ -67,7 +67,7 @@ namespace DiscImageChef.Commands } inputFormat.OpenImage(inputFilter); - Core.Statistics.AddMediaFormat(inputFormat.GetImageFormat()); + Core.Statistics.AddMediaFormat(inputFormat.ImageFormat); Core.Statistics.AddMedia(inputFormat.ImageInfo.MediaType, false); Core.Statistics.AddFilter(inputFilter.Name); @@ -107,7 +107,7 @@ namespace DiscImageChef.Commands bool formatHasTracks; try { - List inputTracks = inputFormat.GetTracks(); + List inputTracks = inputFormat.Tracks; formatHasTracks = inputTracks.Count > 0; } catch { formatHasTracks = false; } @@ -120,7 +120,7 @@ namespace DiscImageChef.Commands if(formatHasTracks) { - List inputTracks = inputFormat.GetTracks(); + List inputTracks = inputFormat.Tracks; ulong currentSectorAll = 0; startCheck = DateTime.UtcNow; @@ -132,7 +132,7 @@ namespace DiscImageChef.Commands while(remainingSectors > 0) { DicConsole.Write("\rChecking sector {0} of {1}, on track {2}", currentSectorAll, - inputFormat.GetSectors(), currentTrack.TrackSequence); + inputFormat.ImageInfo.Sectors, currentTrack.TrackSequence); List tempfailingLbas; List tempunknownLbas; @@ -174,13 +174,13 @@ namespace DiscImageChef.Commands } else { - ulong remainingSectors = inputFormat.GetSectors(); + ulong remainingSectors = inputFormat.ImageInfo.Sectors; ulong currentSector = 0; startCheck = DateTime.UtcNow; while(remainingSectors > 0) { - DicConsole.Write("\rChecking sector {0} of {1}", currentSector, inputFormat.GetSectors()); + DicConsole.Write("\rChecking sector {0} of {1}", currentSector, inputFormat.ImageInfo.Sectors); List tempfailingLbas; List tempunknownLbas; @@ -239,22 +239,22 @@ namespace DiscImageChef.Commands if(options.Verbose) { DicConsole.VerboseWriteLine("LBAs with error:"); - if(failingLbas.Count == (int)inputFormat.GetSectors()) + if(failingLbas.Count == (int)inputFormat.ImageInfo.Sectors) DicConsole.VerboseWriteLine("\tall sectors."); else foreach(ulong t in failingLbas) DicConsole.VerboseWriteLine("\t{0}", t); DicConsole.WriteLine("LBAs without checksum:"); - if(unknownLbas.Count == (int)inputFormat.GetSectors()) + if(unknownLbas.Count == (int)inputFormat.ImageInfo.Sectors) DicConsole.VerboseWriteLine("\tall sectors."); else foreach(ulong t in unknownLbas) DicConsole.VerboseWriteLine("\t{0}", t); } - DicConsole.WriteLine("Total sectors........... {0}", inputFormat.GetSectors()); + DicConsole.WriteLine("Total sectors........... {0}", inputFormat.ImageInfo.Sectors); DicConsole.WriteLine("Total errors............ {0}", failingLbas.Count); DicConsole.WriteLine("Total unknowns.......... {0}", unknownLbas.Count); DicConsole.WriteLine("Total errors+unknowns... {0}", failingLbas.Count + unknownLbas.Count); - totalSectors = (long)inputFormat.GetSectors(); + totalSectors = (long)inputFormat.ImageInfo.Sectors; errorSectors = failingLbas.Count; unknownSectors = unknownLbas.Count; correctSectors = totalSectors - errorSectors - unknownSectors;