REFACTOR: Reformat code.

This commit is contained in:
2017-12-19 20:33:03 +00:00
parent 77edc7c91c
commit e6f6ace80b
704 changed files with 82627 additions and 83641 deletions

View File

@@ -40,25 +40,23 @@ namespace DiscImageChef.Core
public static partial class Sidecar
{
// TODO: Complete it
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.AudioMedia = new []
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()
}
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()}
}
};
@@ -74,4 +72,4 @@ namespace DiscImageChef.Core
}
}
}
}
}

View File

@@ -47,25 +47,23 @@ namespace DiscImageChef.Core
{
public static partial class Sidecar
{
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
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()
}
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()}
}
};
@@ -89,7 +87,8 @@ namespace DiscImageChef.Core
{
Identify = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
Checksums =
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
}
};
@@ -99,7 +98,8 @@ namespace DiscImageChef.Core
{
Identify = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
Checksums =
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
}
};
@@ -108,11 +108,7 @@ namespace DiscImageChef.Core
byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS);
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
{
CIS = new DumpType
{
Checksums = Checksum.GetChecksums(cis).ToArray(),
Size = cis.Length
}
CIS = new DumpType {Checksums = Checksum.GetChecksums(cis).ToArray(), Size = cis.Length}
};
Tuple[] tuples = CIS.GetTuples(cis);
if(tuples != null)
@@ -121,7 +117,8 @@ namespace DiscImageChef.Core
{
if(tuple.Code == TupleCodes.CISTPL_MANFID)
{
ManufacturerIdentificationTuple manfid = CIS.DecodeManufacturerIdentificationTuple(tuple);
ManufacturerIdentificationTuple manfid =
CIS.DecodeManufacturerIdentificationTuple(tuple);
if(manfid != null)
{
@@ -139,19 +136,22 @@ namespace DiscImageChef.Core
{
sidecar.BlockMedia[0].PCMCIA.Manufacturer = vers.Manufacturer;
sidecar.BlockMedia[0].PCMCIA.ProductName = vers.Product;
sidecar.BlockMedia[0].PCMCIA.Compliance = string.Format("{0}.{1}", vers.MajorVersion, vers.MinorVersion);
sidecar.BlockMedia[0].PCMCIA.Compliance =
string.Format("{0}.{1}", vers.MajorVersion, vers.MinorVersion);
sidecar.BlockMedia[0].PCMCIA.AdditionalInformation = vers.AdditionalInformation;
}
}
}
}
break;
case MediaTagType.SCSI_INQUIRY:
sidecar.BlockMedia[0].SCSI = new SCSIType
{
Inquiry = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
Checksums =
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
}
};
@@ -224,7 +224,8 @@ namespace DiscImageChef.Core
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(),
Checksums =
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length
};
break;
@@ -332,17 +333,13 @@ namespace DiscImageChef.Core
}
}
if(lstFs.Count > 0)
sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray();
if(lstFs.Count > 0) sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray();
}
}
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.GetSectors() - 1)};
Partition wholePart = new Partition
{
@@ -372,8 +369,7 @@ namespace DiscImageChef.Core
}
}
if(lstFs.Count > 0)
sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray();
if(lstFs.Count > 0) sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray();
}
if(image.ImageInfo.cylinders > 0 && image.ImageInfo.heads > 0 && image.ImageInfo.sectorsPerTrack > 0)
@@ -388,10 +384,12 @@ namespace DiscImageChef.Core
if(image.ImageInfo.readableMediaTags.Contains(MediaTagType.ATA_IDENTIFY))
{
Decoders.ATA.Identify.IdentifyDevice? ataId = Decoders.ATA.Identify.Decode(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY));
Decoders.ATA.Identify.IdentifyDevice? ataId =
Decoders.ATA.Identify.Decode(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY));
if(ataId.HasValue)
{
if(ataId.Value.CurrentCylinders > 0 && ataId.Value.CurrentHeads > 0 && ataId.Value.CurrentSectorsPerTrack > 0)
if(ataId.Value.CurrentCylinders > 0 && ataId.Value.CurrentHeads > 0 &&
ataId.Value.CurrentSectorsPerTrack > 0)
{
sidecar.BlockMedia[0].CylindersSpecified = true;
sidecar.BlockMedia[0].HeadsSpecified = true;
@@ -414,7 +412,7 @@ namespace DiscImageChef.Core
// TODO: This is more of a hack, redo it planned for >4.0
string trkFormat = null;
switch(image.ImageInfo.mediaType)
{
case MediaType.Apple32SS:
@@ -506,10 +504,8 @@ namespace DiscImageChef.Core
break;
case MediaType.SHARP_525:
case MediaType.SHARP_525_9:
case MediaType.SHARP_35:
break;
case MediaType.SHARP_35_9:
break;
case MediaType.SHARP_35: break;
case MediaType.SHARP_35_9: break;
case MediaType.ECMA_99_15:
case MediaType.ECMA_99_26:
case MediaType.ECMA_100:
@@ -536,7 +532,7 @@ namespace DiscImageChef.Core
#region SuperCardPro
string scpFilePath = Path.Combine(Path.GetDirectoryName(imagePath),
Path.GetFileNameWithoutExtension(imagePath) + ".scp");
Path.GetFileNameWithoutExtension(imagePath) + ".scp");
if(File.Exists(scpFilePath))
{
@@ -546,14 +542,8 @@ namespace DiscImageChef.Core
if(image.ImageInfo.heads <= 2 && scpImage.IdentifyImage(scpFilter))
{
try
{
scpImage.OpenImage(scpFilter);
}
catch(NotImplementedException)
{
}
try { scpImage.OpenImage(scpFilter); }
catch(NotImplementedException) { }
if((image.ImageInfo.heads == 2 && scpImage.header.heads == 0) ||
(image.ImageInfo.heads == 1 && (scpImage.header.heads == 1 || scpImage.header.heads == 2)))
@@ -603,22 +593,22 @@ namespace DiscImageChef.Core
scpBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
}
else
DicConsole.ErrorWriteLine(
"SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
scpImage.header.end + 1, image.ImageInfo.cylinders);
DicConsole
.ErrorWriteLine("SuperCardPro image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
scpImage.header.end + 1, image.ImageInfo.cylinders);
}
else
DicConsole.ErrorWriteLine(
"SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
2, image.ImageInfo.heads);
DicConsole
.ErrorWriteLine("SuperCardPro image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
2, image.ImageInfo.heads);
}
}
#endregion
#region KryoFlux
string kfFile = null;
string basename = Path.Combine(Path.GetDirectoryName(imagePath),
Path.GetFileNameWithoutExtension(imagePath));
Path.GetFileNameWithoutExtension(imagePath));
bool kfDir = false;
if(Directory.Exists(basename))
@@ -630,10 +620,8 @@ namespace DiscImageChef.Core
kfDir = true;
}
}
else if(File.Exists(basename + "00.0.raw"))
kfFile = basename + "00.0.raw";
else if(File.Exists(basename + "00.1.raw"))
kfFile = basename + "00.1.raw";
else if(File.Exists(basename + "00.0.raw")) kfFile = basename + "00.0.raw";
else if(File.Exists(basename + "00.1.raw")) kfFile = basename + "00.1.raw";
if(kfFile != null)
{
@@ -642,20 +630,15 @@ namespace DiscImageChef.Core
kfFilter.Open(kfFile);
if(image.ImageInfo.heads <= 2 && kfImage.IdentifyImage(kfFilter))
{
try
{
kfImage.OpenImage(kfFilter);
}
catch(NotImplementedException)
{
}
try { kfImage.OpenImage(kfFilter); }
catch(NotImplementedException) { }
if(kfImage.ImageInfo.heads == image.ImageInfo.heads)
{
if(kfImage.ImageInfo.cylinders >= image.ImageInfo.cylinders)
{
List<BlockTrackType> kfBlockTrackTypes = new List<BlockTrackType>();
long currentSector = 0;
foreach(KeyValuePair<byte, Filter> kvp in kfImage.tracks)
@@ -667,7 +650,8 @@ namespace DiscImageChef.Core
kfBlockTrackType.Image.format = kfImage.GetImageFormat();
kfBlockTrackType.Image.Value =
kfDir
? Path.Combine(Path.GetFileName(Path.GetDirectoryName(kvp.Value.GetBasePath())), kvp.Value.GetFilename())
? Path.Combine(Path.GetFileName(Path.GetDirectoryName(kvp.Value.GetBasePath())),
kvp.Value.GetFilename())
: kvp.Value.GetFilename();
kfBlockTrackType.Image.offset = 0;
@@ -695,21 +679,21 @@ namespace DiscImageChef.Core
kfBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
}
else
DicConsole.ErrorWriteLine(
"KryoFlux image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
kfImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
DicConsole
.ErrorWriteLine("KryoFlux image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
kfImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
}
else
DicConsole.ErrorWriteLine(
"KryoFluximage do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
kfImage.ImageInfo.heads, image.ImageInfo.heads);
DicConsole
.ErrorWriteLine("KryoFluximage do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
kfImage.ImageInfo.heads, image.ImageInfo.heads);
}
}
#endregion
#region DiscFerret
string dfiFilePath = Path.Combine(Path.GetDirectoryName(imagePath),
Path.GetFileNameWithoutExtension(imagePath) + ".dfi");
Path.GetFileNameWithoutExtension(imagePath) + ".dfi");
if(File.Exists(dfiFilePath))
{
@@ -719,14 +703,8 @@ namespace DiscImageChef.Core
if(dfiImage.IdentifyImage(dfiFilter))
{
try
{
dfiImage.OpenImage(dfiFilter);
}
catch(NotImplementedException)
{
}
try { dfiImage.OpenImage(dfiFilter); }
catch(NotImplementedException) { }
if(image.ImageInfo.heads == dfiImage.ImageInfo.heads)
{
@@ -755,7 +733,8 @@ namespace DiscImageChef.Core
dfiBlockTrackType.Format = trkFormat;
}
if(dfiImage.trackOffsets.TryGetValue(t, out long offset) && dfiImage.trackLengths.TryGetValue(t, out long length))
if(dfiImage.trackOffsets.TryGetValue(t, out long offset) &&
dfiImage.trackLengths.TryGetValue(t, out long length))
{
dfiBlockTrackType.Image.offset = offset;
byte[] trackContents = new byte[length];
@@ -772,18 +751,19 @@ namespace DiscImageChef.Core
dfiBlockTrackTypes.OrderBy(t => t.Cylinder).ThenBy(t => t.Head).ToArray();
}
else
DicConsole.ErrorWriteLine(
"DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
dfiImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
DicConsole
.ErrorWriteLine("DiscFerret image do not contain same number of tracks ({0}) than disk image ({1}), ignoring...",
dfiImage.ImageInfo.cylinders, image.ImageInfo.cylinders);
}
else
DicConsole.ErrorWriteLine(
"DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
dfiImage.ImageInfo.heads, image.ImageInfo.heads);
DicConsole
.ErrorWriteLine("DiscFerret image do not contain same number of heads ({0}) than disk image ({1}), ignoring...",
dfiImage.ImageInfo.heads, image.ImageInfo.heads);
}
}
#endregion
// TODO: Implement support for getting CHS from SCSI mode pages
}
}
}
}

View File

@@ -43,36 +43,26 @@ namespace DiscImageChef.Core
CICMMetadataType sidecar = new CICMMetadataType
{
BlockMedia = new[]
{
new BlockMediaType
{
Image = new ImageType
{
format = "Directory",
offsetSpecified = false,
Value = folderName
},
Sequence = new SequenceType
{
MediaTitle = folderName,
MediaSequence = 1,
TotalMedia = 1
},
PhysicalBlockSize = (int)blockSize,
LogicalBlockSize = (int)blockSize,
TapeInformation = new []
{
new TapePartitionType
{
Image = new ImageType
{
format = "Directory",
offsetSpecified = false,
Value = folderName
}
}
}
}
{
new BlockMediaType
{
Image = new ImageType {format = "Directory", offsetSpecified = false, Value = folderName},
Sequence = new SequenceType {MediaTitle = folderName, MediaSequence = 1, TotalMedia = 1},
PhysicalBlockSize = (int)blockSize,
LogicalBlockSize = (int)blockSize,
TapeInformation = new[]
{
new TapePartitionType
{
Image = new ImageType
{
format = "Directory",
offsetSpecified = false,
Value = folderName
}
}
}
}
}
};
@@ -112,14 +102,16 @@ namespace DiscImageChef.Core
{
sector = new byte[sectorsToRead * blockSize];
fs.Read(sector, 0, sector.Length);
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count), doneSectors, sectors);
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count),
doneSectors, sectors);
doneSectors += sectorsToRead;
}
else
{
sector = new byte[(uint)(sectors - doneSectors) * blockSize];
fs.Read(sector, 0, sector.Length);
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count), doneSectors, sectors);
UpdateProgress2(string.Format("Hashing block {0} of {1} on file {2} of {3}", doneSectors, sectors, i + 1, files.Count),
doneSectors, sectors);
doneSectors += (sectors - doneSectors);
}
@@ -150,32 +142,19 @@ namespace DiscImageChef.Core
{
sidecar.BlockMedia[0].DiskType = "Quarter-inch cartridge";
if(totalSize <= 20 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-11";
else if(totalSize <= 40 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-40";
else if(totalSize <= 60 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-24";
else if(totalSize <= 80 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-80";
else if(totalSize <= 120 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-120";
else if(totalSize <= 150 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-150";
else if(totalSize <= 320 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-320";
else if(totalSize <= 340 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-3010";
else if(totalSize <= 525 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-525";
else if(totalSize <= 670 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-3020";
else if(totalSize <= 1200 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-3080";
else if(totalSize <= 1350 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-1350";
else if(totalSize <= (long)4000 * 1048576)
sidecar.BlockMedia[0].DiskSubType = "QIC-3095";
if(totalSize <= 20 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-11";
else if(totalSize <= 40 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-40";
else if(totalSize <= 60 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-24";
else if(totalSize <= 80 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-80";
else if(totalSize <= 120 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-120";
else if(totalSize <= 150 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-150";
else if(totalSize <= 320 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-320";
else if(totalSize <= 340 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3010";
else if(totalSize <= 525 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-525";
else if(totalSize <= 670 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3020";
else if(totalSize <= 1200 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3080";
else if(totalSize <= 1350 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-1350";
else if(totalSize <= (long)4000 * 1048576) sidecar.BlockMedia[0].DiskSubType = "QIC-3095";
else
{
sidecar.BlockMedia[0].DiskType = "Unknown tape";
@@ -191,4 +170,4 @@ namespace DiscImageChef.Core
return sidecar;
}
}
}
}

View File

@@ -44,8 +44,7 @@ namespace DiscImageChef.Core
public static void InitProgress()
{
if(InitProgressEvent != null)
InitProgressEvent();
if(InitProgressEvent != null) InitProgressEvent();
}
public static void UpdateProgress(string text, long current, long maximum)
@@ -56,14 +55,12 @@ namespace DiscImageChef.Core
public static void EndProgress()
{
if(EndProgressEvent != null)
EndProgressEvent();
if(EndProgressEvent != null) EndProgressEvent();
}
public static void InitProgress2()
{
if(InitProgressEvent2 != null)
InitProgressEvent2();
if(InitProgressEvent2 != null) InitProgressEvent2();
}
public static void UpdateProgress2(string text, long current, long maximum)
@@ -74,14 +71,12 @@ namespace DiscImageChef.Core
public static void EndProgress2()
{
if(EndProgressEvent2 != null)
EndProgressEvent2();
if(EndProgressEvent2 != null) EndProgressEvent2();
}
public static void UpdateStatus(string text, params object[] args)
{
if(UpdateStatusEvent != null)
UpdateStatusEvent(string.Format(text, args));
if(UpdateStatusEvent != null) UpdateStatusEvent(string.Format(text, args));
}
}
}
}

View File

@@ -84,4 +84,4 @@ namespace DiscImageChef.Core
return string.Format("{3}:{0:D2}:{1:D2}:{2:D2}", m, s, f, h);
}
}
}
}

View File

@@ -40,23 +40,24 @@ namespace DiscImageChef.Core
public static partial class Sidecar
{
// TODO: Complete it
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
sidecar.LinearMedia = new []
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
new LinearMediaType
{
Checksums = imgChecksums.ToArray(),
Image = new ImageType
{
format = image.GetImageFormat(),
offset = 0,
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length
}
};
}
}
}
}

View File

@@ -41,25 +41,23 @@ namespace DiscImageChef.Core
{
public static partial class Sidecar
{
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi,
PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
{
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()
}
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()}
}
};
@@ -86,13 +84,12 @@ namespace DiscImageChef.Core
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));
Decoders.CD.ATIP.CDATIP?
atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
if(atip.HasValue)
{
if(atip.Value.DDCD)
dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR;
else
dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
if(atip.Value.DDCD) dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR;
else dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
}
break;
case MediaTagType.DVD_BCA:
@@ -115,7 +112,8 @@ namespace DiscImageChef.Core
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));
Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi =
Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
if(cmi.HasValue)
{
switch(cmi.Value.CopyrightType)
@@ -131,6 +129,7 @@ namespace DiscImageChef.Core
break;
}
}
break;
case MediaTagType.DVD_DMI:
sidecar.OpticalDisc[0].DMI = new DumpType
@@ -141,15 +140,12 @@ namespace DiscImageChef.Core
if(Decoders.Xbox.DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI)))
{
dskType = MediaType.XGD;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType { 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
{
Diameter = 120
};
sidecar.OpticalDisc[0].Dimensions = new DimensionsType {Diameter = 120};
}
break;
case MediaTagType.DVD_PFI:
@@ -158,12 +154,11 @@ namespace DiscImageChef.Core
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));
Decoders.DVD.PFI.PhysicalFormatInformation? pfi =
Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
if(pfi.HasValue)
{
if(dskType != MediaType.XGD &&
dskType != MediaType.XGD2 &&
dskType != MediaType.XGD3)
if(dskType != MediaType.XGD && dskType != MediaType.XGD2 && dskType != MediaType.XGD3)
{
switch(pfi.Value.DiskCategory)
{
@@ -211,22 +206,21 @@ namespace DiscImageChef.Core
break;
}
if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6)
dskType = MediaType.DVDRDL;
if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6) dskType = MediaType.DVDRDL;
if(dskType == MediaType.DVDRW && pfi.Value.PartVersion == 3)
dskType = MediaType.DVDRWDL;
if(dskType == MediaType.GOD && pfi.Value.DiscSize == Decoders.DVD.DVDSize.OneTwenty)
dskType = MediaType.WOD;
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
if(dskType == MediaType.UMD)
sidecar.OpticalDisc[0].Dimensions.Diameter = 60;
if(dskType == MediaType.UMD) sidecar.OpticalDisc[0].Dimensions.Diameter = 60;
else if(pfi.Value.DiscSize == Decoders.DVD.DVDSize.Eighty)
sidecar.OpticalDisc[0].Dimensions.Diameter = 80;
else if(pfi.Value.DiscSize == Decoders.DVD.DVDSize.OneTwenty)
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
}
}
break;
case MediaTagType.CD_PMA:
sidecar.OpticalDisc[0].PMA = new DumpType
@@ -243,10 +237,7 @@ namespace DiscImageChef.Core
List<Session> sessions = image.GetSessions();
sidecar.OpticalDisc[0].Sessions = sessions != null ? sessions.Count : 1;
}
catch
{
sidecar.OpticalDisc[0].Sessions = 1;
}
catch { sidecar.OpticalDisc[0].Sessions = 1; }
List<Track> tracks = image.GetTracks();
List<Schemas.TrackType> trksLst = null;
@@ -297,24 +288,21 @@ namespace DiscImageChef.Core
xmlTrk.TrackType1 = TrackTypeTrackType.mode1;
break;
}
break;
}
xmlTrk.Sequence = new TrackSequenceType
{
Session = trk.TrackSession,
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))
{
if(trk.Indexes.TryGetValue(0, out ulong idx0))
xmlTrk.StartSector = (long)idx0;
if(trk.Indexes.TryGetValue(0, out ulong idx0)) xmlTrk.StartSector = (long)idx0;
}
if(sidecar.OpticalDisc[0].DiscType == "CD" ||
sidecar.OpticalDisc[0].DiscType == "GD")
if(sidecar.OpticalDisc[0].DiscType == "CD" || sidecar.OpticalDisc[0].DiscType == "GD")
{
xmlTrk.StartMSF = LbaToMsf(xmlTrk.StartSector);
xmlTrk.EndMSF = LbaToMsf(xmlTrk.EndSector);
@@ -325,11 +313,7 @@ namespace DiscImageChef.Core
xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector);
}
xmlTrk.Image = new ImageType
{
Value = Path.GetFileName(trk.TrackFile),
format = trk.TrackFileType
};
xmlTrk.Image = new ImageType {Value = Path.GetFileName(trk.TrackFile), format = trk.TrackFileType};
if(trk.TrackFileOffset > 0)
{
@@ -369,14 +353,18 @@ namespace DiscImageChef.Core
if((sectors - doneSectors) >= sectorsToRead)
{
sector = image.ReadSectorsLong(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber);
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
sector = image.ReadSectorsLong(doneSectors, sectorsToRead,
(uint)xmlTrk.Sequence.TrackNumber);
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
doneSectors += sectorsToRead;
}
else
{
sector = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber);
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
sector = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors),
(uint)xmlTrk.Sequence.TrackNumber);
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
doneSectors += (sectors - doneSectors);
}
@@ -394,10 +382,7 @@ namespace DiscImageChef.Core
{
xmlTrk.SubChannel = new SubChannelType
{
Image = new ImageType
{
Value = trk.TrackSubchannelFile
},
Image = new ImageType {Value = trk.TrackSubchannelFile},
// TODO: Packed subchannel has different size?
Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96
};
@@ -436,14 +421,19 @@ namespace DiscImageChef.Core
if((sectors - doneSectors) >= sectorsToRead)
{
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CDSectorSubchannel);
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber,
SectorTagType.CDSectorSubchannel);
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
doneSectors += sectorsToRead;
}
else
{
sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CDSectorSubchannel);
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors, (long)(trk.TrackEndSector - trk.TrackStartSector + 1));
sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors),
(uint)xmlTrk.Sequence.TrackNumber,
SectorTagType.CDSectorSubchannel);
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
doneSectors += (sectors - doneSectors);
}
@@ -460,7 +450,8 @@ namespace DiscImageChef.Core
// For fast debugging, skip checksum
//skipChecksum:
UpdateStatus("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber, xmlTrk.StartSector, xmlTrk.EndSector);
UpdateStatus("Checking filesystems on track {0} from sector {1} to {2}", xmlTrk.Sequence.TrackNumber,
xmlTrk.StartSector, xmlTrk.EndSector);
List<Partition> partitions = Partitions.GetAll(image);
Partitions.AddSchemesToStats(partitions);
@@ -492,12 +483,10 @@ namespace DiscImageChef.Core
lstFs.Add(_plugin.XmlFSType);
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
if(_plugin.XmlFSType.Type == "Opera")
dskType = MediaType.ThreeDO;
if(_plugin.XmlFSType.Type == "Opera") dskType = MediaType.ThreeDO;
if(_plugin.XmlFSType.Type == "PC Engine filesystem")
dskType = MediaType.SuperCDROM2;
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem")
dskType = MediaType.WOD;
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem") dskType = MediaType.WOD;
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem")
dskType = MediaType.GOD;
}
@@ -510,8 +499,7 @@ namespace DiscImageChef.Core
}
}
if(lstFs.Count > 0)
xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray();
if(lstFs.Count > 0) xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray();
}
}
else
@@ -541,14 +529,10 @@ namespace DiscImageChef.Core
lstFs.Add(_plugin.XmlFSType);
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
if(_plugin.XmlFSType.Type == "Opera")
dskType = MediaType.ThreeDO;
if(_plugin.XmlFSType.Type == "PC Engine filesystem")
dskType = MediaType.SuperCDROM2;
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem")
dskType = MediaType.WOD;
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem")
dskType = MediaType.GOD;
if(_plugin.XmlFSType.Type == "Opera") dskType = MediaType.ThreeDO;
if(_plugin.XmlFSType.Type == "PC Engine filesystem") dskType = MediaType.SuperCDROM2;
if(_plugin.XmlFSType.Type == "Nintendo Wii filesystem") dskType = MediaType.WOD;
if(_plugin.XmlFSType.Type == "Nintendo Gamecube filesystem") dskType = MediaType.GOD;
}
}
#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body
@@ -559,21 +543,21 @@ namespace DiscImageChef.Core
}
}
if(lstFs.Count > 0)
xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray();
if(lstFs.Count > 0) xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray();
}
trksLst.Add(xmlTrk);
}
EndProgress();
if(trksLst != null)
sidecar.OpticalDisc[0].Track = trksLst.ToArray();
if(trksLst != null) sidecar.OpticalDisc[0].Track = trksLst.ToArray();
// All XGD3 all have the same number of blocks
if(dskType == MediaType.XGD2 && sidecar.OpticalDisc[0].Track.Length == 1)
{
ulong blocks = (ulong)(sidecar.OpticalDisc[0].Track[0].EndSector - sidecar.OpticalDisc[0].Track[0].StartSector + 1);
ulong blocks = (ulong)(sidecar.OpticalDisc[0].Track[0].EndSector -
sidecar.OpticalDisc[0].Track[0].StartSector + 1);
if(blocks == 25063 || // Locked (or non compatible drive)
blocks == 4229664 || // Xtreme unlock
blocks == 4246304) // Wxripper unlock
@@ -594,14 +578,7 @@ namespace DiscImageChef.Core
{
new DumpHardwareType
{
Extents = new[]
{
new ExtentType
{
Start = 0,
End = image.ImageInfo.sectors
}
},
Extents = new[] {new ExtentType {Start = 0, End = image.ImageInfo.sectors}},
Manufacturer = image.ImageInfo.driveManufacturer,
Model = image.ImageInfo.driveModel,
Firmware = image.ImageInfo.driveFirmwareRevision,
@@ -616,4 +593,4 @@ namespace DiscImageChef.Core
}
}
}
}
}

View File

@@ -39,7 +39,8 @@ namespace DiscImageChef.Core
{
public static partial class Sidecar
{
public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId, System.Text.Encoding encoding)
public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId,
System.Text.Encoding encoding)
{
CICMMetadataType sidecar = new CICMMetadataType();
PluginBase plugins = new PluginBase();
@@ -102,4 +103,4 @@ namespace DiscImageChef.Core
return sidecar;
}
}
}
}