Refactor: Simplification and C# 7.

This commit is contained in:
2017-08-08 14:18:31 +01:00
parent 4e9738be08
commit aebe7dd2ac
5 changed files with 239 additions and 150 deletions

View File

@@ -48,16 +48,26 @@ namespace DiscImageChef.Core
// TODO: Complete it
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.AudioMedia = new AudioMediaType[1];
sidecar.AudioMedia[0] = new AudioMediaType();
sidecar.AudioMedia[0].Checksums = imgChecksums.ToArray();
sidecar.AudioMedia[0].Image = new ImageType();
sidecar.AudioMedia[0].Image.format = image.GetImageFormat();
sidecar.AudioMedia[0].Image.offset = 0;
sidecar.AudioMedia[0].Image.offsetSpecified = true;
sidecar.AudioMedia[0].Image.Value = Path.GetFileName(imagePath);
sidecar.AudioMedia[0].Size = fi.Length;
sidecar.AudioMedia[0].Sequence = new SequenceType();
sidecar.AudioMedia = new []
{
new AudioMediaType
{
Checksums = imgChecksums.ToArray(),
Image = new ImageType
{
format = image.GetImageFormat(),
offset = 0,
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length,
Sequence = new SequenceType
{
MediaTitle = image.GetImageName()
}
}
};
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
{
sidecar.AudioMedia[0].Sequence.MediaSequence = image.GetMediaSequence();
@@ -68,7 +78,6 @@ namespace DiscImageChef.Core
sidecar.AudioMedia[0].Sequence.MediaSequence = 1;
sidecar.AudioMedia[0].Sequence.TotalMedia = 1;
}
sidecar.AudioMedia[0].Sequence.MediaTitle = image.GetImageName();
}
}
}

View File

@@ -50,16 +50,26 @@ namespace DiscImageChef.Core
{
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.BlockMedia = new BlockMediaType[1];
sidecar.BlockMedia[0] = new BlockMediaType();
sidecar.BlockMedia[0].Checksums = imgChecksums.ToArray();
sidecar.BlockMedia[0].Image = new ImageType();
sidecar.BlockMedia[0].Image.format = image.GetImageFormat();
sidecar.BlockMedia[0].Image.offset = 0;
sidecar.BlockMedia[0].Image.offsetSpecified = true;
sidecar.BlockMedia[0].Image.Value = Path.GetFileName(imagePath);
sidecar.BlockMedia[0].Size = fi.Length;
sidecar.BlockMedia[0].Sequence = new SequenceType();
sidecar.BlockMedia = new[]
{
new BlockMediaType
{
Checksums = imgChecksums.ToArray(),
Image = new ImageType
{
format = image.GetImageFormat(),
offset = 0,
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length,
Sequence = new SequenceType
{
MediaTitle = image.GetImageName()
}
}
};
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
{
sidecar.BlockMedia[0].Sequence.MediaSequence = image.GetMediaSequence();
@@ -70,30 +80,41 @@ namespace DiscImageChef.Core
sidecar.BlockMedia[0].Sequence.MediaSequence = 1;
sidecar.BlockMedia[0].Sequence.TotalMedia = 1;
}
sidecar.BlockMedia[0].Sequence.MediaTitle = image.GetImageName();
foreach(MediaTagType tagType in image.ImageInfo.readableMediaTags)
{
switch(tagType)
{
case MediaTagType.ATAPI_IDENTIFY:
sidecar.BlockMedia[0].ATA = new ATAType();
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray();
sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length;
sidecar.BlockMedia[0].ATA = new ATAType
{
Identify = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
}
};
break;
case MediaTagType.ATA_IDENTIFY:
sidecar.BlockMedia[0].ATA = new ATAType();
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray();
sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length;
sidecar.BlockMedia[0].ATA = new ATAType
{
Identify = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
}
};
break;
case MediaTagType.PCMCIA_CIS:
byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS);
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType();
sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType();
sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = Checksum.GetChecksums(cis).ToArray();
sidecar.BlockMedia[0].PCMCIA.CIS.Size = cis.Length;
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
{
CIS = new DumpType
{
Checksums = Checksum.GetChecksums(cis).ToArray(),
Size = cis.Length
}
};
Tuple[] tuples = CIS.GetTuples(cis);
if(tuples != null)
{
@@ -127,31 +148,41 @@ namespace DiscImageChef.Core
}
break;
case MediaTagType.SCSI_INQUIRY:
sidecar.BlockMedia[0].SCSI = new SCSIType();
sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType();
sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray();
sidecar.BlockMedia[0].SCSI.Inquiry.Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length;
sidecar.BlockMedia[0].SCSI = new SCSIType
{
Inquiry = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
}
};
break;
case MediaTagType.SD_CID:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType();
sidecar.BlockMedia[0].SecureDigital.CID.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray();
sidecar.BlockMedia[0].SecureDigital.CID.Size = image.ReadDiskTag(MediaTagType.SD_CID).Length;
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_CID).Length
};
break;
case MediaTagType.SD_CSD:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType();
sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray();
sidecar.BlockMedia[0].SecureDigital.CSD.Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length;
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
};
break;
case MediaTagType.SD_ExtendedCSD:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length;
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length
};
break;
}
}
@@ -198,8 +229,7 @@ namespace DiscImageChef.Core
EndProgress2();
}
string dskType, dskSubType;
Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out dskType, out dskSubType);
Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out string dskType, out string dskSubType);
sidecar.BlockMedia[0].DiskType = dskType;
sidecar.BlockMedia[0].DiskSubType = dskSubType;
Statistics.AddMedia(image.ImageInfo.mediaType, false);
@@ -222,14 +252,15 @@ namespace DiscImageChef.Core
sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count];
for(int i = 0; i < partitions.Count; i++)
{
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType();
sidecar.BlockMedia[0].FileSystemInformation[i].Description = partitions[i].Description;
sidecar.BlockMedia[0].FileSystemInformation[i].EndSector = (int)(partitions[i].End);
sidecar.BlockMedia[0].FileSystemInformation[i].Name = partitions[i].Name;
sidecar.BlockMedia[0].FileSystemInformation[i].Sequence = (int)partitions[i].Sequence;
sidecar.BlockMedia[0].FileSystemInformation[i].StartSector = (int)partitions[i].Start;
sidecar.BlockMedia[0].FileSystemInformation[i].Type = partitions[i].Type;
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType
{
Description = partitions[i].Description,
EndSector = (int)(partitions[i].End),
Name = partitions[i].Name,
Sequence = (int)partitions[i].Sequence,
StartSector = (int)partitions[i].Start,
Type = partitions[i].Type
};
List<FileSystemType> lstFs = new List<FileSystemType>();
foreach(Filesystem _plugin in plugins.PluginsList.Values)
@@ -238,8 +269,7 @@ namespace DiscImageChef.Core
{
if(_plugin.Identify(image, partitions[i]))
{
string foo;
_plugin.GetInformation(image, partitions[i], out foo);
_plugin.GetInformation(image, partitions[i], out string foo);
lstFs.Add(_plugin.XmlFSType);
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
}
@@ -258,9 +288,11 @@ namespace DiscImageChef.Core
}
else
{
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType();
sidecar.BlockMedia[0].FileSystemInformation[0].StartSector = 0;
sidecar.BlockMedia[0].FileSystemInformation[0].EndSector = (int)(image.GetSectors() - 1);
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType
{
StartSector = 0,
EndSector = (int)(image.GetSectors() - 1)
};
Partition wholePart = new Partition
{

View File

@@ -48,15 +48,21 @@ namespace DiscImageChef.Core
// TODO: Complete it
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.LinearMedia = new LinearMediaType[1];
sidecar.LinearMedia[0] = new LinearMediaType();
sidecar.LinearMedia[0].Checksums = imgChecksums.ToArray();
sidecar.LinearMedia[0].Image = new ImageType();
sidecar.LinearMedia[0].Image.format = image.GetImageFormat();
sidecar.LinearMedia[0].Image.offset = 0;
sidecar.LinearMedia[0].Image.offsetSpecified = true;
sidecar.LinearMedia[0].Image.Value = Path.GetFileName(imagePath);
sidecar.LinearMedia[0].Size = fi.Length;
sidecar.LinearMedia = new []
{
new LinearMediaType
{
Checksums = imgChecksums.ToArray(),
Image = new ImageType
{
format = image.GetImageFormat(),
offset = 0,
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length
}
};
}
}
}

View File

@@ -49,16 +49,26 @@ namespace DiscImageChef.Core
{
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.OpticalDisc = new OpticalDiscType[1];
sidecar.OpticalDisc[0] = new OpticalDiscType();
sidecar.OpticalDisc[0].Checksums = imgChecksums.ToArray();
sidecar.OpticalDisc[0].Image = new ImageType();
sidecar.OpticalDisc[0].Image.format = image.GetImageFormat();
sidecar.OpticalDisc[0].Image.offset = 0;
sidecar.OpticalDisc[0].Image.offsetSpecified = true;
sidecar.OpticalDisc[0].Image.Value = Path.GetFileName(imagePath);
sidecar.OpticalDisc[0].Size = fi.Length;
sidecar.OpticalDisc[0].Sequence = new SequenceType();
sidecar.OpticalDisc = new[]
{
new OpticalDiscType
{
Checksums = imgChecksums.ToArray(),
Image = new ImageType
{
format = image.GetImageFormat(),
offset = 0,
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length,
Sequence = new SequenceType
{
MediaTitle = image.GetImageName()
}
}
};
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
{
sidecar.OpticalDisc[0].Sequence.MediaSequence = image.GetMediaSequence();
@@ -69,7 +79,6 @@ namespace DiscImageChef.Core
sidecar.OpticalDisc[0].Sequence.MediaSequence = 1;
sidecar.OpticalDisc[0].Sequence.TotalMedia = 1;
}
sidecar.OpticalDisc[0].Sequence.MediaTitle = image.GetImageName();
MediaType dskType = image.ImageInfo.mediaType;
@@ -78,9 +87,11 @@ namespace DiscImageChef.Core
switch(tagType)
{
case MediaTagType.CD_ATIP:
sidecar.OpticalDisc[0].ATIP = new DumpType();
sidecar.OpticalDisc[0].ATIP.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray();
sidecar.OpticalDisc[0].ATIP.Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length;
sidecar.OpticalDisc[0].ATIP = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length
};
Decoders.CD.ATIP.CDATIP? atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
if(atip.HasValue)
{
@@ -91,17 +102,25 @@ namespace DiscImageChef.Core
}
break;
case MediaTagType.DVD_BCA:
sidecar.OpticalDisc[0].BCA = new DumpType();
sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray();
sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length;
sidecar.OpticalDisc[0].BCA = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length
};
break;
case MediaTagType.BD_BCA:
sidecar.OpticalDisc[0].BCA = new DumpType();
sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray();
sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length;
sidecar.OpticalDisc[0].BCA = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length
};
break;
case MediaTagType.DVD_CMI:
sidecar.OpticalDisc[0].CMI = new DumpType();
sidecar.OpticalDisc[0].CMI = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length
};
Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi = Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
if(cmi.HasValue)
{
@@ -118,30 +137,33 @@ namespace DiscImageChef.Core
break;
}
}
sidecar.OpticalDisc[0].CMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray();
sidecar.OpticalDisc[0].CMI.Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length;
break;
case MediaTagType.DVD_DMI:
sidecar.OpticalDisc[0].DMI = new DumpType();
sidecar.OpticalDisc[0].DMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray();
sidecar.OpticalDisc[0].DMI.Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length;
sidecar.OpticalDisc[0].DMI = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length
};
if(Decoders.Xbox.DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI)))
{
dskType = MediaType.XGD;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType { Diameter = 120 };
}
else if(Decoders.Xbox.DMI.IsXbox360(image.ReadDiskTag(MediaTagType.DVD_DMI)))
{
dskType = MediaType.XGD2;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType
{
Diameter = 120
};
}
break;
case MediaTagType.DVD_PFI:
sidecar.OpticalDisc[0].PFI = new DumpType();
sidecar.OpticalDisc[0].PFI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray();
sidecar.OpticalDisc[0].PFI.Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length;
sidecar.OpticalDisc[0].PFI = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length
};
Decoders.DVD.PFI.PhysicalFormatInformation? pfi = Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
if(pfi.HasValue)
{
@@ -213,9 +235,11 @@ namespace DiscImageChef.Core
}
break;
case MediaTagType.CD_PMA:
sidecar.OpticalDisc[0].PMA = new DumpType();
sidecar.OpticalDisc[0].PMA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray();
sidecar.OpticalDisc[0].PMA.Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length;
sidecar.OpticalDisc[0].PMA = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length
};
break;
}
}
@@ -281,16 +305,17 @@ namespace DiscImageChef.Core
}
break;
}
xmlTrk.Sequence = new TrackSequenceType();
xmlTrk.Sequence.Session = trk.TrackSession;
xmlTrk.Sequence.TrackNumber = (int)trk.TrackSequence;
xmlTrk.Sequence = new TrackSequenceType
{
Session = trk.TrackSession,
TrackNumber = (int)trk.TrackSequence
};
xmlTrk.StartSector = (long)trk.TrackStartSector;
xmlTrk.EndSector = (long)trk.TrackEndSector;
if(trk.Indexes != null && trk.Indexes.ContainsKey(0))
{
ulong idx0;
if(trk.Indexes.TryGetValue(0, out idx0))
if(trk.Indexes.TryGetValue(0, out ulong idx0))
xmlTrk.StartSector = (long)idx0;
}
@@ -306,15 +331,18 @@ namespace DiscImageChef.Core
xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector);
}
xmlTrk.Image = new ImageType();
xmlTrk.Image.Value = Path.GetFileName(trk.TrackFile);
xmlTrk.Image = new ImageType
{
Value = Path.GetFileName(trk.TrackFile),
format = trk.TrackFileType
};
if(trk.TrackFileOffset > 0)
{
xmlTrk.Image.offset = (long)trk.TrackFileOffset;
xmlTrk.Image.offsetSpecified = true;
}
xmlTrk.Image.format = trk.TrackFileType;
xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector;
xmlTrk.BytesPerSector = trk.TrackBytesPerSector;
@@ -370,8 +398,16 @@ namespace DiscImageChef.Core
if(trk.TrackSubchannelType != TrackSubchannelType.None)
{
xmlTrk.SubChannel = new SubChannelType();
xmlTrk.SubChannel.Image = new ImageType();
xmlTrk.SubChannel = new SubChannelType
{
Image = new ImageType
{
Value = trk.TrackSubchannelFile
},
// TODO: Packed subchannel has different size?
Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96
};
switch(trk.TrackSubchannelType)
{
case TrackSubchannelType.Packed:
@@ -393,10 +429,6 @@ namespace DiscImageChef.Core
xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset;
xmlTrk.SubChannel.Image.offsetSpecified = true;
}
xmlTrk.SubChannel.Image.Value = trk.TrackSubchannelFile;
// TODO: Packed subchannel has different size?
xmlTrk.SubChannel.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96;
Checksum subChkWorker = new Checksum();
@@ -445,14 +477,15 @@ namespace DiscImageChef.Core
xmlTrk.FileSystemInformation = new PartitionType[partitions.Count];
for(int i = 0; i < partitions.Count; i++)
{
xmlTrk.FileSystemInformation[i] = new PartitionType();
xmlTrk.FileSystemInformation[i].Description = partitions[i].Description;
xmlTrk.FileSystemInformation[i].EndSector = (int)(partitions[i].End);
xmlTrk.FileSystemInformation[i].Name = partitions[i].Name;
xmlTrk.FileSystemInformation[i].Sequence = (int)partitions[i].Sequence;
xmlTrk.FileSystemInformation[i].StartSector = (int)partitions[i].Start;
xmlTrk.FileSystemInformation[i].Type = partitions[i].Type;
xmlTrk.FileSystemInformation[i] = new PartitionType
{
Description = partitions[i].Description,
EndSector = (int)(partitions[i].End),
Name = partitions[i].Name,
Sequence = (int)partitions[i].Sequence,
StartSector = (int)partitions[i].Start,
Type = partitions[i].Type
};
List<FileSystemType> lstFs = new List<FileSystemType>();
foreach(Filesystem _plugin in plugins.PluginsList.Values)
@@ -489,10 +522,11 @@ namespace DiscImageChef.Core
}
else
{
xmlTrk.FileSystemInformation[0] = new PartitionType();
xmlTrk.FileSystemInformation[0].EndSector = (int)xmlTrk.EndSector;
xmlTrk.FileSystemInformation[0].StartSector = (int)xmlTrk.StartSector;
xmlTrk.FileSystemInformation[0] = new PartitionType
{
EndSector = (int)xmlTrk.EndSector,
StartSector = (int)xmlTrk.StartSector
};
List<FileSystemType> lstFs = new List<FileSystemType>();
Partition xmlPart = new Partition
@@ -552,9 +586,7 @@ namespace DiscImageChef.Core
dskType = MediaType.XGD3;
}
string dscType, dscSubType;
Metadata.MediaType.MediaTypeToString(dskType, out dscType, out dscSubType);
Metadata.MediaType.MediaTypeToString(dskType, out string dscType, out string dscSubType);
sidecar.OpticalDisc[0].DiscType = dscType;
sidecar.OpticalDisc[0].DiscSubType = dscSubType;
Statistics.AddMedia(dskType, false);
@@ -564,17 +596,29 @@ namespace DiscImageChef.Core
!string.IsNullOrEmpty(image.ImageInfo.driveFirmwareRevision) ||
!string.IsNullOrEmpty(image.ImageInfo.driveSerialNumber))
{
sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1];
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0];
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = image.ImageInfo.sectors;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = image.ImageInfo.driveManufacturer;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = image.ImageInfo.driveModel;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = image.ImageInfo.driveFirmwareRevision;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = image.ImageInfo.driveSerialNumber;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType();
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Name = image.GetImageApplication();
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Version = image.GetImageApplicationVersion();
sidecar.OpticalDisc[0].DumpHardwareArray = new[]
{
new DumpHardwareType
{
Extents = new[]
{
new ExtentType
{
Start = 0,
End = image.ImageInfo.sectors
}
},
Manufacturer = image.ImageInfo.driveManufacturer,
Model = image.ImageInfo.driveModel,
Firmware = image.ImageInfo.driveFirmwareRevision,
Serial = image.ImageInfo.driveSerialNumber,
Software = new SoftwareType
{
Name = image.GetImageApplication(),
Version = image.GetImageApplicationVersion()
}
}
};
}
}
}

View File

@@ -35,11 +35,9 @@
// Copyright (C) 2011-2015 Claunia.com
// ****************************************************************************/
// //$Id$
using System.Collections.Generic;
using System.IO;
using DiscImageChef.CommonTypes;
using DiscImageChef.Decoders.PCMCIA;
using DiscImageChef.Filesystems;
using DiscImageChef.ImagePlugins;
using Schemas;