Reformatted.

This commit is contained in:
2016-04-19 02:11:47 +01:00
parent 6a8499f8ed
commit f8bc81d4f5
149 changed files with 6983 additions and 6970 deletions

View File

@@ -202,37 +202,37 @@ namespace DiscImageChef.ImagePlugins
FileStream stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read);
stream.Seek(0, SeekOrigin.Begin);
if (stream.Length < 65)
if(stream.Length < 65)
return false;
byte[] header = new byte[64];
stream.Read(header, 0, 64);
UInt32 magic = BitConverter.ToUInt32(header, 0x00);
if (magic != MAGIC)
if(magic != MAGIC)
return false;
UInt32 dataoff = BitConverter.ToUInt32(header, 0x18);
if (dataoff > stream.Length)
if(dataoff > stream.Length)
return false;
UInt32 datasize = BitConverter.ToUInt32(header, 0x1C);
// There seems to be incorrect endian in some images on the wild
if (datasize == 0x00800C00)
if(datasize == 0x00800C00)
datasize = 0x000C8000;
if (dataoff + datasize > stream.Length)
if(dataoff + datasize > stream.Length)
return false;
UInt32 commentoff = BitConverter.ToUInt32(header, 0x20);
if (commentoff > stream.Length)
if(commentoff > stream.Length)
return false;
UInt32 commentsize = BitConverter.ToUInt32(header, 0x24);
if (commentoff + commentsize > stream.Length)
if(commentoff + commentsize > stream.Length)
return false;
UInt32 creatoroff = BitConverter.ToUInt32(header, 0x28);
if (creatoroff > stream.Length)
if(creatoroff > stream.Length)
return false;
UInt32 creatorsize = BitConverter.ToUInt32(header, 0x2C);
@@ -272,7 +272,7 @@ namespace DiscImageChef.ImagePlugins
ImageHeader.reserved3 = BitConverter.ToUInt32(header, 0x38);
ImageHeader.reserved4 = BitConverter.ToUInt32(header, 0x3C);
if (ImageHeader.dataSize == 0x00800C00)
if(ImageHeader.dataSize == 0x00800C00)
{
ImageHeader.dataSize = 0x000C8000;
DicConsole.DebugWriteLine("2MG plugin", "Detected incorrect endian on data size field, correcting.");
@@ -296,17 +296,17 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("2MG plugin", "ImageHeader.reserved3 = 0x{0:X8}", ImageHeader.reserved3);
DicConsole.DebugWriteLine("2MG plugin", "ImageHeader.reserved4 = 0x{0:X8}", ImageHeader.reserved4);
if (ImageHeader.dataSize == 0 && ImageHeader.blocks == 0 && ImageHeader.imageFormat != ProDOSSectorOrder)
if(ImageHeader.dataSize == 0 && ImageHeader.blocks == 0 && ImageHeader.imageFormat != ProDOSSectorOrder)
return false;
if (ImageHeader.imageFormat == ProDOSSectorOrder && ImageHeader.blocks == 0)
if(ImageHeader.imageFormat == ProDOSSectorOrder && ImageHeader.blocks == 0)
return false;
if (ImageHeader.imageFormat == ProDOSSectorOrder)
if(ImageHeader.imageFormat == ProDOSSectorOrder)
ImageHeader.dataSize = ImageHeader.blocks * 512;
else if (ImageHeader.blocks == 0 && ImageHeader.dataSize != 0)
else if(ImageHeader.blocks == 0 && ImageHeader.dataSize != 0)
ImageHeader.blocks = ImageHeader.dataSize / 256;
else if (ImageHeader.dataSize == 0 && ImageHeader.blocks != 0)
else if(ImageHeader.dataSize == 0 && ImageHeader.blocks != 0)
ImageHeader.dataSize = ImageHeader.blocks * 256;
ImageInfo.sectorSize = (uint)(ImageHeader.imageFormat == ProDOSSectorOrder ? 512 : 256);
@@ -314,9 +314,9 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.sectors = ImageHeader.blocks;
ImageInfo.imageSize = ImageHeader.dataSize;
switch (ImageHeader.creator)
switch(ImageHeader.creator)
{
case CreatorAsimov:
ImageInfo.imageApplication = "ASIMOV2";
break;
@@ -342,7 +342,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.imageVersion = ImageHeader.version.ToString();
if (ImageHeader.commentOffset != 0 && ImageHeader.commentSize != 0)
if(ImageHeader.commentOffset != 0 && ImageHeader.commentSize != 0)
{
stream.Seek(ImageHeader.commentOffset, SeekOrigin.Begin);
@@ -432,7 +432,7 @@ namespace DiscImageChef.ImagePlugins
public override MediaType GetMediaType()
{
switch (ImageInfo.sectors)
switch(ImageInfo.sectors)
{
case 455:
return MediaType.Apple32SS;
@@ -458,10 +458,10 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
if (sectorAddress > ImageInfo.sectors - 1)
if(sectorAddress > ImageInfo.sectors - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > ImageInfo.sectors)
if(sectorAddress + length > ImageInfo.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] buffer = new byte[length * ImageInfo.sectorSize];
@@ -623,7 +623,7 @@ namespace DiscImageChef.ImagePlugins
{
FailingLBAs = new List<ulong>();
UnknownLBAs = new List<ulong>();
for (ulong i = 0; i < ImageInfo.sectors; i++)
for(ulong i = 0; i < ImageInfo.sectors; i++)
UnknownLBAs.Add(i);
return null;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -164,7 +164,7 @@ namespace DiscImageChef.ImagePlugins
stream.Close();
// Incorrect pascal string length, not DC42
if (buffer[0] > 63)
if(buffer[0] > 63)
return false;
DC42Header tmp_header = new DC42Header();
@@ -193,15 +193,15 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("DC42 plugin", "tmp_header.valid = {0}", tmp_header.valid);
DicConsole.DebugWriteLine("DC42 plugin", "tmp_header.reserved = {0}", tmp_header.reserved);
if (tmp_header.valid != 1 || tmp_header.reserved != 0)
if(tmp_header.valid != 1 || tmp_header.reserved != 0)
return false;
FileInfo fi = new FileInfo(imagePath);
if (tmp_header.dataSize + tmp_header.tagSize + 0x54 != fi.Length && tmp_header.format != kSigmaFormatTwiggy)
if(tmp_header.dataSize + tmp_header.tagSize + 0x54 != fi.Length && tmp_header.format != kSigmaFormatTwiggy)
return false;
if (tmp_header.format != kSonyFormat400K && tmp_header.format != kSonyFormat800K && tmp_header.format != kSonyFormat720K &&
if(tmp_header.format != kSonyFormat400K && tmp_header.format != kSonyFormat800K && tmp_header.format != kSonyFormat720K &&
tmp_header.format != kSonyFormat1440K && tmp_header.format != kSonyFormat1680K && tmp_header.format != kSigmaFormatTwiggy)
{
DicConsole.DebugWriteLine("DC42 plugin", "Unknown tmp_header.format = 0x{0:X2} value", tmp_header.format);
@@ -209,7 +209,7 @@ namespace DiscImageChef.ImagePlugins
return false;
}
if (tmp_header.fmtByte != kSonyFmtByte400K && tmp_header.fmtByte != kSonyFmtByte800K && tmp_header.fmtByte != kSonyFmtByte800KIncorrect &&
if(tmp_header.fmtByte != kSonyFmtByte400K && tmp_header.fmtByte != kSonyFmtByte800K && tmp_header.fmtByte != kSonyFmtByte800KIncorrect &&
tmp_header.fmtByte != kSonyFmtByteProDos && tmp_header.fmtByte != kInvalidFmtByte && tmp_header.fmtByte != kSigmaFmtByteTwiggy)
{
DicConsole.DebugWriteLine("DC42 plugin", "Unknown tmp_header.fmtByte = 0x{0:X2} value", tmp_header.fmtByte);
@@ -217,7 +217,7 @@ namespace DiscImageChef.ImagePlugins
return false;
}
if (tmp_header.fmtByte == kInvalidFmtByte)
if(tmp_header.fmtByte == kInvalidFmtByte)
{
DicConsole.DebugWriteLine("DC42 plugin", "Image says it's unformatted");
@@ -239,7 +239,7 @@ namespace DiscImageChef.ImagePlugins
stream.Close();
// Incorrect pascal string length, not DC42
if (buffer[0] > 63)
if(buffer[0] > 63)
return false;
header = new DC42Header();
@@ -266,15 +266,15 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("DC42 plugin", "header.valid = {0}", header.valid);
DicConsole.DebugWriteLine("DC42 plugin", "header.reserved = {0}", header.reserved);
if (header.valid != 1 || header.reserved != 0)
if(header.valid != 1 || header.reserved != 0)
return false;
FileInfo fi = new FileInfo(imagePath);
if (header.dataSize + header.tagSize + 0x54 != fi.Length && header.format != kSigmaFormatTwiggy)
if(header.dataSize + header.tagSize + 0x54 != fi.Length && header.format != kSigmaFormatTwiggy)
return false;
if (header.format != kSonyFormat400K && header.format != kSonyFormat800K && header.format != kSonyFormat720K &&
if(header.format != kSonyFormat400K && header.format != kSonyFormat800K && header.format != kSonyFormat720K &&
header.format != kSonyFormat1440K && header.format != kSonyFormat1680K && header.format != kSigmaFormatTwiggy)
{
DicConsole.DebugWriteLine("DC42 plugin", "Unknown header.format = 0x{0:X2} value", header.format);
@@ -282,7 +282,7 @@ namespace DiscImageChef.ImagePlugins
return false;
}
if (header.fmtByte != kSonyFmtByte400K && header.fmtByte != kSonyFmtByte800K && header.fmtByte != kSonyFmtByte800KIncorrect &&
if(header.fmtByte != kSonyFmtByte400K && header.fmtByte != kSonyFmtByte800K && header.fmtByte != kSonyFmtByte800KIncorrect &&
header.fmtByte != kSonyFmtByteProDos && header.fmtByte != kInvalidFmtByte && header.fmtByte != kSigmaFmtByteTwiggy)
{
DicConsole.DebugWriteLine("DC42 plugin", "Unknown tmp_header.fmtByte = 0x{0:X2} value", header.fmtByte);
@@ -290,7 +290,7 @@ namespace DiscImageChef.ImagePlugins
return false;
}
if (header.fmtByte == kInvalidFmtByte)
if(header.fmtByte == kInvalidFmtByte)
{
DicConsole.DebugWriteLine("DC42 plugin", "Image says it's unformatted");
@@ -305,9 +305,9 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.sectors = header.dataSize / 512;
if (header.tagSize != 0)
if(header.tagSize != 0)
{
if (header.tagSize / 12 != ImageInfo.sectors)
if(header.tagSize / 12 != ImageInfo.sectors)
{
DicConsole.DebugWriteLine("DC42 plugin", "header.tagSize / 12 != sectors");
@@ -322,7 +322,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.imageLastModificationTime = fi.LastWriteTimeUtc;
ImageInfo.imageName = header.diskName;
switch (header.format)
switch(header.format)
{
case kSonyFormat400K:
ImageInfo.mediaType = MediaType.AppleSonySS;
@@ -365,7 +365,7 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
UnknownLBAs.Add(i);
return null;
@@ -376,7 +376,7 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
UnknownLBAs.Add(i);
return null;
@@ -400,7 +400,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("DC42 plugin", "Calculated data checksum = 0x{0:X8}", dataChk);
DicConsole.DebugWriteLine("DC42 plugin", "Stored data checksum = 0x{0:X8}", header.dataChecksum);
if (header.tagSize > 0)
if(header.tagSize > 0)
{
DicConsole.DebugWriteLine("DC42 plugin", "Reading tags");
FileStream tagstream = new FileStream(dc42ImagePath, FileMode.Open, FileAccess.Read);
@@ -449,10 +449,10 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length)
{
if (sectorAddress > ImageInfo.sectors - 1)
if(sectorAddress > ImageInfo.sectors - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > ImageInfo.sectors)
if(sectorAddress + length > ImageInfo.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] buffer = new byte[length * ImageInfo.sectorSize];
@@ -470,16 +470,16 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, SectorTagType tag)
{
if (tag != SectorTagType.AppleSectorTag)
if(tag != SectorTagType.AppleSectorTag)
throw new FeatureUnsupportedImageException(String.Format("Tag {0} not supported by image format", tag));
if (header.tagSize == 0)
if(header.tagSize == 0)
throw new FeatureNotPresentImageException("Disk image does not have tags");
if (sectorAddress > ImageInfo.sectors - 1)
if(sectorAddress > ImageInfo.sectors - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > ImageInfo.sectors)
if(sectorAddress + length > ImageInfo.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] buffer = new byte[length * bptag];
@@ -502,17 +502,17 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length)
{
if (sectorAddress > ImageInfo.sectors - 1)
if(sectorAddress > ImageInfo.sectors - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > ImageInfo.sectors)
if(sectorAddress + length > ImageInfo.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] data = ReadSectors(sectorAddress, length);
byte[] tags = ReadSectorsTag(sectorAddress, length, SectorTagType.AppleSectorTag);
byte[] buffer = new byte[data.Length + tags.Length];
for (uint i = 0; i < length; i++)
for(uint i = 0; i < length; i++)
{
Array.Copy(data, i * (ImageInfo.sectorSize), buffer, i * (ImageInfo.sectorSize + bptag), ImageInfo.sectorSize);
Array.Copy(tags, i * (bptag), buffer, i * (ImageInfo.sectorSize + bptag) + ImageInfo.sectorSize, bptag);
@@ -521,22 +521,22 @@ namespace DiscImageChef.ImagePlugins
return buffer;
}
public override string GetImageFormat()
{
public override string GetImageFormat()
{
return "Apple DiskCopy 4.2";
}
public override string GetImageVersion()
public override string GetImageVersion()
{
return ImageInfo.imageVersion;
}
public override string GetImageApplication()
public override string GetImageApplication()
{
return ImageInfo.imageApplication;
}
public override string GetImageApplicationVersion()
public override string GetImageApplicationVersion()
{
return ImageInfo.imageApplicationVersion;
}
@@ -551,7 +551,7 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageLastModificationTime;
}
public override string GetImageName()
public override string GetImageName()
{
return ImageInfo.imageName;
}
@@ -573,42 +573,42 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageCreator;
}
public override string GetImageComments()
public override string GetImageComments()
{
return ImageInfo.imageComments;
}
public override string GetMediaManufacturer()
public override string GetMediaManufacturer()
{
return ImageInfo.mediaManufacturer;
}
public override string GetMediaModel()
public override string GetMediaModel()
{
return ImageInfo.mediaModel;
}
public override string GetMediaSerialNumber()
public override string GetMediaSerialNumber()
{
return ImageInfo.mediaSerialNumber;
}
public override string GetMediaBarcode()
public override string GetMediaBarcode()
{
return ImageInfo.mediaBarcode;
}
public override string GetMediaPartNumber()
public override string GetMediaPartNumber()
{
return ImageInfo.mediaPartNumber;
}
public override int GetMediaSequence()
public override int GetMediaSequence()
{
return ImageInfo.mediaSequence;
}
public override int GetLastDiskSequence()
public override int GetLastDiskSequence()
{
return ImageInfo.lastMediaSequence;
}
@@ -688,12 +688,12 @@ namespace DiscImageChef.ImagePlugins
#region Private methods
private static UInt32 DC42CheckSum(byte[] buffer)
{
{
UInt32 dc42chk = 0;
if ((buffer.Length & 0x01) == 0x01)
if((buffer.Length & 0x01) == 0x01)
return 0xFFFFFFFF;
for (UInt32 i = 0; i < buffer.Length; i += 2)
for(UInt32 i = 0; i < buffer.Length; i += 2)
{
dc42chk += (uint)(buffer[i] << 8);
dc42chk += buffer[i + 1];

View File

@@ -143,7 +143,7 @@ namespace DiscImageChef.ImagePlugins
int tracksFound = 0;
int tracks = 0;
while (gdiStream.Peek() >= 0)
while(gdiStream.Peek() >= 0)
{
line++;
string _line = gdiStream.ReadLine();
@@ -171,7 +171,7 @@ namespace DiscImageChef.ImagePlugins
return tracks == tracksFound;
}
catch (Exception ex)
catch(Exception ex)
{
DicConsole.ErrorWriteLine("Exception trying to identify image file {0}", this.imagePath);
DicConsole.ErrorWriteLine("Exception: {0}", ex.Message);
@@ -182,9 +182,9 @@ namespace DiscImageChef.ImagePlugins
public override bool OpenImage(string imagePath)
{
if (imagePath == null)
if(imagePath == null)
return false;
if (imagePath == "")
if(imagePath == "")
return false;
this.imagePath = imagePath;
@@ -214,7 +214,7 @@ namespace DiscImageChef.ImagePlugins
GDITrack currentTrack;
densitySeparationSectors = 0;
while (gdiStream.Peek() >= 0)
while(gdiStream.Peek() >= 0)
{
line++;
string _line = gdiStream.ReadLine();
@@ -233,8 +233,8 @@ namespace DiscImageChef.ImagePlugins
tracksFound++;
DicConsole.DebugWriteLine("GDI plugin", "Found track {0} starts at {1} flags {2} type {3} file {4} offset {5} at line {6}",
TrackMatch.Groups["track"].Value, TrackMatch.Groups["start"].Value, TrackMatch.Groups["flags"].Value,
DicConsole.DebugWriteLine("GDI plugin", "Found track {0} starts at {1} flags {2} type {3} file {4} offset {5} at line {6}",
TrackMatch.Groups["track"].Value, TrackMatch.Groups["start"].Value, TrackMatch.Groups["flags"].Value,
TrackMatch.Groups["type"].Value, TrackMatch.Groups["filename"].Value, TrackMatch.Groups["offset"].Value, line);
currentTrack = new GDITrack();
@@ -243,7 +243,7 @@ namespace DiscImageChef.ImagePlugins
currentTrack.offset = long.Parse(TrackMatch.Groups["offset"].Value);
currentTrack.sequence = uint.Parse(TrackMatch.Groups["track"].Value);
currentTrack.startSector = ulong.Parse(TrackMatch.Groups["start"].Value);
currentTrack.trackfile = TrackMatch.Groups["filename"].Value.Replace("\\\"", "\"").Trim(new []{'"'});
currentTrack.trackfile = TrackMatch.Groups["filename"].Value.Replace("\\\"", "\"").Trim(new[] { '"' });
if((currentTrack.startSector - currentStart) > 0)
{
@@ -280,7 +280,7 @@ namespace DiscImageChef.ImagePlugins
}
Session[] _sessions = new Session[2];
for (int s = 0; s < _sessions.Length; s++)
for(int s = 0; s < _sessions.Length; s++)
{
if(s == 0)
{
@@ -342,7 +342,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("GDI plugin", "Session information:");
DicConsole.DebugWriteLine("GDI plugin", "\tDisc contains {0} sessions", discimage.sessions.Count);
for (int i = 0; i < discimage.sessions.Count; i++)
for(int i = 0; i < discimage.sessions.Count; i++)
{
DicConsole.DebugWriteLine("GDI plugin", "\tSession {0} information:", i + 1);
DicConsole.DebugWriteLine("GDI plugin", "\t\tStarting track: {0}", discimage.sessions[i].StartTrack);
@@ -352,19 +352,19 @@ namespace DiscImageChef.ImagePlugins
}
DicConsole.DebugWriteLine("GDI plugin", "Track information:");
DicConsole.DebugWriteLine("GDI plugin", "\tDisc contains {0} tracks", discimage.tracks.Count);
for (int i = 0; i < discimage.tracks.Count; i++)
for(int i = 0; i < discimage.tracks.Count; i++)
{
DicConsole.DebugWriteLine("GDI plugin", "\tTrack {0} information:", discimage.tracks[i].sequence);
DicConsole.DebugWriteLine("GDI plugin", "\t\t{0} bytes per sector", discimage.tracks[i].bps);
DicConsole.DebugWriteLine("GDI plugin", "\t\tPregap: {0} sectors", discimage.tracks[i].pregap);
if ((discimage.tracks[i].flags & 0x80) == 0x80)
if((discimage.tracks[i].flags & 0x80) == 0x80)
DicConsole.DebugWriteLine("GDI plugin", "\t\tTrack is flagged as quadraphonic");
if ((discimage.tracks[i].flags & 0x40) == 0x40)
if((discimage.tracks[i].flags & 0x40) == 0x40)
DicConsole.DebugWriteLine("GDI plugin", "\t\tTrack is data");
if ((discimage.tracks[i].flags & 0x20) == 0x20)
if((discimage.tracks[i].flags & 0x20) == 0x20)
DicConsole.DebugWriteLine("GDI plugin", "\t\tTrack allows digital copy");
if ((discimage.tracks[i].flags & 0x10) == 0x10)
if((discimage.tracks[i].flags & 0x10) == 0x10)
DicConsole.DebugWriteLine("GDI plugin", "\t\tTrack has pre-emphasis applied");
DicConsole.DebugWriteLine("GDI plugin", "\t\tTrack resides in file {0}, type defined as {1}, starting at byte {2}",
@@ -376,9 +376,9 @@ namespace DiscImageChef.ImagePlugins
partitions = new List<Partition>();
ulong byte_offset = 0;
for (int i = 0; i < discimage.tracks.Count; i++)
for(int i = 0; i < discimage.tracks.Count; i++)
{
if (discimage.tracks[i].sequence == 1 && i != 0)
if(discimage.tracks[i].sequence == 1 && i != 0)
throw new ImageNotSupportedException("Unordered tracks");
Partition partition = new Partition();
@@ -398,16 +398,16 @@ namespace DiscImageChef.ImagePlugins
partitions.Add(partition);
}
foreach (GDITrack track in discimage.tracks)
foreach(GDITrack track in discimage.tracks)
ImageInfo.imageSize += track.bps * track.sectors;
foreach (GDITrack track in discimage.tracks)
foreach(GDITrack track in discimage.tracks)
ImageInfo.sectors += track.sectors;
ImageInfo.sectors += densitySeparationSectors;
ImageInfo.sectorSize = 2352; // All others
foreach (GDITrack track in discimage.tracks)
foreach(GDITrack track in discimage.tracks)
{
if((track.flags & 0x40) == 0x40 && track.bps == 2352)
{
@@ -434,7 +434,7 @@ namespace DiscImageChef.ImagePlugins
return true;
}
catch (Exception ex)
catch(Exception ex)
{
DicConsole.ErrorWriteLine("Exception trying to identify image file {0}", imagePath);
DicConsole.ErrorWriteLine("Exception: {0}", ex.Message);
@@ -490,15 +490,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == kvp.Key)
if(gdi_track.sequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < gdi_track.sectors)
if((sectorAddress - kvp.Value) < gdi_track.sectors)
return ReadSectors((sectorAddress - kvp.Value), length, kvp.Key);
}
}
@@ -507,7 +507,7 @@ namespace DiscImageChef.ImagePlugins
ulong transitionStart;
offsetmap.TryGetValue(0, out transitionStart);
if (sectorAddress >= transitionStart && sectorAddress < (densitySeparationSectors + transitionStart))
if(sectorAddress >= transitionStart && sectorAddress < (densitySeparationSectors + transitionStart))
return ReadSectors((sectorAddress - transitionStart), length, 0);
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
@@ -515,15 +515,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, SectorTagType tag)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == kvp.Key)
if(gdi_track.sequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < gdi_track.sectors)
if((sectorAddress - kvp.Value) < gdi_track.sectors)
return ReadSectorsTag((sectorAddress - kvp.Value), length, kvp.Key, tag);
}
}
@@ -532,7 +532,7 @@ namespace DiscImageChef.ImagePlugins
ulong transitionStart;
offsetmap.TryGetValue(0, out transitionStart);
if (sectorAddress >= transitionStart && sectorAddress < (densitySeparationSectors + transitionStart))
if(sectorAddress >= transitionStart && sectorAddress < (densitySeparationSectors + transitionStart))
return ReadSectorsTag((sectorAddress - transitionStart), length, 0, tag);
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
@@ -540,7 +540,7 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length, UInt32 track)
{
if (track == 0)
if(track == 0)
{
if((sectorAddress + length) > densitySeparationSectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
@@ -552,26 +552,26 @@ namespace DiscImageChef.ImagePlugins
_track.sequence = 0;
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == track)
if(gdi_track.sequence == track)
{
_track = gdi_track;
break;
}
}
if (_track.sequence == 0)
if(_track.sequence == 0)
throw new ArgumentOutOfRangeException("track", "Track does not exist in disc image");
if ((sectorAddress + length) > _track.sectors)
if((sectorAddress + length) > _track.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch (_track.tracktype)
switch(_track.tracktype)
{
case TrackType.Audio:
{
@@ -582,7 +582,7 @@ namespace DiscImageChef.ImagePlugins
}
case TrackType.CDMode1:
{
if (_track.bps == 2352)
if(_track.bps == 2352)
{
sector_offset = 16;
sector_size = 2048;
@@ -604,11 +604,11 @@ namespace DiscImageChef.ImagePlugins
ulong remainingSectors = length;
if (_track.pregap > 0 && sectorAddress < _track.pregap)
if(_track.pregap > 0 && sectorAddress < _track.pregap)
{
ulong remainingPregap = _track.pregap - sectorAddress;
byte[] zero;
if (length > remainingPregap)
if(length > remainingPregap)
{
zero = new byte[remainingPregap * sector_size];
remainingSectors -= remainingPregap;
@@ -626,14 +626,14 @@ namespace DiscImageChef.ImagePlugins
return buffer;
imageStream = new FileStream(_track.trackfile, FileMode.Open, FileAccess.Read);
using (BinaryReader br = new BinaryReader(imageStream))
using(BinaryReader br = new BinaryReader(imageStream))
{
br.BaseStream.Seek(_track.offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip) + _track.pregap * _track.bps), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * remainingSectors));
else
{
for (ulong i = 0; i < remainingSectors; i++)
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -649,12 +649,12 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, UInt32 track, SectorTagType tag)
{
if (track == 0)
if(track == 0)
{
if((sectorAddress + length) > densitySeparationSectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
if (tag == SectorTagType.CDTrackFlags)
if(tag == SectorTagType.CDTrackFlags)
return new byte[] { 0x00 };
throw new ArgumentException("Unsupported tag requested for this track", "tag");
@@ -664,26 +664,26 @@ namespace DiscImageChef.ImagePlugins
_track.sequence = 0;
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == track)
if(gdi_track.sequence == track)
{
_track = gdi_track;
break;
}
}
if (_track.sequence == 0)
if(_track.sequence == 0)
throw new ArgumentOutOfRangeException("track", "Track does not exist in disc image");
if (length > _track.sectors)
if(length > _track.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorECC:
case SectorTagType.CDSectorECC_P:
@@ -704,16 +704,16 @@ namespace DiscImageChef.ImagePlugins
throw new ArgumentException("Unsupported tag requested", "tag");
}
switch (_track.tracktype)
switch(_track.tracktype)
{
case TrackType.Audio:
throw new ArgumentException("There are no tags on audio tracks", "tag");
case TrackType.CDMode1:
{
if (_track.bps != 2352)
if(_track.bps != 2352)
throw new FeatureNotPresentImageException("Image does not include tags for mode 1 sectors");
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorSync:
{
@@ -773,11 +773,11 @@ namespace DiscImageChef.ImagePlugins
ulong remainingSectors = length;
if (_track.pregap > 0 && sectorAddress < _track.pregap)
if(_track.pregap > 0 && sectorAddress < _track.pregap)
{
ulong remainingPregap = _track.pregap - sectorAddress;
byte[] zero;
if (length > remainingPregap)
if(length > remainingPregap)
{
zero = new byte[remainingPregap * sector_size];
remainingSectors -= remainingPregap;
@@ -795,14 +795,14 @@ namespace DiscImageChef.ImagePlugins
return buffer;
imageStream = new FileStream(_track.trackfile, FileMode.Open, FileAccess.Read);
using (BinaryReader br = new BinaryReader(imageStream))
using(BinaryReader br = new BinaryReader(imageStream))
{
br.BaseStream.Seek(_track.offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip) + _track.pregap * _track.bps), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * remainingSectors));
else
{
for (ulong i = 0; i < remainingSectors; i++)
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -828,15 +828,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == kvp.Key)
if(gdi_track.sequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < gdi_track.sectors)
if((sectorAddress - kvp.Value) < gdi_track.sectors)
return ReadSectorsLong((sectorAddress - kvp.Value), length, kvp.Key);
}
}
@@ -848,7 +848,7 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length, UInt32 track)
{
if (track == 0)
if(track == 0)
{
if((sectorAddress + length) > densitySeparationSectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
@@ -860,26 +860,26 @@ namespace DiscImageChef.ImagePlugins
_track.sequence = 0;
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.sequence == track)
if(gdi_track.sequence == track)
{
_track = gdi_track;
break;
}
}
if (_track.sequence == 0)
if(_track.sequence == 0)
throw new ArgumentOutOfRangeException("track", "Track does not exist in disc image");
if ((sectorAddress + length) > _track.sectors)
if((sectorAddress + length) > _track.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch (_track.tracktype)
switch(_track.tracktype)
{
case TrackType.Audio:
{
@@ -890,7 +890,7 @@ namespace DiscImageChef.ImagePlugins
}
case TrackType.CDMode1:
{
if (_track.bps == 2352)
if(_track.bps == 2352)
{
sector_offset = 0;
sector_size = 2352;
@@ -912,11 +912,11 @@ namespace DiscImageChef.ImagePlugins
ulong remainingSectors = length;
if (_track.pregap > 0 && sectorAddress < _track.pregap)
if(_track.pregap > 0 && sectorAddress < _track.pregap)
{
ulong remainingPregap = _track.pregap - sectorAddress;
byte[] zero;
if (length > remainingPregap)
if(length > remainingPregap)
{
zero = new byte[remainingPregap * sector_size];
remainingSectors -= remainingPregap;
@@ -934,14 +934,14 @@ namespace DiscImageChef.ImagePlugins
return buffer;
imageStream = new FileStream(_track.trackfile, FileMode.Open, FileAccess.Read);
using (BinaryReader br = new BinaryReader(imageStream))
using(BinaryReader br = new BinaryReader(imageStream))
{
br.BaseStream.Seek(_track.offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip) + _track.pregap * _track.bps), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * remainingSectors));
else
{
for (ulong i = 0; i < remainingSectors; i++)
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -955,22 +955,22 @@ namespace DiscImageChef.ImagePlugins
return buffer;
}
public override string GetImageFormat()
public override string GetImageFormat()
{
return "Dreamcast GDI image";
}
public override string GetImageVersion()
public override string GetImageVersion()
{
return ImageInfo.imageVersion;
}
public override string GetImageApplication()
public override string GetImageApplication()
{
return ImageInfo.imageApplication;
}
public override string GetImageApplicationVersion()
public override string GetImageApplicationVersion()
{
return ImageInfo.imageApplicationVersion;
}
@@ -985,7 +985,7 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageLastModificationTime;
}
public override string GetImageComments()
public override string GetImageComments()
{
return ImageInfo.imageComments;
}
@@ -1014,7 +1014,7 @@ namespace DiscImageChef.ImagePlugins
{
List<Track> tracks = new List<Track>();
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
Track _track = new Track();
@@ -1023,7 +1023,7 @@ namespace DiscImageChef.ImagePlugins
_track.TrackStartSector = gdi_track.startSector;
_track.TrackEndSector = _track.TrackStartSector + gdi_track.sectors - 1;
_track.TrackPregap = gdi_track.pregap;
if (gdi_track.highDensity)
if(gdi_track.highDensity)
_track.TrackSession = 2;
else
_track.TrackSession = 1;
@@ -1047,7 +1047,7 @@ namespace DiscImageChef.ImagePlugins
public override List<Track> GetSessionTracks(Session session)
{
if (discimage.sessions.Contains(session))
if(discimage.sessions.Contains(session))
{
return GetSessionTracks(session.SessionSequence);
}
@@ -1071,9 +1071,9 @@ namespace DiscImageChef.ImagePlugins
throw new ImageNotSupportedException("Session does not exist in disc image");
}
foreach (GDITrack gdi_track in discimage.tracks)
foreach(GDITrack gdi_track in discimage.tracks)
{
if (gdi_track.highDensity == expectedDensity)
if(gdi_track.highDensity == expectedDensity)
{
Track _track = new Track();
@@ -1082,7 +1082,7 @@ namespace DiscImageChef.ImagePlugins
_track.TrackStartSector = gdi_track.startSector;
_track.TrackEndSector = _track.TrackStartSector + gdi_track.sectors - 1;
_track.TrackPregap = gdi_track.pregap;
if (gdi_track.highDensity)
if(gdi_track.highDensity)
_track.TrackSession = 2;
else
_track.TrackSession = 1;
@@ -1130,12 +1130,12 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
Array.Copy(buffer, i * bps, sector, 0, bps);
bool? sectorStatus = Checksums.CDChecksums.CheckCDSector(sector);
switch (sectorStatus)
switch(sectorStatus)
{
case null:
UnknownLBAs.Add((ulong)i + sectorAddress);
@@ -1146,9 +1146,9 @@ namespace DiscImageChef.ImagePlugins
}
}
if (UnknownLBAs.Count > 0)
if(UnknownLBAs.Count > 0)
return null;
if (FailingLBAs.Count > 0)
if(FailingLBAs.Count > 0)
return false;
return true;
}
@@ -1161,12 +1161,12 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
Array.Copy(buffer, i * bps, sector, 0, bps);
bool? sectorStatus = Checksums.CDChecksums.CheckCDSector(sector);
switch (sectorStatus)
switch(sectorStatus)
{
case null:
UnknownLBAs.Add((ulong)i + sectorAddress);
@@ -1177,9 +1177,9 @@ namespace DiscImageChef.ImagePlugins
}
}
if (UnknownLBAs.Count > 0)
if(UnknownLBAs.Count > 0)
return null;
if (FailingLBAs.Count > 0)
if(FailingLBAs.Count > 0)
return false;
return true;
}
@@ -1193,12 +1193,12 @@ namespace DiscImageChef.ImagePlugins
#region Unsupported features
public override int GetMediaSequence()
public override int GetMediaSequence()
{
return ImageInfo.mediaSequence;
}
public override int GetLastDiskSequence()
public override int GetLastDiskSequence()
{
return ImageInfo.lastMediaSequence;
}
@@ -1233,12 +1233,12 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.mediaModel;
}
public override string GetImageName()
public override string GetImageName()
{
return ImageInfo.imageName;
}
public override string GetImageCreator()
public override string GetImageCreator()
{
return ImageInfo.imageCreator;
}

View File

@@ -215,31 +215,31 @@ namespace DiscImageChef.ImagePlugins
/// Gets the image format.
/// </summary>
/// <returns>The image format.</returns>
public abstract string GetImageFormat();
public abstract string GetImageFormat();
/// <summary>
/// Gets the image version.
/// </summary>
/// <returns>The image version.</returns>
public abstract string GetImageVersion();
public abstract string GetImageVersion();
/// <summary>
/// Gets the application that created the image.
/// </summary>
/// <returns>The application that created the image.</returns>
public abstract string GetImageApplication();
public abstract string GetImageApplication();
/// <summary>
/// Gets the version of the application that created the image.
/// </summary>
/// <returns>The version of the application that created the image.</returns>
public abstract string GetImageApplicationVersion();
public abstract string GetImageApplicationVersion();
/// <summary>
/// Gets the image creator.
/// </summary>
/// <returns>Who created the image.</returns>
public abstract string GetImageCreator();
public abstract string GetImageCreator();
/// <summary>
/// Gets the image creation time.
@@ -257,13 +257,13 @@ namespace DiscImageChef.ImagePlugins
/// Gets the name of the image.
/// </summary>
/// <returns>The image name.</returns>
public abstract string GetImageName();
public abstract string GetImageName();
/// <summary>
/// Gets the image comments.
/// </summary>
/// <returns>The image comments.</returns>
public abstract string GetImageComments();
public abstract string GetImageComments();
// Functions to get information from disk represented by image
@@ -271,31 +271,31 @@ namespace DiscImageChef.ImagePlugins
/// Gets the media manufacturer.
/// </summary>
/// <returns>The media manufacturer.</returns>
public abstract string GetMediaManufacturer();
public abstract string GetMediaManufacturer();
/// <summary>
/// Gets the media model.
/// </summary>
/// <returns>The media model.</returns>
public abstract string GetMediaModel();
public abstract string GetMediaModel();
/// <summary>
/// Gets the media serial number.
/// </summary>
/// <returns>The media serial number.</returns>
public abstract string GetMediaSerialNumber();
public abstract string GetMediaSerialNumber();
/// <summary>
/// Gets the media (or product) barcode.
/// </summary>
/// <returns>The media barcode.</returns>
public abstract string GetMediaBarcode();
public abstract string GetMediaBarcode();
/// <summary>
/// Gets the media part number.
/// </summary>
/// <returns>The media part number.</returns>
public abstract string GetMediaPartNumber();
public abstract string GetMediaPartNumber();
/// <summary>
/// Gets the type of the media.
@@ -307,13 +307,13 @@ namespace DiscImageChef.ImagePlugins
/// Gets the media sequence.
/// </summary>
/// <returns>The media sequence, starting at 1.</returns>
public abstract int GetMediaSequence();
public abstract int GetMediaSequence();
/// <summary>
/// Gets the last media in the sequence.
/// </summary>
/// <returns>The last media in the sequence.</returns>
public abstract int GetLastDiskSequence();
public abstract int GetLastDiskSequence();
// Functions to get information from drive used to create image
@@ -727,7 +727,7 @@ namespace DiscImageChef.ImagePlugins
protected FeatureSupportedButNotImplementedImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
if (info == null)
if(info == null)
throw new ArgumentNullException("info");
}
}
@@ -763,7 +763,7 @@ namespace DiscImageChef.ImagePlugins
protected FeatureUnsupportedImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
if (info == null)
if(info == null)
throw new ArgumentNullException("info");
}
}
@@ -799,7 +799,7 @@ namespace DiscImageChef.ImagePlugins
protected FeatureNotPresentImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
if (info == null)
if(info == null)
throw new ArgumentNullException("info");
}
}
@@ -835,7 +835,7 @@ namespace DiscImageChef.ImagePlugins
protected FeaturedNotSupportedByDiscImageException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
if (info == null)
if(info == null)
throw new ArgumentNullException("info");
}
}
@@ -871,7 +871,7 @@ namespace DiscImageChef.ImagePlugins
protected ImageNotSupportedException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
if (info == null)
if(info == null)
throw new ArgumentNullException("info");
}
}

View File

@@ -908,12 +908,12 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("Nero plugin", "footerV2.ChunkID = 0x{0:X2} (\"{1}\")", footerV2.ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(footerV2.ChunkID)));
DicConsole.DebugWriteLine("Nero plugin", "footerV2.FirstChunkOffset = {0}", footerV2.FirstChunkOffset);
if (footerV2.ChunkID == NeroV2FooterID && footerV2.FirstChunkOffset < (ulong)imageInfo.Length)
if(footerV2.ChunkID == NeroV2FooterID && footerV2.FirstChunkOffset < (ulong)imageInfo.Length)
{
imageStream.Close();
return true;
}
if (footerV1.ChunkID == NeroV1FooterID && footerV1.FirstChunkOffset < (ulong)imageInfo.Length)
if(footerV1.ChunkID == NeroV1FooterID && footerV1.FirstChunkOffset < (ulong)imageInfo.Length)
{
imageStream.Close();
return true;
@@ -953,9 +953,9 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("Nero plugin", "footerV2.ChunkID = 0x{0:X2} (\"{1}\")", footerV2.ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(footerV2.ChunkID)));
DicConsole.DebugWriteLine("Nero plugin", "footerV2.FirstChunkOffset = {0}", footerV2.FirstChunkOffset);
if (footerV1.ChunkID == NeroV1FooterID && footerV1.FirstChunkOffset < (ulong)imageInfo.Length)
if(footerV1.ChunkID == NeroV1FooterID && footerV1.FirstChunkOffset < (ulong)imageInfo.Length)
imageNewFormat = false;
else if (footerV2.ChunkID == NeroV2FooterID && footerV2.FirstChunkOffset < (ulong)imageInfo.Length)
else if(footerV2.ChunkID == NeroV2FooterID && footerV2.FirstChunkOffset < (ulong)imageInfo.Length)
imageNewFormat = true;
else
{
@@ -963,7 +963,7 @@ namespace DiscImageChef.ImagePlugins
return true;
}
if (imageNewFormat)
if(imageNewFormat)
imageStream.Seek((long)footerV2.FirstChunkOffset, SeekOrigin.Begin);
else
imageStream.Seek(footerV1.FirstChunkOffset, SeekOrigin.Begin);
@@ -979,7 +979,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.sectors = 0;
ImageInfo.sectorSize = 0;
while (parsing)
while(parsing)
{
byte[] ChunkHeaderBuffer = new byte[8];
UInt32 ChunkID;
@@ -992,7 +992,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("Nero plugin", "ChunkID = 0x{0:X2} (\"{1}\")", ChunkID, System.Text.Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(ChunkID)));
DicConsole.DebugWriteLine("Nero plugin", "ChunkLength = {0}", ChunkLength);
switch (ChunkID)
switch(ChunkID)
{
case NeroV1CUEID:
{
@@ -1004,7 +1004,7 @@ namespace DiscImageChef.ImagePlugins
neroCuesheetV1.Entries = new List<NeroV1CueEntry>();
byte[] tmpbuffer = new byte[8];
for (int i = 0; i < neroCuesheetV1.ChunkSize; i += 8)
for(int i = 0; i < neroCuesheetV1.ChunkSize; i += 8)
{
NeroV1CueEntry _entry = new NeroV1CueEntry();
imageStream.Read(tmpbuffer, 0, 8);
@@ -1040,7 +1040,7 @@ namespace DiscImageChef.ImagePlugins
neroCuesheetV2.Entries = new List<NeroV2CueEntry>();
byte[] tmpbuffer = new byte[8];
for (int i = 0; i < neroCuesheetV2.ChunkSize; i += 8)
for(int i = 0; i < neroCuesheetV2.ChunkSize; i += 8)
{
NeroV2CueEntry _entry = new NeroV2CueEntry();
imageStream.Read(tmpbuffer, 0, 8);
@@ -1080,10 +1080,10 @@ namespace DiscImageChef.ImagePlugins
neroDAOV1.LastTrack = tmpbuffer[21];
neroDAOV1.Tracks = new List<NeroV1DAOEntry>();
if (!ImageInfo.readableMediaTags.Contains(MediaTagType.CD_MCN))
if(!ImageInfo.readableMediaTags.Contains(MediaTagType.CD_MCN))
ImageInfo.readableMediaTags.Add(MediaTagType.CD_MCN);
if (!ImageInfo.readableSectorTags.Contains(SectorTagType.CDTrackISRC))
if(!ImageInfo.readableSectorTags.Contains(SectorTagType.CDTrackISRC))
ImageInfo.readableSectorTags.Add(SectorTagType.CDTrackISRC);
DicConsole.DebugWriteLine("Nero plugin", "neroDAOV1.ChunkSizeLe = {0} bytes", neroDAOV1.ChunkSizeLe);
@@ -1095,7 +1095,7 @@ namespace DiscImageChef.ImagePlugins
UPC = neroDAOV1.UPC;
tmpbuffer = new byte[30];
for (int i = 0; i < (neroDAOV1.ChunkSizeBe - 22); i += 30)
for(int i = 0; i < (neroDAOV1.ChunkSizeBe - 22); i += 30)
{
NeroV1DAOEntry _entry = new NeroV1DAOEntry();
imageStream.Read(tmpbuffer, 0, 30);
@@ -1119,7 +1119,7 @@ namespace DiscImageChef.ImagePlugins
neroDAOV1.Tracks.Add(_entry);
if (_entry.SectorSize > ImageInfo.sectorSize)
if(_entry.SectorSize > ImageInfo.sectorSize)
ImageInfo.sectorSize = _entry.SectorSize;
TrackISRCs.Add(currenttrack, _entry.ISRC);
@@ -1163,10 +1163,10 @@ namespace DiscImageChef.ImagePlugins
neroDAOV2.LastTrack = tmpbuffer[21];
neroDAOV2.Tracks = new List<NeroV2DAOEntry>();
if (!ImageInfo.readableMediaTags.Contains(MediaTagType.CD_MCN))
if(!ImageInfo.readableMediaTags.Contains(MediaTagType.CD_MCN))
ImageInfo.readableMediaTags.Add(MediaTagType.CD_MCN);
if (!ImageInfo.readableSectorTags.Contains(SectorTagType.CDTrackISRC))
if(!ImageInfo.readableSectorTags.Contains(SectorTagType.CDTrackISRC))
ImageInfo.readableSectorTags.Add(SectorTagType.CDTrackISRC);
UPC = neroDAOV2.UPC;
@@ -1178,7 +1178,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("Nero plugin", "neroDAOV2.LastTrack = {0}", neroDAOV2.LastTrack);
tmpbuffer = new byte[42];
for (int i = 0; i < (neroDAOV2.ChunkSizeBe - 22); i += 42)
for(int i = 0; i < (neroDAOV2.ChunkSizeBe - 22); i += 42)
{
NeroV2DAOEntry _entry = new NeroV2DAOEntry();
imageStream.Read(tmpbuffer, 0, 42);
@@ -1202,7 +1202,7 @@ namespace DiscImageChef.ImagePlugins
neroDAOV2.Tracks.Add(_entry);
if (_entry.SectorSize > ImageInfo.sectorSize)
if(_entry.SectorSize > ImageInfo.sectorSize)
ImageInfo.sectorSize = _entry.SectorSize;
TrackISRCs.Add(currenttrack, _entry.ISRC);
@@ -1238,7 +1238,7 @@ namespace DiscImageChef.ImagePlugins
neroCDTXT.Packs = new List<NeroCDTextPack>();
byte[] tmpbuffer = new byte[18];
for (int i = 0; i < (neroCDTXT.ChunkSize); i += 18)
for(int i = 0; i < (neroCDTXT.ChunkSize); i += 18)
{
NeroCDTextPack _entry = new NeroCDTextPack();
imageStream.Read(tmpbuffer, 0, 18);
@@ -1274,7 +1274,7 @@ namespace DiscImageChef.ImagePlugins
neroTAOV1.Tracks = new List<NeroV1TAOEntry>();
byte[] tmpbuffer = new byte[20];
for (int i = 0; i < (neroTAOV1.ChunkSize); i += 20)
for(int i = 0; i < (neroTAOV1.ChunkSize); i += 20)
{
NeroV1TAOEntry _entry = new NeroV1TAOEntry();
imageStream.Read(tmpbuffer, 0, 20);
@@ -1294,7 +1294,7 @@ namespace DiscImageChef.ImagePlugins
neroTAOV1.Tracks.Add(_entry);
if (NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode) > ImageInfo.sectorSize)
if(NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode) > ImageInfo.sectorSize)
ImageInfo.sectorSize = NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode);
NeroTrack _neroTrack = new NeroTrack();
@@ -1328,7 +1328,7 @@ namespace DiscImageChef.ImagePlugins
neroTAOV2.Tracks = new List<NeroV2TAOEntry>();
byte[] tmpbuffer = new byte[32];
for (int i = 0; i < (neroTAOV2.ChunkSize); i += 32)
for(int i = 0; i < (neroTAOV2.ChunkSize); i += 32)
{
NeroV2TAOEntry _entry = new NeroV2TAOEntry();
imageStream.Read(tmpbuffer, 0, 32);
@@ -1350,7 +1350,7 @@ namespace DiscImageChef.ImagePlugins
neroTAOV2.Tracks.Add(_entry);
if (NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode) > ImageInfo.sectorSize)
if(NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode) > ImageInfo.sectorSize)
ImageInfo.sectorSize = NeroTrackModeToBytesPerSector((DAOMode)_entry.Mode);
NeroTrack _neroTrack = new NeroTrack();
@@ -1485,7 +1485,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.driveSerialNumber = null;
ImageInfo.mediaSequence = 0;
ImageInfo.lastMediaSequence = 0;
if (imageNewFormat)
if(imageNewFormat)
{
ImageInfo.imageSize = footerV2.FirstChunkOffset;
ImageInfo.imageVersion = "Nero Burning ROM >= 5.5";
@@ -1500,7 +1500,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.imageApplicationVersion = "<= 5.0";
}
if (neroSessions.Count == 0)
if(neroSessions.Count == 0)
neroSessions.Add(1, currenttrack);
DicConsole.DebugWriteLine("Nero plugin", "Building offset, track and session maps");
@@ -1511,10 +1511,10 @@ namespace DiscImageChef.ImagePlugins
uint currentsessioncurrenttrack = 1;
Session currentsessionstruct = new Session();
ulong PartitionSequence = 0;
for (uint i = 1; i <= neroTracks.Count; i++)
for(uint i = 1; i <= neroTracks.Count; i++)
{
NeroTrack _neroTrack;
if (neroTracks.TryGetValue(i, out _neroTrack))
if(neroTracks.TryGetValue(i, out _neroTrack))
{
DicConsole.DebugWriteLine("Nero plugin", "\tcurrentsession = {0}", currentsession);
DicConsole.DebugWriteLine("Nero plugin", "\tcurrentsessionmaxtrack = {0}", currentsessionmaxtrack);
@@ -1522,7 +1522,7 @@ namespace DiscImageChef.ImagePlugins
Track _track = new Track();
_track.Indexes = new Dictionary<int, ulong>();
if (_neroTrack.Index0 < _neroTrack.Index1)
if(_neroTrack.Index0 < _neroTrack.Index1)
_track.Indexes.Add(0, _neroTrack.Index0 / _neroTrack.SectorSize);
_track.Indexes.Add(1, _neroTrack.Index1 / _neroTrack.SectorSize);
_track.TrackDescription = StringHandlers.CToString(_neroTrack.ISRC);
@@ -1591,7 +1591,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackStartSector = {0}", _track.TrackStartSector);
DicConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackType = {0}", _track.TrackType);
if (currentsessioncurrenttrack == 1)
if(currentsessioncurrenttrack == 1)
{
currentsessionstruct = new Session();
currentsessionstruct.SessionSequence = currentsession;
@@ -1599,7 +1599,7 @@ namespace DiscImageChef.ImagePlugins
currentsessionstruct.StartTrack = _track.TrackSequence;
}
currentsessioncurrenttrack++;
if (currentsessioncurrenttrack > currentsessionmaxtrack)
if(currentsessioncurrenttrack > currentsessionmaxtrack)
{
currentsession++;
neroSessions.TryGetValue(currentsession, out currentsessionmaxtrack);
@@ -1611,10 +1611,10 @@ namespace DiscImageChef.ImagePlugins
offsetmap.Add(_track.TrackSequence, _track.TrackStartSector);
DicConsole.DebugWriteLine("Nero plugin", "\t\t Offset[{0}]: {1}", _track.TrackSequence, _track.TrackStartSector);
CommonTypes.Partition partition;
if (_neroTrack.Index0 < _neroTrack.Index1)
if(_neroTrack.Index0 < _neroTrack.Index1)
{
partition = new CommonTypes.Partition();
partition.PartitionDescription = String.Format("Track {0} Index 0", _track.TrackSequence);
@@ -1679,7 +1679,7 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadDiskTag(MediaTagType tag)
{
switch (tag)
switch(tag)
{
case MediaTagType.CD_MCN:
return UPC;
@@ -1712,15 +1712,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (Track _track in imageTracks)
foreach(Track _track in imageTracks)
{
if (_track.TrackSequence == kvp.Key)
if(_track.TrackSequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
if((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
return ReadSectors((sectorAddress - kvp.Value), length, kvp.Key);
}
}
@@ -1732,15 +1732,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, SectorTagType tag)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (Track _track in imageTracks)
foreach(Track _track in imageTracks)
{
if (_track.TrackSequence == kvp.Key)
if(_track.TrackSequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
if((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
return ReadSectorsTag((sectorAddress - kvp.Value), length, kvp.Key, tag);
}
}
@@ -1754,17 +1754,17 @@ namespace DiscImageChef.ImagePlugins
{
NeroTrack _track;
if (!neroTracks.TryGetValue(track, out _track))
if(!neroTracks.TryGetValue(track, out _track))
throw new ArgumentOutOfRangeException("track", "Track not found");
if (length > _track.Sectors)
if(length > _track.Sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch ((DAOMode)_track.Mode)
switch((DAOMode)_track.Mode)
{
case DAOMode.Data:
case DAOMode.DataM2F1:
@@ -1802,7 +1802,7 @@ namespace DiscImageChef.ImagePlugins
sector_skip = 4;
break;
}
// TODO: Supposing Nero suffixes the subchannel to the channel
// TODO: Supposing Nero suffixes the subchannel to the channel
case DAOMode.DataRawSub:
{
sector_offset = 16;
@@ -1831,14 +1831,14 @@ namespace DiscImageChef.ImagePlugins
byte[] buffer = new byte[sector_size * length];
imageStream = new FileStream(_imagePath, FileMode.Open, FileAccess.Read);
using (BinaryReader br = new BinaryReader(imageStream))
using(BinaryReader br = new BinaryReader(imageStream))
{
br.BaseStream.Seek((long)_track.Offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip)), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * length));
else
{
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -1857,17 +1857,17 @@ namespace DiscImageChef.ImagePlugins
{
NeroTrack _track;
if (!neroTracks.TryGetValue(track, out _track))
if(!neroTracks.TryGetValue(track, out _track))
throw new ArgumentOutOfRangeException("track", "Track not found");
if (length > _track.Sectors)
if(length > _track.Sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorECC:
case SectorTagType.CDSectorECC_P:
@@ -1883,7 +1883,7 @@ namespace DiscImageChef.ImagePlugins
byte[] flags = new byte[1];
flags[0] = 0x00;
if ((DAOMode)_track.Mode != DAOMode.Audio && (DAOMode)_track.Mode != DAOMode.AudioSub)
if((DAOMode)_track.Mode != DAOMode.Audio && (DAOMode)_track.Mode != DAOMode.AudioSub)
flags[0] += 0x40;
return flags;
@@ -1896,14 +1896,14 @@ namespace DiscImageChef.ImagePlugins
throw new ArgumentException("Unsupported tag requested", "tag");
}
switch ((DAOMode)_track.Mode)
switch((DAOMode)_track.Mode)
{
case DAOMode.Data:
case DAOMode.DataM2F1:
throw new ArgumentException("No tags in image for requested track", "tag");
case DAOMode.DataM2F2:
{
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorSync:
case SectorTagType.CDSectorHeader:
@@ -1935,7 +1935,7 @@ namespace DiscImageChef.ImagePlugins
throw new ArgumentException("There are no tags on audio tracks", "tag");
case DAOMode.DataRaw:
{
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorSync:
{
@@ -1987,12 +1987,12 @@ namespace DiscImageChef.ImagePlugins
}
break;
}
// TODO
// TODO
case DAOMode.DataM2RawSub:
throw new FeatureSupportedButNotImplementedImageException("Feature not yet implemented");
case DAOMode.DataRawSub:
{
switch (tag)
switch(tag)
{
case SectorTagType.CDSectorSync:
{
@@ -2052,7 +2052,7 @@ namespace DiscImageChef.ImagePlugins
}
case DAOMode.AudioSub:
{
if (tag != SectorTagType.CDSectorSubchannel)
if(tag != SectorTagType.CDSectorSubchannel)
throw new ArgumentException("Unsupported tag requested for this track", "tag");
sector_offset = 2352;
@@ -2067,14 +2067,14 @@ namespace DiscImageChef.ImagePlugins
byte[] buffer = new byte[sector_size * length];
imageStream = new FileStream(_imagePath, FileMode.Open, FileAccess.Read);
using (BinaryReader br = new BinaryReader(imageStream))
using(BinaryReader br = new BinaryReader(imageStream))
{
br.BaseStream.Seek((long)_track.Offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip)), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * length));
else
{
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -2101,15 +2101,15 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length)
{
foreach (KeyValuePair<uint, ulong> kvp in offsetmap)
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if (sectorAddress >= kvp.Value)
if(sectorAddress >= kvp.Value)
{
foreach (Track _track in imageTracks)
foreach(Track _track in imageTracks)
{
if (_track.TrackSequence == kvp.Key)
if(_track.TrackSequence == kvp.Key)
{
if ((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
if((sectorAddress - kvp.Value) < (_track.TrackEndSector - _track.TrackStartSector))
return ReadSectorsLong((sectorAddress - kvp.Value), length, kvp.Key);
}
}
@@ -2123,17 +2123,17 @@ namespace DiscImageChef.ImagePlugins
{
NeroTrack _track;
if (!neroTracks.TryGetValue(track, out _track))
if(!neroTracks.TryGetValue(track, out _track))
throw new ArgumentOutOfRangeException("track", "Track not found");
if (length > _track.Sectors)
if(length > _track.Sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than present in track, won't cross tracks");
uint sector_offset;
uint sector_size;
uint sector_skip;
switch ((DAOMode)_track.Mode)
switch((DAOMode)_track.Mode)
{
case DAOMode.Data:
case DAOMode.DataM2F1:
@@ -2179,11 +2179,11 @@ namespace DiscImageChef.ImagePlugins
br.BaseStream.Seek((long)_track.Offset + (long)(sectorAddress * (sector_offset + sector_size + sector_skip)), SeekOrigin.Begin);
if (sector_offset == 0 && sector_skip == 0)
if(sector_offset == 0 && sector_skip == 0)
buffer = br.ReadBytes((int)(sector_size * length));
else
{
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
byte[] sector;
br.BaseStream.Seek(sector_offset, SeekOrigin.Current);
@@ -2256,8 +2256,8 @@ namespace DiscImageChef.ImagePlugins
public override List<Track> GetSessionTracks(UInt16 session)
{
List<Track> sessionTracks = new List<Track>();
foreach (Track _track in imageTracks)
if (_track.TrackSession == session)
foreach(Track _track in imageTracks)
if(_track.TrackSession == session)
sessionTracks.Add(_track);
return sessionTracks;
@@ -2288,12 +2288,12 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
Array.Copy(buffer, i * bps, sector, 0, bps);
bool? sectorStatus = Checksums.CDChecksums.CheckCDSector(sector);
switch (sectorStatus)
switch(sectorStatus)
{
case null:
UnknownLBAs.Add((ulong)i + sectorAddress);
@@ -2304,9 +2304,9 @@ namespace DiscImageChef.ImagePlugins
}
}
if (UnknownLBAs.Count > 0)
if(UnknownLBAs.Count > 0)
return null;
if (FailingLBAs.Count > 0)
if(FailingLBAs.Count > 0)
return false;
return true;
}
@@ -2319,12 +2319,12 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (int i = 0; i < length; i++)
for(int i = 0; i < length; i++)
{
Array.Copy(buffer, i * bps, sector, 0, bps);
bool? sectorStatus = Checksums.CDChecksums.CheckCDSector(sector);
switch (sectorStatus)
switch(sectorStatus)
{
case null:
UnknownLBAs.Add((ulong)i + sectorAddress);
@@ -2335,9 +2335,9 @@ namespace DiscImageChef.ImagePlugins
}
}
if (UnknownLBAs.Count > 0)
if(UnknownLBAs.Count > 0)
return null;
if (FailingLBAs.Count > 0)
if(FailingLBAs.Count > 0)
return false;
return true;
}
@@ -2353,7 +2353,7 @@ namespace DiscImageChef.ImagePlugins
static MediaType NeroMediaTypeToMediaType(NeroMediaTypes type)
{
switch (type)
switch(type)
{
case NeroMediaTypes.NERO_MTYP_DDCD:
return MediaType.DDCD;
@@ -2406,7 +2406,7 @@ namespace DiscImageChef.ImagePlugins
static TrackType NeroTrackModeToTrackType(DAOMode mode)
{
switch (mode)
switch(mode)
{
case DAOMode.Data:
case DAOMode.DataRaw:
@@ -2429,7 +2429,7 @@ namespace DiscImageChef.ImagePlugins
static UInt16 NeroTrackModeToBytesPerSector(DAOMode mode)
{
switch (mode)
switch(mode)
{
case DAOMode.Data:
case DAOMode.DataM2F1:

View File

@@ -242,7 +242,7 @@ namespace DiscImageChef.ImagePlugins
header.signature = BitConverter.ToUInt16(headerBytes, 0);
if (header.signature != tdMagic && header.signature != tdAdvCompMagic)
if(header.signature != tdMagic && header.signature != tdAdvCompMagic)
return false;
header.sequence = headerBytes[2];
@@ -275,16 +275,16 @@ namespace DiscImageChef.ImagePlugins
// This may deny legal images
// That would be much of a coincidence
if (header.crc == calculatedHeaderCRC)
if(header.crc == calculatedHeaderCRC)
return true;
if (header.sequence != 0x00)
if(header.sequence != 0x00)
return false;
if (header.dataRate != DataRate250kbps && header.dataRate != DataRate300kbps && header.dataRate != DataRate500kbps)
if(header.dataRate != DataRate250kbps && header.dataRate != DataRate300kbps && header.dataRate != DataRate500kbps)
return false;
if (header.driveType != DriveType35DD && header.driveType != DriveType35ED && header.driveType != DriveType35HD && header.driveType != DriveType525DD &&
if(header.driveType != DriveType35DD && header.driveType != DriveType35ED && header.driveType != DriveType35HD && header.driveType != DriveType525DD &&
header.driveType != DriveType525HD && header.driveType != DriveType525HD_DDDisk && header.driveType != DriveType8inch)
return false;
@@ -296,14 +296,14 @@ namespace DiscImageChef.ImagePlugins
header = new TD0Header();
byte[] headerBytes = new byte[12];
FileStream stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read);
stream.Read(headerBytes, 0, 12);
header.signature = BitConverter.ToUInt16(headerBytes, 0);
if (header.signature != tdMagic && header.signature != tdAdvCompMagic)
if(header.signature != tdMagic && header.signature != tdAdvCompMagic)
return false;
header.sequence = headerBytes[2];
header.diskSet = headerBytes[3];
header.version = headerBytes[4];
@@ -321,7 +321,7 @@ namespace DiscImageChef.ImagePlugins
byte[] headerBytesForCRC = new byte[10];
Array.Copy(headerBytes, headerBytesForCRC, 10);
UInt16 calculatedHeaderCRC = TeleDiskCRC(0x0000, headerBytesForCRC);
DicConsole.DebugWriteLine("TeleDisk plugin", "header.signature = 0x{0:X4}", header.signature);
DicConsole.DebugWriteLine("TeleDisk plugin", "header.sequence = 0x{0:X2}", header.sequence);
DicConsole.DebugWriteLine("TeleDisk plugin", "header.diskSet = 0x{0:X2}", header.diskSet);
@@ -336,30 +336,30 @@ namespace DiscImageChef.ImagePlugins
// We need more checks as the magic is too simply.
// This may deny legal images
// That would be much of a coincidence
if (header.crc != calculatedHeaderCRC)
if(header.crc != calculatedHeaderCRC)
{
ADiskCRCHasFailed = true;
DicConsole.DebugWriteLine("TeleDisk plugin", "Calculated CRC does not coincide with stored one.");
}
if (header.sequence != 0x00)
if(header.sequence != 0x00)
return false;
if (header.dataRate != DataRate250kbps && header.dataRate != DataRate300kbps && header.dataRate != DataRate500kbps)
if(header.dataRate != DataRate250kbps && header.dataRate != DataRate300kbps && header.dataRate != DataRate500kbps)
return false;
if (header.driveType != DriveType35DD && header.driveType != DriveType35ED && header.driveType != DriveType35HD && header.driveType != DriveType525DD &&
if(header.driveType != DriveType35DD && header.driveType != DriveType35ED && header.driveType != DriveType35HD && header.driveType != DriveType525DD &&
header.driveType != DriveType525HD && header.driveType != DriveType525HD_DDDisk && header.driveType != DriveType8inch)
return false;
if (header.signature == tdAdvCompMagic)
if(header.signature == tdAdvCompMagic)
throw new NotImplementedException("TeleDisk Advanced Compression support not yet implemented");
ImageInfo.imageCreationTime = DateTime.MinValue;
if ((header.stepping & CommentBlockPresent) == CommentBlockPresent)
if((header.stepping & CommentBlockPresent) == CommentBlockPresent)
{
commentHeader = new TDCommentBlockHeader();
@@ -398,10 +398,10 @@ namespace DiscImageChef.ImagePlugins
ADiskCRCHasFailed |= cmtcrc != commentHeader.crc;
for (int i = 0; i < commentBlock.Length; i++)
for(int i = 0; i < commentBlock.Length; i++)
{
// Replace NULLs, used by TeleDisk as newline markers, with UNIX newline marker
if (commentBlock[i] == 0x00)
if(commentBlock[i] == 0x00)
commentBlock[i] = 0x0A;
}
@@ -415,7 +415,7 @@ namespace DiscImageChef.ImagePlugins
}
FileInfo fi = new FileInfo(imagePath);
if (ImageInfo.imageCreationTime == DateTime.MinValue)
if(ImageInfo.imageCreationTime == DateTime.MinValue)
ImageInfo.imageCreationTime = fi.CreationTimeUtc;
ImageInfo.imageLastModificationTime = fi.LastWriteTimeUtc;
@@ -429,7 +429,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.imageSize = 0;
sectorsData = new Dictionary<uint, byte[]>();
ImageInfo.sectorSize = 0;
while (true)
while(true)
{
TDTrackHeader TDTrack = new TDTrackHeader();
byte[] TDTrackForCRC = new byte[3];
@@ -454,7 +454,7 @@ namespace DiscImageChef.ImagePlugins
ADiskCRCHasFailed |= TDTrackCalculatedCRC != TDTrack.crc;
if (TDTrack.sectors == 0xFF) // End of disk image
if(TDTrack.sectors == 0xFF) // End of disk image
{
DicConsole.DebugWriteLine("TeleDisk plugin", "End of disk image arrived");
DicConsole.DebugWriteLine("TeleDisk plugin", "Total of {0} data sectors, for {1} bytes", sectorsData.Count, totalDiskSize);
@@ -462,14 +462,14 @@ namespace DiscImageChef.ImagePlugins
break;
}
if (spt != TDTrack.sectors && TDTrack.sectors > 0)
if(spt != TDTrack.sectors && TDTrack.sectors > 0)
{
if (spt != 0)
if(spt != 0)
throw new FeatureUnsupportedImageException("Variable number of sectors per track. This kind of image is not yet supported");
spt = TDTrack.sectors;
}
for (byte processedSectors = 0; processedSectors < TDTrack.sectors; processedSectors++)
for(byte processedSectors = 0; processedSectors < TDTrack.sectors; processedSectors++)
{
TDSectorHeader TDSector = new TDSectorHeader();
TDDataHeader TDData = new TDDataHeader();
@@ -493,7 +493,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("TeleDisk plugin", "\t\tSector CRC (plus headers): 0x{0:X2}", TDSector.crc);
UInt32 LBA = (uint)((TDSector.cylinder * header.sides * spt) + (TDSector.head * spt) + (TDSector.sectorNumber - 1));
if ((TDSector.flags & FlagsSectorDataless) != FlagsSectorDataless && (TDSector.flags & FlagsSectorSkipped) != FlagsSectorSkipped)
if((TDSector.flags & FlagsSectorDataless) != FlagsSectorDataless && (TDSector.flags & FlagsSectorSkipped) != FlagsSectorSkipped)
{
stream.Read(dataSizeBytes, 0, 2);
TDData.dataSize = BitConverter.ToUInt16(dataSizeBytes, 0);
@@ -509,17 +509,17 @@ namespace DiscImageChef.ImagePlugins
byte TDSectorCalculatedCRC = (byte)(TeleDiskCRC(0, decodedData) & 0xFF);
if (TDSectorCalculatedCRC != TDSector.crc)
if(TDSectorCalculatedCRC != TDSector.crc)
{
DicConsole.DebugWriteLine("TeleDisk plugin", "Sector LBA {0} calculated CRC 0x{1:X2} differs from stored CRC 0x{2:X2}", LBA, TDSectorCalculatedCRC, TDSector.crc);
if ((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID)
if (!sectorsData.ContainsKey(LBA) && (TDSector.flags & FlagsSectorDuplicate) != FlagsSectorDuplicate)
SectorsWhereCRCHasFailed.Add((UInt64)LBA);
if((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID)
if(!sectorsData.ContainsKey(LBA) && (TDSector.flags & FlagsSectorDuplicate) != FlagsSectorDuplicate)
SectorsWhereCRCHasFailed.Add((UInt64)LBA);
}
}
else
{
switch (TDSector.sectorSize)
switch(TDSector.sectorSize)
{
case SectorSize128:
decodedData = new byte[128];
@@ -550,11 +550,11 @@ namespace DiscImageChef.ImagePlugins
}
DicConsole.DebugWriteLine("TeleDisk plugin", "\t\tLBA: {0}", LBA);
if ((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID)
if((TDSector.flags & FlagsSectorNoID) != FlagsSectorNoID)
{
if (sectorsData.ContainsKey(LBA))
if(sectorsData.ContainsKey(LBA))
{
if ((TDSector.flags & FlagsSectorDuplicate) == FlagsSectorDuplicate)
if((TDSector.flags & FlagsSectorDuplicate) == FlagsSectorDuplicate)
{
DicConsole.DebugWriteLine("TeleDisk plugin", "\t\tSector {0} on cylinder {1} head {2} is duplicate, and marked so",
TDSector.sectorNumber, TDSector.cylinder, TDSector.head);
@@ -571,7 +571,7 @@ namespace DiscImageChef.ImagePlugins
totalDiskSize += (uint)decodedData.Length;
}
}
if (decodedData.Length > ImageInfo.sectorSize)
if(decodedData.Length > ImageInfo.sectorSize)
ImageInfo.sectorSize = (uint)decodedData.Length;
}
}
@@ -613,27 +613,27 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length)
{
if (sectorAddress > (ulong)sectorsData.Count - 1)
if(sectorAddress > (ulong)sectorsData.Count - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > (ulong)sectorsData.Count)
if(sectorAddress + length > (ulong)sectorsData.Count)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] data = new byte[1]; // To make compiler happy
bool first = true;
int dataPosition = 0;
for (ulong i = sectorAddress; i < (sectorAddress + length); i++)
for(ulong i = sectorAddress; i < (sectorAddress + length); i++)
{
if (!sectorsData.ContainsKey((uint)i))
if(!sectorsData.ContainsKey((uint)i))
throw new ImageNotSupportedException(String.Format("Requested sector {0} not found", i));
byte[] sector;
if (!sectorsData.TryGetValue((uint)i, out sector))
if(!sectorsData.TryGetValue((uint)i, out sector))
throw new ImageNotSupportedException(String.Format("Error reading sector {0}", i));
if (first)
if(first)
{
data = new byte[sector.Length];
Array.Copy(sector, data, sector.Length);
@@ -660,22 +660,22 @@ namespace DiscImageChef.ImagePlugins
return ReadSectors(sectorAddress, length);
}
public override string GetImageFormat()
{
public override string GetImageFormat()
{
return "Sydex TeleDisk";
}
public override string GetImageVersion()
public override string GetImageVersion()
{
return ImageInfo.imageVersion;
}
public override string GetImageApplication()
public override string GetImageApplication()
{
return ImageInfo.imageApplication;
}
public override string GetImageApplicationVersion()
public override string GetImageApplicationVersion()
{
return ImageInfo.imageApplicationVersion;
}
@@ -690,7 +690,7 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageLastModificationTime;
}
public override string GetImageName()
public override string GetImageName()
{
return ImageInfo.imageName;
}
@@ -715,8 +715,8 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
if (SectorsWhereCRCHasFailed.Contains(sectorAddress))
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
if(SectorsWhereCRCHasFailed.Contains(sectorAddress))
FailingLBAs.Add(sectorAddress);
return FailingLBAs.Count <= 0;
@@ -727,7 +727,7 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
UnknownLBAs.Add(i);
return null;
@@ -744,13 +744,13 @@ namespace DiscImageChef.ImagePlugins
{
int counter = 0;
while (counter < buffer.Length)
while(counter < buffer.Length)
{
crc ^= (UInt16)((buffer[counter] & 0xFF) << 8);
for (int i = 0; i < 8; i++)
for(int i = 0; i < 8; i++)
{
if ((crc & 0x8000) > 0)
if((crc & 0x8000) > 0)
crc = (UInt16)((crc << 1) ^ TeleDiskCRCPoly);
else
crc = (UInt16)(crc << 1);
@@ -765,7 +765,7 @@ namespace DiscImageChef.ImagePlugins
static byte[] DecodeTeleDiskData(byte sectorSize, byte encodingType, byte[] encodedData)
{
byte[] decodedData;
switch (sectorSize)
switch(sectorSize)
{
case SectorSize128:
decodedData = new byte[128];
@@ -792,7 +792,7 @@ namespace DiscImageChef.ImagePlugins
throw new ImageNotSupportedException(String.Format("Sector size {0} is incorrect.", sectorSize));
}
switch (encodingType)
switch(encodingType)
{
case dataBlockCopy:
Array.Copy(encodedData, decodedData, decodedData.Length);
@@ -801,7 +801,7 @@ namespace DiscImageChef.ImagePlugins
{
int ins = 0;
int outs = 0;
while (ins < encodedData.Length)
while(ins < encodedData.Length)
{
UInt16 repeatNumber;
byte[] repeatValue = new byte[2];
@@ -825,7 +825,7 @@ namespace DiscImageChef.ImagePlugins
{
int ins = 0;
int outs = 0;
while (ins < encodedData.Length)
while(ins < encodedData.Length)
{
byte Run;
byte Length;
@@ -833,7 +833,7 @@ namespace DiscImageChef.ImagePlugins
byte[] Piece;
Encoding = encodedData[ins];
if (Encoding == 0x00)
if(Encoding == 0x00)
{
Length = encodedData[ins + 1];
Array.Copy(encodedData, ins + 2, decodedData, outs, Length);
@@ -870,18 +870,18 @@ namespace DiscImageChef.ImagePlugins
MediaType DecodeTeleDiskDiskType()
{
switch (header.driveType)
switch(header.driveType)
{
case DriveType525DD:
case DriveType525HD_DDDisk:
case DriveType525HD:
{
switch (totalDiskSize)
switch(totalDiskSize)
{
case 163840:
{
// Acorn disk uses 256 bytes/sector
if (ImageInfo.sectorSize == 256)
if(ImageInfo.sectorSize == 256)
return MediaType.ACORN_525_SS_DD_40;
else // DOS disks use 512 bytes/sector
return MediaType.DOS_525_SS_DD_8;
@@ -889,7 +889,7 @@ namespace DiscImageChef.ImagePlugins
case 184320:
{
// Atari disk uses 256 bytes/sector
if (ImageInfo.sectorSize == 256)
if(ImageInfo.sectorSize == 256)
return MediaType.ATARI_525_DD;
else // DOS disks use 512 bytes/sector
return MediaType.DOS_525_SS_DD_9;
@@ -897,7 +897,7 @@ namespace DiscImageChef.ImagePlugins
case 327680:
{
// Acorn disk uses 256 bytes/sector
if (ImageInfo.sectorSize == 256)
if(ImageInfo.sectorSize == 256)
return MediaType.ACORN_525_SS_DD_80;
else // DOS disks use 512 bytes/sector
return MediaType.DOS_525_DS_DD_8;
@@ -947,7 +947,7 @@ namespace DiscImageChef.ImagePlugins
case DriveType35ED:
case DriveType35HD:
{
switch (totalDiskSize)
switch(totalDiskSize)
{
case 327680:
return MediaType.DOS_35_SS_DD_8;
@@ -989,7 +989,7 @@ namespace DiscImageChef.ImagePlugins
}
case DriveType8inch:
{
switch (totalDiskSize)
switch(totalDiskSize)
{
case 81664:
return MediaType.IBM23FD;
@@ -1015,7 +1015,7 @@ namespace DiscImageChef.ImagePlugins
case 512512:
{
// DEC disk uses 256 bytes/sector
if (ImageInfo.sectorSize == 256)
if(ImageInfo.sectorSize == 256)
return MediaType.RX02;
else // ECMA disks use 128 bytes/sector
return MediaType.ECMA_59;
@@ -1068,42 +1068,42 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageCreator;
}
public override string GetImageComments()
public override string GetImageComments()
{
return ImageInfo.imageComments;
}
public override string GetMediaManufacturer()
public override string GetMediaManufacturer()
{
return ImageInfo.mediaManufacturer;
}
public override string GetMediaModel()
public override string GetMediaModel()
{
return ImageInfo.mediaModel;
}
public override string GetMediaSerialNumber()
public override string GetMediaSerialNumber()
{
return ImageInfo.mediaSerialNumber;
}
public override string GetMediaBarcode()
public override string GetMediaBarcode()
{
return ImageInfo.mediaBarcode;
}
public override string GetMediaPartNumber()
public override string GetMediaPartNumber()
{
return ImageInfo.mediaPartNumber;
}
public override int GetMediaSequence()
public override int GetMediaSequence()
{
return ImageInfo.mediaSequence;
}
public override int GetLastDiskSequence()
public override int GetLastDiskSequence()
{
return ImageInfo.lastMediaSequence;
}

View File

@@ -404,7 +404,7 @@ namespace DiscImageChef.ImagePlugins
byte[] headerCookieBytes = new byte[8];
byte[] footerCookieBytes = new byte[8];
if ((imageStream.Length % 2) == 0)
if((imageStream.Length % 2) == 0)
imageStream.Seek(-512, SeekOrigin.End);
else
imageStream.Seek(-511, SeekOrigin.End);
@@ -429,7 +429,7 @@ namespace DiscImageChef.ImagePlugins
imageStream.Seek(0, SeekOrigin.Begin);
imageStream.Read(header, 0, 512);
if ((imageStream.Length % 2) == 0)
if((imageStream.Length % 2) == 0)
{
footer = new byte[512];
imageStream.Seek(-512, SeekOrigin.End);
@@ -467,12 +467,12 @@ namespace DiscImageChef.ImagePlugins
byte[] usableHeader;
UInt32 usableChecksum;
if (headerCookie == ImageCookie && headerChecksum == headerCalculatedChecksum)
if(headerCookie == ImageCookie && headerChecksum == headerCalculatedChecksum)
{
usableHeader = header;
usableChecksum = headerChecksum;
}
else if (footerCookie == ImageCookie && footerChecksum == footerCalculatedChecksum)
else if(footerCookie == ImageCookie && footerChecksum == footerCalculatedChecksum)
{
usableHeader = footer;
usableChecksum = footerChecksum;
@@ -526,12 +526,12 @@ namespace DiscImageChef.ImagePlugins
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)
if(thisFooter.version == Version1)
ImageInfo.imageVersion = "1.0";
else
throw new ImageNotSupportedException(String.Format("(VirtualPC plugin): Unknown image type {0} found. Please submit a bug with an example image.", thisFooter.diskType));
switch (thisFooter.creatorApplication)
switch(thisFooter.creatorApplication)
{
case CreatorQEMU:
{
@@ -544,7 +544,7 @@ namespace DiscImageChef.ImagePlugins
case CreatorVirtualBox:
{
ImageInfo.imageApplicationVersion = String.Format("{0}.{1:D2}", (thisFooter.creatorVersion & 0xFFFF0000) >> 16, (thisFooter.creatorVersion & 0x0000FFFF));
switch (thisFooter.creatorHostOS)
switch(thisFooter.creatorHostOS)
{
case CreatorMacintosh:
case CreatorMacintoshOld:
@@ -563,7 +563,7 @@ namespace DiscImageChef.ImagePlugins
case CreatorVirtualServer:
{
ImageInfo.imageApplication = "Microsoft Virtual Server";
switch (thisFooter.creatorVersion)
switch(thisFooter.creatorVersion)
{
case VersionVirtualServer2004:
ImageInfo.imageApplicationVersion = "2004";
@@ -576,11 +576,11 @@ namespace DiscImageChef.ImagePlugins
}
case CreatorVirtualPC:
{
switch (thisFooter.creatorHostOS)
switch(thisFooter.creatorHostOS)
{
case CreatorMacintosh:
case CreatorMacintoshOld:
switch (thisFooter.creatorVersion)
switch(thisFooter.creatorVersion)
{
case VersionVirtualPCMac:
ImageInfo.imageApplication = "Connectix Virtual PC";
@@ -592,7 +592,7 @@ namespace DiscImageChef.ImagePlugins
}
break;
case CreatorWindows:
switch (thisFooter.creatorVersion)
switch(thisFooter.creatorVersion)
{
case VersionVirtualPCMac:
ImageInfo.imageApplication = "Connectix Virtual PC";
@@ -635,8 +635,8 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.imageCreationTime = fi.CreationTimeUtc;
ImageInfo.imageLastModificationTime = thisDateTime;
ImageInfo.imageName = Path.GetFileNameWithoutExtension(imagePath);
if (thisFooter.diskType == typeDynamic || thisFooter.diskType == typeDifferencing)
if(thisFooter.diskType == typeDynamic || thisFooter.diskType == typeDifferencing)
{
imageStream.Seek((long)thisFooter.offset, SeekOrigin.Begin);
byte[] dynamicBytes = new byte[1024];
@@ -653,14 +653,14 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("VirtualPC plugin", "Dynamic header checksum = 0x{0:X8}, calculated = 0x{1:X8}", dynamicChecksum, dynamicChecksumCalculated);
if (dynamicChecksum != dynamicChecksumCalculated)
if(dynamicChecksum != dynamicChecksumCalculated)
throw new ImageNotSupportedException("(VirtualPC plugin): Both header and footer are corrupt, image cannot be opened.");
thisDynamic = new DynamicDiskHeader();
thisDynamic.locatorEntries = new ParentLocatorEntry[8];
thisDynamic.reserved2 = new byte[256];
for (int i = 0; i < 8; i++)
for(int i = 0; i < 8; i++)
thisDynamic.locatorEntries[i] = new ParentLocatorEntry();
thisDynamic.cookie = BigEndianBitConverter.ToUInt64(dynamicBytes, 0x00);
@@ -675,7 +675,7 @@ namespace DiscImageChef.ImagePlugins
thisDynamic.reserved = BigEndianBitConverter.ToUInt32(dynamicBytes, 0x3C);
thisDynamic.parentName = Encoding.BigEndianUnicode.GetString(dynamicBytes, 0x40, 512);
for (int i = 0; i < 8; i++)
for(int i = 0; i < 8; i++)
{
thisDynamic.locatorEntries[i].platformCode = BigEndianBitConverter.ToUInt32(dynamicBytes, 0x240 + 0x00 + 24 * i);
thisDynamic.locatorEntries[i].platformDataSpace = BigEndianBitConverter.ToUInt32(dynamicBytes, 0x240 + 0x04 + 24 * i);
@@ -703,7 +703,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.parentID = {0}", thisDynamic.parentID);
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.parentTimestamp = 0x{0:X8} ({1})", thisDynamic.parentTimestamp, parentDateTime);
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.reserved = 0x{0:X8}", thisDynamic.reserved);
for (int i = 0; i < 8; i++)
for(int i = 0; i < 8; i++)
{
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.locatorEntries[{0}].platformCode = 0x{1:X8} (\"{2}\")", i, thisDynamic.locatorEntries[i].platformCode,
Encoding.ASCII.GetString(BigEndianBitConverter.GetBytes(thisDynamic.locatorEntries[i].platformCode)));
@@ -715,7 +715,7 @@ namespace DiscImageChef.ImagePlugins
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.parentName = \"{0}\"", thisDynamic.parentName);
DicConsole.DebugWriteLine("VirtualPC plugin", "dynamic.reserved2's SHA1 = 0x{0}", sha1Ctx.End());
if (thisDynamic.headerVersion != Version1)
if(thisDynamic.headerVersion != Version1)
throw new ImageNotSupportedException(String.Format("(VirtualPC plugin): Unknown image type {0} found. Please submit a bug with an example image.", thisFooter.diskType));
DateTime startTime = DateTime.UtcNow;
@@ -741,7 +741,7 @@ namespace DiscImageChef.ImagePlugins
BATSector batSector = new BATSector();
// Unsafe and fast code. It takes 4 ms to fill a 30720 entries BAT
for (int i = 0; i < batSectorCount; i++)
for(int i = 0; i < batSectorCount; i++)
{
imageStream.Seek((long)thisDynamic.tableOffset + i * 512, SeekOrigin.Begin);
imageStream.Read(batSectorBytes, 0, 512);
@@ -752,7 +752,7 @@ namespace DiscImageChef.ImagePlugins
handle.Free();
// This restores the order of elements
Array.Reverse(batSector.blockPointer);
if (blockAllocationTable.Length >= (i * 512) / 4 + 512 / 4)
if(blockAllocationTable.Length >= (i * 512) / 4 + 512 / 4)
Array.Copy(batSector.blockPointer, 0, blockAllocationTable, (i * 512) / 4, 512 / 4);
else
Array.Copy(batSector.blockPointer, 0, blockAllocationTable, (i * 512) / 4, blockAllocationTable.Length - (i * 512) / 4);
@@ -780,7 +780,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.xmlMediaType = XmlMediaType.BlockMedia;
switch (thisFooter.diskType)
switch(thisFooter.diskType)
{
case typeFixed:
case typeDynamic:
@@ -792,15 +792,15 @@ namespace DiscImageChef.ImagePlugins
case typeDifferencing:
{
locatorEntriesData = new byte[8][];
for (int i = 0; i < 8; i++)
for(int i = 0; i < 8; i++)
{
if (thisDynamic.locatorEntries[i].platformCode != 0x00000000)
if(thisDynamic.locatorEntries[i].platformCode != 0x00000000)
{
locatorEntriesData[i] = new byte[thisDynamic.locatorEntries[i].platformDataLength];
imageStream.Seek((long)thisDynamic.locatorEntries[i].platformDataOffset, SeekOrigin.Begin);
imageStream.Read(locatorEntriesData[i], 0, (int)thisDynamic.locatorEntries[i].platformDataLength);
switch (thisDynamic.locatorEntries[i].platformCode)
switch(thisDynamic.locatorEntries[i].platformCode)
{
case platformCodeWindowsAbsolute:
case platformCodeWindowsRelative:
@@ -825,9 +825,9 @@ namespace DiscImageChef.ImagePlugins
bool locatorFound = false;
string parentPath = null;
while (!locatorFound && currentLocator < 8)
while(!locatorFound && currentLocator < 8)
{
switch (thisDynamic.locatorEntries[currentLocator].platformCode)
switch(thisDynamic.locatorEntries[currentLocator].platformCode)
{
case platformCodeWindowsAbsolute:
case platformCodeWindowsRelative:
@@ -839,7 +839,7 @@ namespace DiscImageChef.ImagePlugins
break;
case platformCodeMacintoshURI:
parentPath = Uri.UnescapeDataString(Encoding.UTF8.GetString(locatorEntriesData[currentLocator]));
if (parentPath.StartsWith("file://localhost", StringComparison.InvariantCulture))
if(parentPath.StartsWith("file://localhost", StringComparison.InvariantCulture))
parentPath = parentPath.Remove(0, 16);
else
{
@@ -849,32 +849,32 @@ namespace DiscImageChef.ImagePlugins
break;
}
if (parentPath != null)
if(parentPath != null)
{
DicConsole.DebugWriteLine("VirtualPC plugin", "Possible parent path: \"{0}\"", parentPath);
locatorFound |= File.Exists(parentPath);
if (!locatorFound)
if(!locatorFound)
parentPath = null;
}
currentLocator++;
}
if (!locatorFound || parentPath == null)
if(!locatorFound || parentPath == null)
throw new FileNotFoundException("(VirtualPC plugin): Cannot find parent file for differencing disk image");
else
{
parentImage = new VHD();
/* PluginBase plugins = new PluginBase();
plugins.RegisterAllPlugins();
if (!plugins.ImagePluginsList.TryGetValue(Name.ToLower(), out parentImage))
throw new SystemException("(VirtualPC plugin): Unable to open myself");*/
/* PluginBase plugins = new PluginBase();
plugins.RegisterAllPlugins();
if (!plugins.ImagePluginsList.TryGetValue(Name.ToLower(), out parentImage))
throw new SystemException("(VirtualPC plugin): Unable to open myself");*/
if (!parentImage.IdentifyImage(parentPath))
if(!parentImage.IdentifyImage(parentPath))
throw new ImageNotSupportedException("(VirtualPC plugin): Parent image is not a Virtual PC disk image");
if (!parentImage.OpenImage(parentPath))
if(!parentImage.OpenImage(parentPath))
throw new ImageNotSupportedException("(VirtualPC plugin): Cannot open parent disk image");
// While specification says that parent and child disk images should contain UUID relationship
@@ -882,7 +882,7 @@ namespace DiscImageChef.ImagePlugins
// 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.GetSectors() != GetSectors())
throw new ImageNotSupportedException("(VirtualPC plugin): Parent image is of different size");
}
@@ -923,7 +923,7 @@ namespace DiscImageChef.ImagePlugins
public override string GetImageFormat()
{
switch (thisFooter.diskType)
switch(thisFooter.diskType)
{
case typeFixed:
return "Virtual PC fixed size disk image";
@@ -978,7 +978,7 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSector(ulong sectorAddress)
{
switch (thisFooter.diskType)
switch(thisFooter.diskType)
{
case typeDifferencing:
{
@@ -1019,7 +1019,7 @@ namespace DiscImageChef.ImagePlugins
*/
// Sector has been written, read from child image
if (dirty)
if(dirty)
{
/* Too noisy
DicConsole.DebugWriteLine("VirtualPC plugin", "Sector {0} is dirty", sectorAddress);
@@ -1051,7 +1051,7 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
switch (thisFooter.diskType)
switch(thisFooter.diskType)
{
case typeFixed:
{
@@ -1066,10 +1066,10 @@ namespace DiscImageChef.ImagePlugins
thisStream.Close();
return data;
}
// Contrary to Microsoft's specifications that tell us to check the bitmap
// and in case of unused sector just return zeros, as blocks are allocated
// as a whole, this would waste time and miss cache, so we read any sector
// as long as it is in the block.
// Contrary to Microsoft's specifications that tell us to check the bitmap
// and in case of unused sector just return zeros, as blocks are allocated
// as a whole, this would waste time and miss cache, so we read any sector
// as long as it is in the block.
case typeDynamic:
{
FileStream thisStream;
@@ -1090,7 +1090,7 @@ namespace DiscImageChef.ImagePlugins
UInt32 sectorsToReadHere;
// Asked to read more sectors than are remaining in block
if (length > remainingInBlock)
if(length > remainingInBlock)
{
suffix = ReadSectors(sectorAddress + remainingInBlock, length - remainingInBlock);
sectorsToReadHere = remainingInBlock;
@@ -1103,7 +1103,7 @@ namespace DiscImageChef.ImagePlugins
prefix = new byte[sectorsToReadHere * 512];
// 0xFFFFFFFF means unallocated
if (sectorOffset != 0xFFFFFFFF)
if(sectorOffset != 0xFFFFFFFF)
{
thisStream = new FileStream(thisPath, FileMode.Open, FileAccess.Read);
thisStream.Seek((long)(sectorOffset * 512), SeekOrigin.Begin);
@@ -1115,7 +1115,7 @@ namespace DiscImageChef.ImagePlugins
Array.Clear(prefix, 0, prefix.Length);
// If we needed to read from another block, join all the data
if (suffix != null)
if(suffix != null)
{
byte[] data = new byte[512 * length];
Array.Copy(prefix, 0, data, 0, prefix.Length);
@@ -1130,7 +1130,7 @@ namespace DiscImageChef.ImagePlugins
// As on differencing images, each independent sector can be read from child or parent
// image, we must read sector one by one
byte[] fullData = new byte[512 * length];
for (ulong i = 0; i < length; i++)
for(ulong i = 0; i < length; i++)
{
byte[] oneSector = ReadSector(sectorAddress + i);
Array.Copy(oneSector, 0, fullData, (int)(i * 512), 512);
@@ -1157,7 +1157,7 @@ namespace DiscImageChef.ImagePlugins
static UInt32 VHDChecksum(byte[] data)
{
UInt32 checksum = 0;
foreach (byte b in data)
foreach(byte b in data)
checksum += b;
return ~checksum;
}
@@ -1315,7 +1315,7 @@ namespace DiscImageChef.ImagePlugins
{
FailingLBAs = new List<ulong>();
UnknownLBAs = new List<ulong>();
for (ulong i = 0; i < ImageInfo.sectors; i++)
for(ulong i = 0; i < ImageInfo.sectors; i++)
UnknownLBAs.Add(i);
return null;
}

View File

@@ -85,10 +85,10 @@ namespace DiscImageChef.ImagePlugins
FileInfo fi = new FileInfo(imagePath);
// Check if file is not multiple of 512
if ((fi.Length % 512) != 0)
if((fi.Length % 512) != 0)
{
// Check known disk sizes with sectors smaller than 512
switch (fi.Length)
switch(fi.Length)
{
case 81664:
case 116480:
@@ -122,11 +122,11 @@ namespace DiscImageChef.ImagePlugins
FileInfo fi = new FileInfo(imagePath);
string extension = Path.GetExtension(imagePath).ToLower();
if (extension == ".iso" && (fi.Length % 2048) == 0)
if(extension == ".iso" && (fi.Length % 2048) == 0)
ImageInfo.sectorSize = 2048;
else
{
switch (fi.Length)
switch(fi.Length)
{
case 242944:
case 256256:
@@ -182,7 +182,7 @@ namespace DiscImageChef.ImagePlugins
differentTrackZeroSize = false;
rawImagePath = imagePath;
switch (fi.Length)
switch(fi.Length)
{
case 242944:
ImageInfo.sectors = 1898;
@@ -263,7 +263,7 @@ namespace DiscImageChef.ImagePlugins
ImageInfo.mediaType = CalculateDiskType();
switch (ImageInfo.mediaType)
switch(ImageInfo.mediaType)
{
case MediaType.CD:
case MediaType.DVDPR:
@@ -309,16 +309,16 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length)
{
if (differentTrackZeroSize)
if(differentTrackZeroSize)
{
throw new NotImplementedException("Not yet implemented");
}
else
{
if (sectorAddress > ImageInfo.sectors - 1)
if(sectorAddress > ImageInfo.sectors - 1)
throw new ArgumentOutOfRangeException("sectorAddress", "Sector address not found");
if (sectorAddress + length > ImageInfo.sectors)
if(sectorAddress + length > ImageInfo.sectors)
throw new ArgumentOutOfRangeException("length", "Requested more sectors than available");
byte[] buffer = new byte[length * ImageInfo.sectorSize];
@@ -336,8 +336,8 @@ namespace DiscImageChef.ImagePlugins
}
}
public override string GetImageFormat()
{
public override string GetImageFormat()
{
return "Raw disk image (sector by sector copy)";
}
@@ -351,7 +351,7 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageLastModificationTime;
}
public override string GetImageName()
public override string GetImageName()
{
return ImageInfo.imageName;
}
@@ -376,7 +376,7 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
UnknownLBAs.Add(i);
return null;
@@ -387,7 +387,7 @@ namespace DiscImageChef.ImagePlugins
FailingLBAs = new List<UInt64>();
UnknownLBAs = new List<UInt64>();
for (UInt64 i = sectorAddress; i < sectorAddress + length; i++)
for(UInt64 i = sectorAddress; i < sectorAddress + length; i++)
UnknownLBAs.Add(i);
return null;
@@ -400,7 +400,7 @@ namespace DiscImageChef.ImagePlugins
public override List<Track> GetTracks()
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
Track trk = new Track();
trk.TrackBytesPerSector = (int)ImageInfo.sectorSize;
@@ -424,9 +424,9 @@ namespace DiscImageChef.ImagePlugins
public override List<Track> GetSessionTracks(Session session)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (session.SessionSequence != 1)
if(session.SessionSequence != 1)
throw new ArgumentOutOfRangeException("session", "Only a single session is supported");
Track trk = new Track();
@@ -451,9 +451,9 @@ namespace DiscImageChef.ImagePlugins
public override List<Track> GetSessionTracks(UInt16 session)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (session != 1)
if(session != 1)
throw new ArgumentOutOfRangeException("session", "Only a single session is supported");
Track trk = new Track();
@@ -478,7 +478,7 @@ namespace DiscImageChef.ImagePlugins
public override List<Session> GetSessions()
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
Session sess = new Session();
sess.EndSector = ImageInfo.sectors - 1;
@@ -496,9 +496,9 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSector(UInt64 sectorAddress, UInt32 track)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (track != 1)
if(track != 1)
throw new ArgumentOutOfRangeException("track", "Only a single session is supported");
return ReadSector(sectorAddress);
@@ -509,9 +509,9 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectors(UInt64 sectorAddress, UInt32 length, UInt32 track)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (track != 1)
if(track != 1)
throw new ArgumentOutOfRangeException("track", "Only a single session is supported");
return ReadSectors(sectorAddress, length);
@@ -522,9 +522,9 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorLong(UInt64 sectorAddress, UInt32 track)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (track != 1)
if(track != 1)
throw new ArgumentOutOfRangeException("track", "Only a single session is supported");
return ReadSector(sectorAddress);
@@ -535,9 +535,9 @@ namespace DiscImageChef.ImagePlugins
public override byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length, UInt32 track)
{
if (ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
if(ImageInfo.xmlMediaType == XmlMediaType.OpticalDisc)
{
if (track != 1)
if(track != 1)
throw new ArgumentOutOfRangeException("track", "Only a single session is supported");
return ReadSectors(sectorAddress, length);
@@ -550,27 +550,27 @@ namespace DiscImageChef.ImagePlugins
MediaType CalculateDiskType()
{
if (ImageInfo.sectorSize == 2048)
if(ImageInfo.sectorSize == 2048)
{
if (ImageInfo.sectors <= 360000)
if(ImageInfo.sectors <= 360000)
return MediaType.CD;
if (ImageInfo.sectors <= 2295104)
if(ImageInfo.sectors <= 2295104)
return MediaType.DVDPR;
if (ImageInfo.sectors <= 2298496)
if(ImageInfo.sectors <= 2298496)
return MediaType.DVDR;
if (ImageInfo.sectors <= 4171712)
if(ImageInfo.sectors <= 4171712)
return MediaType.DVDRDL;
if (ImageInfo.sectors <= 4173824)
if(ImageInfo.sectors <= 4173824)
return MediaType.DVDPRDL;
if (ImageInfo.sectors <= 24438784)
if(ImageInfo.sectors <= 24438784)
return MediaType.BDR;
if (ImageInfo.sectors <= 62500864)
if(ImageInfo.sectors <= 62500864)
return MediaType.BDRXL;
return MediaType.Unknown;
}
else
{
switch (ImageInfo.imageSize)
switch(ImageInfo.imageSize)
{
case 80384:
return MediaType.ECMA_66;
@@ -708,17 +708,17 @@ namespace DiscImageChef.ImagePlugins
throw new FeatureUnsupportedImageException("Feature not supported by image format");
}
public override string GetImageVersion()
public override string GetImageVersion()
{
return ImageInfo.imageVersion;
}
public override string GetImageApplication()
public override string GetImageApplication()
{
return ImageInfo.imageApplication;
}
public override string GetImageApplicationVersion()
public override string GetImageApplicationVersion()
{
return ImageInfo.imageApplicationVersion;
}
@@ -733,42 +733,42 @@ namespace DiscImageChef.ImagePlugins
return ImageInfo.imageCreator;
}
public override string GetImageComments()
public override string GetImageComments()
{
return ImageInfo.imageComments;
}
public override string GetMediaManufacturer()
public override string GetMediaManufacturer()
{
return ImageInfo.mediaManufacturer;
}
public override string GetMediaModel()
public override string GetMediaModel()
{
return ImageInfo.mediaModel;
}
public override string GetMediaSerialNumber()
public override string GetMediaSerialNumber()
{
return ImageInfo.mediaSerialNumber;
}
public override string GetMediaBarcode()
public override string GetMediaBarcode()
{
return ImageInfo.mediaBarcode;
}
public override string GetMediaPartNumber()
public override string GetMediaPartNumber()
{
return ImageInfo.mediaPartNumber;
}
public override int GetMediaSequence()
public override int GetMediaSequence()
{
return ImageInfo.mediaSequence;
}
public override int GetLastDiskSequence()
public override int GetLastDiskSequence()
{
return ImageInfo.lastMediaSequence;
}