REFACTOR: Use preferred braces style.

This commit is contained in:
2017-12-20 23:07:46 +00:00
parent 4158d64854
commit e9443388ee
120 changed files with 1016 additions and 1975 deletions

View File

@@ -360,7 +360,6 @@ namespace DiscImageChef.DiscImages
alcTrackExtras = new Dictionary<int, AlcoholTrackExtra>();
foreach(AlcoholTrack track in alcTracks.Values)
{
if(track.extraOffset > 0 && !isDvd)
{
byte[] extHdr = new byte[8];
@@ -385,7 +384,6 @@ namespace DiscImageChef.DiscImages
extra.sectors = track.extraOffset;
alcTrackExtras.Add(track.point, extra);
}
}
if(footerOff > 0)
{
@@ -432,7 +430,6 @@ namespace DiscImageChef.DiscImages
int readBytes = stream.Read(bca, 0, bca.Length);
if(readBytes == bca.Length)
{
switch(header.type)
{
case AlcoholMediumType.DVD:
@@ -440,7 +437,6 @@ namespace DiscImageChef.DiscImages
ImageInfo.ReadableMediaTags.Add(MediaTagType.DVD_BCA);
break;
}
}
}
ImageInfo.MediaType = AlcoholMediumTypeToMediaType(header.type);
@@ -741,13 +737,10 @@ namespace DiscImageChef.DiscImages
}
if(ImageInfo.MediaType == MediaType.XGD2)
{
// All XGD3 all have the same number of blocks
if(ImageInfo.Sectors == 25063 || // Locked (or non compatible drive)
ImageInfo.Sectors == 4229664 || // Xtreme unlock
ImageInfo.Sectors == 4246304) // Wxripper unlock
ImageInfo.MediaType = MediaType.XGD3;
}
DicConsole.VerboseWriteLine("Alcohol 120% image describes a disc of type {0}", ImageInfo.MediaType);
@@ -780,25 +773,25 @@ namespace DiscImageChef.DiscImages
{
case MediaTagType.DVD_BCA:
{
if(bca != null) { return (byte[])bca.Clone(); }
if(bca != null) return (byte[])bca.Clone();
throw new FeatureNotPresentImageException("Image does not contain BCA information.");
}
case MediaTagType.DVD_PFI:
{
if(pfi != null) { return (byte[])pfi.Clone(); }
if(pfi != null) return (byte[])pfi.Clone();
throw new FeatureNotPresentImageException("Image does not contain PFI.");
}
case MediaTagType.DVD_DMI:
{
if(dmi != null) { return (byte[])dmi.Clone(); }
if(dmi != null) return (byte[])dmi.Clone();
throw new FeatureNotPresentImageException("Image does not contain DMI.");
}
case MediaTagType.CD_FullTOC:
{
if(fullToc != null) { return (byte[])fullToc.Clone(); }
if(fullToc != null) return (byte[])fullToc.Clone();
throw new FeatureNotPresentImageException("Image does not contain TOC information.");
}
@@ -830,21 +823,15 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(AlcoholTrack track in alcTracks.Values)
{
AlcoholTrackExtra extra;
if(track.point == kvp.Key && alcTrackExtras.TryGetValue(track.point, out extra))
{
if(sectorAddress - kvp.Value < extra.sectors)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -852,21 +839,15 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(AlcoholTrack track in alcTracks.Values)
{
AlcoholTrackExtra extra;
if(track.point == kvp.Key && alcTrackExtras.TryGetValue(track.point, out extra))
{
if(sectorAddress - kvp.Value < extra.sectors)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -957,7 +938,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sector_offset == 0 && sector_skip == 0) buffer = br.ReadBytes((int)(sector_size * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -966,7 +946,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sector_skip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sector_size, sector_size);
}
}
return buffer;
}
@@ -1287,7 +1266,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sector_offset == 0 && sector_skip == 0) buffer = br.ReadBytes((int)(sector_size * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1296,7 +1274,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sector_skip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sector_size, sector_size);
}
}
return buffer;
}
@@ -1314,21 +1291,15 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(AlcoholTrack track in alcTracks.Values)
{
AlcoholTrackExtra extra;
if(track.point == kvp.Key && alcTrackExtras.TryGetValue(track.point, out extra))
{
if(sectorAddress - kvp.Value < extra.sectors)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1415,13 +1386,11 @@ namespace DiscImageChef.DiscImages
ushort sessionNo = 0;
foreach(Session session in sessions)
{
if(track.point >= session.StartTrack || track.point <= session.EndTrack)
{
sessionNo = session.SessionSequence;
break;
}
}
AlcoholTrackExtra extra;
if(alcTrackExtras.TryGetValue(track.point, out extra))
@@ -1465,7 +1434,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1479,13 +1448,11 @@ namespace DiscImageChef.DiscImages
ushort sessionNo = 0;
foreach(Session ses in sessions)
{
if(track.point >= ses.StartTrack || track.point <= ses.EndTrack)
{
sessionNo = ses.SessionSequence;
break;
}
}
AlcoholTrackExtra extra;
if(alcTrackExtras.TryGetValue(track.point, out extra) && session == sessionNo)

View File

@@ -123,10 +123,7 @@ namespace DiscImageChef.DiscImages
int spt = 0;
bool allTracksEqual = true;
for(int i = 1; i < tracks.Count; i++)
{
allTracksEqual &= tracks[i - 1].sectors.Length == tracks[i].sectors.Length;
}
for(int i = 1; i < tracks.Count; i++) allTracksEqual &= tracks[i - 1].sectors.Length == tracks[i].sectors.Length;
if(allTracksEqual) spt = tracks[0].sectors.Length;
@@ -185,9 +182,7 @@ namespace DiscImageChef.DiscImages
}
for(int i = 0; i < tracks.Count; i++)
{
foreach(Apple2.RawSector sector in tracks[i].sectors)
{
if(skewed && spt != 0)
{
ulong sectorNo = (ulong)((((sector.addressField.sector[0] & 0x55) << 1) |
@@ -203,8 +198,6 @@ namespace DiscImageChef.DiscImages
rawSectors.Add(ImageInfo.Sectors, sector);
ImageInfo.Sectors++;
}
}
}
DicConsole.DebugWriteLine("Apple NIB Plugin", "Got {0} sectors", ImageInfo.Sectors);

View File

@@ -286,10 +286,7 @@ namespace DiscImageChef.DiscImages
uint spt = uint.MaxValue;
for(ushort cyl = 0; cyl < ImageInfo.Cylinders; cyl++)
{
for(ushort head = 0; head < ImageInfo.Heads; head++)
{
if(spts[cyl][head] < spt) spt = spts[cyl][head];
}
for(ushort head = 0; head < ImageInfo.Heads; head++) if(spts[cyl][head] < spt) spt = spts[cyl][head];
}
ImageInfo.SectorsPerTrack = spt;

View File

@@ -111,7 +111,7 @@ namespace DiscImageChef.DiscImages
tmpHdr.DeviceBlocks = BigEndianBitConverter.ToUInt32(header, 0x11) & 0x00FFFFFF;
tmpHdr.BytesPerBlock = BigEndianBitConverter.ToUInt16(header, 0x15);
for(int i = 0; i < 0xD; i++) { if(tmpHdr.DeviceName[i] < 0x20) return false; }
for(int i = 0; i < 0xD; i++) if(tmpHdr.DeviceName[i] < 0x20) return false;
if((tmpHdr.BytesPerBlock & 0xFE00) != 0x200) return false;
@@ -140,7 +140,7 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("BLU plugin", "ImageHeader.deviceBlock = {0}", imageHeader.DeviceBlocks);
DicConsole.DebugWriteLine("BLU plugin", "ImageHeader.bytesPerBlock = {0}", imageHeader.BytesPerBlock);
for(int i = 0; i < 0xD; i++) { if(imageHeader.DeviceName[i] < 0x20) return false; }
for(int i = 0; i < 0xD; i++) if(imageHeader.DeviceName[i] < 0x20) return false;
if((imageHeader.BytesPerBlock & 0xFE00) != 0x200) return false;

View File

@@ -546,7 +546,6 @@ namespace DiscImageChef.DiscImages
FiltersList filtersList = new FiltersList();
if(!string.IsNullOrEmpty(header.DataFile))
{
while(true)
{
dataFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), header.DataFile));
@@ -587,7 +586,6 @@ namespace DiscImageChef.DiscImages
throw new ArgumentException(string.Format("Data file {0} not found", header.DataFile));
}
}
else throw new ArgumentException("Unable to find data file");
if(!string.IsNullOrEmpty(header.SubchannelFile))
@@ -644,7 +642,6 @@ namespace DiscImageChef.DiscImages
ushort maxSession = 0;
ulong currentPos = 0;
foreach(Bw4TrackDescriptor bwTrack in bwTracks)
{
if(bwTrack.point < 0xA0)
{
Track track = new Track();
@@ -652,7 +649,6 @@ namespace DiscImageChef.DiscImages
track.TrackEndSector = bwTrack.lastSector;
if(!string.IsNullOrEmpty(bwTrack.filename))
{
do
{
track.TrackFilter =
@@ -699,7 +695,6 @@ namespace DiscImageChef.DiscImages
track.TrackFilter = dataFilter;
}
while(true);
}
else track.TrackFilter = dataFilter;
track.TrackFile = dataFilter.GetFilename();
@@ -803,7 +798,6 @@ namespace DiscImageChef.DiscImages
!ImageInfo.ReadableMediaTags.Contains(MediaTagType.CD_MCN))
ImageInfo.ReadableMediaTags.Add(MediaTagType.CD_MCN);
}
}
sessions = new List<Session>();
for(ushort i = 1; i <= maxSession; i++)
@@ -814,7 +808,6 @@ namespace DiscImageChef.DiscImages
session.StartSector = uint.MaxValue;
foreach(Track track in tracks)
{
if(track.TrackSession == i)
{
if(track.TrackSequence < session.StartTrack) session.StartTrack = track.TrackSequence;
@@ -822,7 +815,6 @@ namespace DiscImageChef.DiscImages
if(track.TrackStartSector < session.StartSector) session.StartSector = track.TrackStartSector;
if(track.TrackEndSector > session.EndSector) session.EndSector = track.TrackEndSector;
}
}
sessions.Add(session);
}
@@ -907,10 +899,7 @@ namespace DiscImageChef.DiscImages
{
case MediaTagType.CD_MCN:
{
if(ImageInfo.MediaSerialNumber != null)
{
return Encoding.ASCII.GetBytes(ImageInfo.MediaSerialNumber);
}
if(ImageInfo.MediaSerialNumber != null) return Encoding.ASCII.GetBytes(ImageInfo.MediaSerialNumber);
throw new FeatureNotPresentImageException("Image does not contain MCN information.");
}
@@ -942,19 +931,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -962,19 +943,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -986,13 +959,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1051,7 +1022,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1060,7 +1030,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1072,13 +1041,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1223,7 +1190,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1232,7 +1198,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1250,19 +1215,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1274,13 +1231,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1356,7 +1311,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1364,7 +1319,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(ushort session)
{
List<Track> tracks = new List<Track>();
foreach(Track _track in this.tracks) { if(_track.TrackSession == session) tracks.Add(_track); }
foreach(Track _track in this.tracks) if(_track.TrackSession == session) tracks.Add(_track);
return tracks;
}

View File

@@ -595,12 +595,10 @@ namespace DiscImageChef.DiscImages
tSeq, session.Tracks[tSeq].unknown8);
if(session.Tracks[tSeq].type != Bw5TrackType.Dvd &&
session.Tracks[tSeq].type != Bw5TrackType.NotData)
{
for(int i = 0; i < session.Tracks[tSeq].unknown9.Length; i++)
DicConsole.DebugWriteLine("BlindWrite5 plugin",
"session[{0}].track[{1}].unknown9[{2}] = 0x{3:X8}", ses, tSeq, i,
session.Tracks[tSeq].unknown9[i]);
}
}
bwSessions.Add(session);
@@ -737,7 +735,6 @@ namespace DiscImageChef.DiscImages
long sectorSize = dataFile.Length / dataFile.Sectors;
if(sectorSize > 2352)
{
if(sectorSize - 2352 == 16) chars.Subchannel = TrackSubchannelType.Q16Interleaved;
else if(sectorSize - 2352 == 96) chars.Subchannel = TrackSubchannelType.PackedInterleaved;
else
@@ -745,7 +742,6 @@ namespace DiscImageChef.DiscImages
DicConsole.ErrorWriteLine("BlindWrite5 found unknown subchannel size: {0}", sectorSize - 2352);
return false;
}
}
else chars.Subchannel = TrackSubchannelType.None;
chars.SectorSize = sectorSize;
@@ -866,7 +862,6 @@ namespace DiscImageChef.DiscImages
track.TrackEndSector = (ulong)(trk.sectors + trk.startLba);
foreach(DataFileCharacteristics chars in filePaths)
{
if(trk.startLba >= chars.StartLba &&
trk.startLba + trk.sectors <= chars.StartLba + chars.Sectors)
{
@@ -884,15 +879,12 @@ namespace DiscImageChef.DiscImages
track.TrackSubchannelOffset = track.TrackFileOffset;
if(chars.Subchannel == TrackSubchannelType.PackedInterleaved)
{
if(!ImageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel))
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel);
}
}
break;
}
}
track.TrackPregap = trk.pregap;
track.TrackSequence = trk.point;
@@ -963,7 +955,7 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("BlindWrite5 plugin", "TOC not correctly rebuilt");
fullToc = null;
}
else { DicConsole.DebugWriteLine("BlindWrite5 plugin", "TOC correctly rebuilt"); }
else DicConsole.DebugWriteLine("BlindWrite5 plugin", "TOC correctly rebuilt");
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdTrackFlags);
}
@@ -1090,13 +1082,11 @@ namespace DiscImageChef.DiscImages
Decoders.CD.PMA.CDPMA pma0 = Decoders.CD.PMA.Decode(pma).Value;
foreach(Decoders.CD.PMA.CDPMADescriptors descriptor in pma0.PMADescriptors)
{
if(descriptor.ADR == 2)
{
uint id = (uint)((descriptor.Min << 16) + (descriptor.Sec << 8) + descriptor.Frame);
ImageInfo.MediaSerialNumber = string.Format("{0:X6}", id & 0x00FFFFFF);
}
}
}
if(atip != null)
@@ -1135,22 +1125,17 @@ namespace DiscImageChef.DiscImages
if(atip != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.CD_ATIP);
if(cdtext != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.CD_TEXT);
if(bca != null)
{
if(isDvd) ImageInfo.ReadableMediaTags.Add(MediaTagType.DVD_BCA);
else if(isBd) ImageInfo.ReadableMediaTags.Add(MediaTagType.BD_BCA);
}
if(dmi != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.DVD_DMI);
if(pfi != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.DVD_PFI);
if(fullToc != null) ImageInfo.ReadableMediaTags.Add(MediaTagType.CD_FullTOC);
if(ImageInfo.MediaType == MediaType.XGD2)
{
// All XGD3 all have the same number of blocks
if(ImageInfo.Sectors == 25063 || // Locked (or non compatible drive)
ImageInfo.Sectors == 4229664 || // Xtreme unlock
ImageInfo.Sectors == 4246304) // Wxripper unlock
ImageInfo.MediaType = MediaType.XGD3;
}
DicConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", ImageInfo.MediaType);
@@ -1183,50 +1168,50 @@ namespace DiscImageChef.DiscImages
{
case MediaTagType.SCSI_MODEPAGE_2A:
{
if(mode2A != null) { return (byte[])mode2A.Clone(); }
if(mode2A != null) return (byte[])mode2A.Clone();
throw new FeatureNotPresentImageException("Image does not contain SCSI MODE PAGE 2Ah.");
}
case MediaTagType.CD_PMA:
{
if(pma != null) { return (byte[])pma.Clone(); }
if(pma != null) return (byte[])pma.Clone();
throw new FeatureNotPresentImageException("Image does not contain PMA information.");
}
case MediaTagType.CD_ATIP:
{
if(atip != null) { return (byte[])atip.Clone(); }
if(atip != null) return (byte[])atip.Clone();
throw new FeatureNotPresentImageException("Image does not contain ATIP information.");
}
case MediaTagType.CD_TEXT:
{
if(cdtext != null) { return (byte[])cdtext.Clone(); }
if(cdtext != null) return (byte[])cdtext.Clone();
throw new FeatureNotPresentImageException("Image does not contain CD-Text information.");
}
case MediaTagType.DVD_BCA:
case MediaTagType.BD_BCA:
{
if(bca != null) { return (byte[])bca.Clone(); }
if(bca != null) return (byte[])bca.Clone();
throw new FeatureNotPresentImageException("Image does not contain BCA information.");
}
case MediaTagType.DVD_PFI:
{
if(pfi != null) { return (byte[])pfi.Clone(); }
if(pfi != null) return (byte[])pfi.Clone();
throw new FeatureNotPresentImageException("Image does not contain PFI.");
}
case MediaTagType.DVD_DMI:
{
if(dmi != null) { return (byte[])dmi.Clone(); }
if(dmi != null) return (byte[])dmi.Clone();
throw new FeatureNotPresentImageException("Image does not contain DMI.");
}
case MediaTagType.CD_FullTOC:
{
if(fullToc != null) { return (byte[])fullToc.Clone(); }
if(fullToc != null) return (byte[])fullToc.Clone();
throw new FeatureNotPresentImageException("Image does not contain TOC information.");
}
@@ -1258,19 +1243,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1278,19 +1255,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1304,13 +1273,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1322,13 +1289,11 @@ namespace DiscImageChef.DiscImages
length + sectorAddress, _track.TrackEndSector));
foreach(DataFileCharacteristics _chars in filePaths)
{
if((long)sectorAddress >= _chars.StartLba && length < (ulong)_chars.Sectors - sectorAddress)
{
chars = _chars;
break;
}
}
if(string.IsNullOrEmpty(chars.FilePath) || chars.FileFilter == null)
throw new ArgumentOutOfRangeException(nameof(chars.FileFilter), "Track does not exist in disc image");
@@ -1408,7 +1373,6 @@ namespace DiscImageChef.DiscImages
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1417,7 +1381,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1431,13 +1394,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1449,13 +1410,11 @@ namespace DiscImageChef.DiscImages
length + sectorAddress, _track.TrackEndSector));
foreach(DataFileCharacteristics _chars in filePaths)
{
if((long)sectorAddress >= _chars.StartLba && length < (ulong)_chars.Sectors - sectorAddress)
{
chars = _chars;
break;
}
}
if(string.IsNullOrEmpty(chars.FilePath) || chars.FileFilter == null)
throw new ArgumentOutOfRangeException(nameof(chars.FileFilter), "Track does not exist in disc image");
@@ -1701,7 +1660,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1710,7 +1668,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1728,19 +1685,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1754,13 +1703,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track bwTrack in tracks)
{
if(bwTrack.TrackSequence == track)
{
_track = bwTrack;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1772,13 +1719,11 @@ namespace DiscImageChef.DiscImages
length + sectorAddress, _track.TrackEndSector));
foreach(DataFileCharacteristics _chars in filePaths)
{
if((long)sectorAddress >= _chars.StartLba && length < (ulong)_chars.Sectors - sectorAddress)
{
chars = _chars;
break;
}
}
if(string.IsNullOrEmpty(chars.FilePath) || chars.FileFilter == null)
throw new ArgumentOutOfRangeException(nameof(chars.FileFilter), "Track does not exist in disc image");
@@ -1833,7 +1778,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1842,7 +1786,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1879,7 +1822,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1887,7 +1830,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(ushort session)
{
List<Track> tracks = new List<Track>();
foreach(Track _track in this.tracks) { if(_track.TrackSession == session) tracks.Add(_track); }
foreach(Track _track in this.tracks) if(_track.TrackSession == session) tracks.Add(_track);
return tracks;
}

View File

@@ -612,17 +612,11 @@ namespace DiscImageChef.DiscImages
ulong.Parse(lengthString[1]) * 75 + ulong.Parse(lengthString[2]);
}
else if(matchZeroData.Success)
{
DicConsole.DebugWriteLine("CDRDAO plugin", "Found ZERO \"{1}\" at line {0}", line,
matchZeroData.Groups["length"].Value);
// Seems can be ignored as the data is still in the image
}
else if(matchZeroAudio.Success)
{
DicConsole.DebugWriteLine("CDRDAO plugin", "Found SILENCE \"{1}\" at line {0}", line,
matchZeroAudio.Groups["length"].Value);
// Seems can be ignored as the data is still in the image
}
else if(matchAudioFile.Success)
{
DicConsole.DebugWriteLine("CDRDAO plugin", "Found AUDIOFILE \"{1}\" at line {0}", line,
@@ -941,10 +935,8 @@ namespace DiscImageChef.DiscImages
foreach(CdrdaoTrack track in discimage.Tracks)
{
if(track.Subchannel)
{
if(!ImageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel))
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel);
}
switch(track.Tracktype)
{
@@ -1039,7 +1031,7 @@ namespace DiscImageChef.DiscImages
{
case MediaTagType.CD_MCN:
{
if(discimage.Mcn != null) { return Encoding.ASCII.GetBytes(discimage.Mcn); }
if(discimage.Mcn != null) return Encoding.ASCII.GetBytes(discimage.Mcn);
throw new FeatureNotPresentImageException("Image does not contain MCN information.");
}
@@ -1071,19 +1063,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrdaoTrack.Sectors)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1092,19 +1076,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrdaoTrack.Sectors)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1117,13 +1093,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == track)
{
_track = cdrdaoTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1196,7 +1170,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1205,7 +1178,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1217,13 +1189,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == track)
{
_track = cdrdaoTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1378,7 +1348,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1387,7 +1356,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1405,19 +1373,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrdaoTrack.Sectors)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1429,13 +1389,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrdaoTrack cdrdaoTrack in discimage.Tracks)
{
if(cdrdaoTrack.Sequence == track)
{
_track = cdrdaoTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1498,7 +1456,6 @@ namespace DiscImageChef.DiscImages
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1508,7 +1465,6 @@ namespace DiscImageChef.DiscImages
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}

View File

@@ -493,12 +493,10 @@ namespace DiscImageChef.DiscImages
discimage.Disktypestr = matchDiskType.Groups[1].Value;
}
else if(matchDiskType.Success && intrack)
{
throw new
FeatureUnsupportedImageException(string
.Format("Found REM ORIGINAL MEDIA TYPE field after a track in line {0}",
line));
}
else if(matchSession.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found REM SESSION at line {0}", line);
@@ -506,16 +504,8 @@ namespace DiscImageChef.DiscImages
// What happens between sessions
}
else if(matchLba.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found REM MSF at line {0}", line);
// Just ignored
}
else if(matchLeadOut.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found REM LEAD-OUT at line {0}", line);
// Just ignored
}
else if(matchLba.Success) DicConsole.DebugWriteLine("CDRWin plugin", "Found REM MSF at line {0}", line);
else if(matchLeadOut.Success) DicConsole.DebugWriteLine("CDRWin plugin", "Found REM LEAD-OUT at line {0}", line);
else if(matchComment.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found REM at line {0}", line);
@@ -609,16 +599,12 @@ namespace DiscImageChef.DiscImages
currentfile.Filetype = matchFile.Groups[2].Value;
// Check if file path is quoted
if(datafile[0] == '"' && datafile[datafile.Length - 1] == '"')
{
datafile = datafile.Substring(1, datafile.Length - 2); // Unquote it
}
if(datafile[0] == '"' && datafile[datafile.Length - 1] == '"') datafile = datafile.Substring(1, datafile.Length - 2); // Unquote it
currentfile.Datafilter = filtersList.GetFilter(datafile);
// Check if file exists
if(currentfile.Datafilter == null)
{
if(datafile[0] == '/' || datafile[0] == '/' && datafile[1] == '.'
) // UNIX absolute path
{
@@ -689,7 +675,6 @@ namespace DiscImageChef.DiscImages
FeatureUnsupportedImageException(string.Format("File \"{0}\" not found.",
matchFile.Groups[1].Value));
}
}
// File does exist, process it
DicConsole.DebugWriteLine("CDRWin plugin", "File \"{0}\" found",
@@ -754,7 +739,6 @@ namespace DiscImageChef.DiscImages
index));
if(index == 0 || index == 1 && !currenttrack.Indexes.ContainsKey(0))
{
if((int)(currenttrack.Sequence - 2) >= 0 && offset > 1)
{
cuetracks[currenttrack.Sequence - 2].Sectors = offset - currentfileoffsetsector;
@@ -771,7 +755,6 @@ namespace DiscImageChef.DiscImages
"cuetracks[currenttrack.sequence-2].bps = {0}",
cuetracks[currenttrack.Sequence - 2].Bps);
}
}
if((index == 0 || index == 1 && !currenttrack.Indexes.ContainsKey(0)) &&
currenttrack.Sequence == 1)
@@ -815,7 +798,7 @@ namespace DiscImageChef.DiscImages
else if(matchPostgap.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found POSTGAP at line {0}", line);
if(intrack) { currenttrack.Postgap = CdrWinMsftoLba(matchPostgap.Groups[1].Value); }
if(intrack) currenttrack.Postgap = CdrWinMsftoLba(matchPostgap.Groups[1].Value);
else
throw new
FeatureUnsupportedImageException(string
@@ -825,7 +808,7 @@ namespace DiscImageChef.DiscImages
else if(matchPregap.Success)
{
DicConsole.DebugWriteLine("CDRWin plugin", "Found PREGAP at line {0}", line);
if(intrack) { currenttrack.Pregap = CdrWinMsftoLba(matchPregap.Groups[1].Value); }
if(intrack) currenttrack.Pregap = CdrWinMsftoLba(matchPregap.Groups[1].Value);
else
throw new
FeatureUnsupportedImageException(string
@@ -855,10 +838,7 @@ namespace DiscImageChef.DiscImages
if(intrack)
{
if(currenttrack.Indexes.ContainsKey(0) && currenttrack.Pregap == 0)
{
currenttrack.Indexes.TryGetValue(0, out currenttrack.Pregap);
}
if(currenttrack.Indexes.ContainsKey(0) && currenttrack.Pregap == 0) currenttrack.Indexes.TryGetValue(0, out currenttrack.Pregap);
currentfile.Sequence = currenttrack.Sequence;
currenttrack.Trackfile = currentfile;
cuetracks[currenttrack.Sequence - 1] = currenttrack;
@@ -877,12 +857,10 @@ namespace DiscImageChef.DiscImages
else if(_line == "") // Empty line, ignore it
{ }
else // Non-empty unknown field
{
throw new
FeatureUnsupportedImageException(string
.Format("Found unknown field defined at line {0}: \"{1}\"",
line, _line));
}
}
}
@@ -907,13 +885,11 @@ namespace DiscImageChef.DiscImages
int lastSessionTrack = 0;
for(int i = 0; i < cuetracks.Length; i++)
{
if(cuetracks[i].Session == s)
{
sessionSectors += cuetracks[i].Sectors;
if(i > lastSessionTrack) lastSessionTrack = i;
}
}
sessions[s - 1].EndTrack = cuetracks[lastSessionTrack].Sequence;
sessions[s - 1].EndSector = sessionSectors - 1;
@@ -1251,7 +1227,6 @@ namespace DiscImageChef.DiscImages
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdTrackFlags);
foreach(CdrWinTrack track in discimage.Tracks)
{
switch(track.Tracktype)
{
case CDRWIN_TRACK_TYPE_AUDIO:
@@ -1309,7 +1284,6 @@ namespace DiscImageChef.DiscImages
break;
}
}
}
ImageInfo.XmlMediaType = XmlMediaType.OpticalDisc;
@@ -1354,7 +1328,7 @@ namespace DiscImageChef.DiscImages
{
case MediaTagType.CD_MCN:
{
if(discimage.Mcn != null) { return Encoding.ASCII.GetBytes(discimage.Mcn); }
if(discimage.Mcn != null) return Encoding.ASCII.GetBytes(discimage.Mcn);
throw new FeatureNotPresentImageException("Image does not contain MCN information.");
}
@@ -1394,19 +1368,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrwinTrack.Sectors)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1414,19 +1380,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrwinTrack.Sectors)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1438,13 +1396,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == track)
{
_track = cdrwinTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1529,7 +1485,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1538,7 +1493,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1550,13 +1504,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == track)
{
_track = cdrwinTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1718,7 +1670,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1727,7 +1678,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1745,19 +1695,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < cdrwinTrack.Sectors)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -1769,13 +1711,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(CdrWinTrack cdrwinTrack in discimage.Tracks)
{
if(cdrwinTrack.Sequence == track)
{
_track = cdrwinTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1844,7 +1784,6 @@ namespace DiscImageChef.DiscImages
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1854,7 +1793,6 @@ namespace DiscImageChef.DiscImages
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1958,7 +1896,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(discimage.Sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(discimage.Sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1968,7 +1906,6 @@ namespace DiscImageChef.DiscImages
List<Track> tracks = new List<Track>();
foreach(CdrWinTrack cdrTrack in discimage.Tracks)
{
if(cdrTrack.Session == session)
{
Track _track = new Track();
@@ -1999,7 +1936,6 @@ namespace DiscImageChef.DiscImages
tracks.Add(_track);
}
}
return tracks;
}

View File

@@ -1554,10 +1554,8 @@ namespace DiscImageChef.DiscImages
offsetmap.Add(_track.TrackStartSector, _track.TrackSequence);
if(_track.TrackSubchannelType != TrackSubchannelType.None)
{
if(!ImageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel))
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel);
}
switch(_track.TrackType)
{
@@ -1633,10 +1631,7 @@ namespace DiscImageChef.DiscImages
Track GetTrack(ulong sector)
{
Track track = new Track();
foreach(KeyValuePair<ulong, uint> kvp in offsetmap)
{
if(sector >= kvp.Key) tracks.TryGetValue(kvp.Value, out track);
}
foreach(KeyValuePair<ulong, uint> kvp in offsetmap) if(sector >= kvp.Key) tracks.TryGetValue(kvp.Value, out track);
return track;
}
@@ -1664,7 +1659,7 @@ namespace DiscImageChef.DiscImages
imageStream.Seek((long)offset, SeekOrigin.Begin);
imageStream.Read(compHunk, 0, compHunk.Length);
if(length == sectorsPerHunk * ImageInfo.SectorSize) { hunk = compHunk; }
if(length == sectorsPerHunk * ImageInfo.SectorSize) hunk = compHunk;
else if((ChdCompression)hdrCompression > ChdCompression.Zlib)
throw new ImageNotSupportedException(string.Format("Unsupported compression {0}",
(ChdCompression)hdrCompression));
@@ -1996,13 +1991,11 @@ namespace DiscImageChef.DiscImages
byte[] buffer = new byte[sector_size];
if(track.TrackType == TrackType.Audio && swapAudio)
{
for(int i = 0; i < 2352; i += 2)
{
buffer[i + 1] = sector[i];
buffer[i] = sector[i + 1];
}
}
else Array.Copy(sector, sector_offset, buffer, 0, sector_size);
return buffer;
@@ -2045,7 +2038,6 @@ namespace DiscImageChef.DiscImages
uint sector_size;
if(tag == SectorTagType.CdSectorSubchannel)
{
if(track.TrackSubchannelType == TrackSubchannelType.None)
throw new FeatureNotPresentImageException("Requested sector does not contain subchannel");
else if(track.TrackSubchannelType == TrackSubchannelType.RawInterleaved)
@@ -2057,16 +2049,13 @@ namespace DiscImageChef.DiscImages
throw new
FeatureSupportedButNotImplementedImageException(string.Format("Unsupported subchannel type {0}",
track.TrackSubchannelType));
}
else
{
switch(track.TrackType)
{
case TrackType.CdMode1:
case TrackType.CdMode2Form1:
{
if(track.TrackRawBytesPerSector == 2352)
{
switch(tag)
{
case SectorTagType.CdSectorSync:
@@ -2110,7 +2099,6 @@ namespace DiscImageChef.DiscImages
}
default: throw new ArgumentException("Unsupported tag requested", nameof(tag));
}
}
else throw new FeatureNotPresentImageException("Requested sector does not contain tags");
break;
@@ -2118,7 +2106,6 @@ namespace DiscImageChef.DiscImages
case TrackType.CdMode2Form2:
{
if(track.TrackRawBytesPerSector == 2352)
{
switch(tag)
{
case SectorTagType.CdSectorSync:
@@ -2147,9 +2134,7 @@ namespace DiscImageChef.DiscImages
}
default: throw new ArgumentException("Unsupported tag requested", nameof(tag));
}
}
else
{
switch(tag)
{
case SectorTagType.CdSectorSync:
@@ -2174,14 +2159,12 @@ namespace DiscImageChef.DiscImages
}
default: throw new ArgumentException("Unsupported tag requested", nameof(tag));
}
}
break;
}
case TrackType.CdMode2Formless:
{
if(track.TrackRawBytesPerSector == 2352)
{
switch(tag)
{
case SectorTagType.CdSectorSync:
@@ -2205,7 +2188,6 @@ namespace DiscImageChef.DiscImages
}
default: throw new ArgumentException("Unsupported tag requested", nameof(tag));
}
}
else throw new FeatureNotPresentImageException("Requested sector does not contain tags");
break;
@@ -2214,28 +2196,23 @@ namespace DiscImageChef.DiscImages
throw new FeatureNotPresentImageException("Requested sector does not contain tags");
default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type");
}
}
byte[] buffer = new byte[sector_size];
if(track.TrackType == TrackType.Audio && swapAudio)
{
for(int i = 0; i < 2352; i += 2)
{
buffer[i + 1] = sector[i];
buffer[i] = sector[i + 1];
}
}
else Array.Copy(sector, sector_offset, buffer, 0, sector_size);
if(track.TrackType == TrackType.Audio && swapAudio)
{
for(int i = 0; i < 2352; i += 2)
{
buffer[i + 1] = sector[i];
buffer[i] = sector[i + 1];
}
}
else Array.Copy(sector, sector_offset, buffer, 0, sector_size);
return buffer;
@@ -2319,13 +2296,11 @@ namespace DiscImageChef.DiscImages
byte[] buffer = new byte[track.TrackRawBytesPerSector];
if(track.TrackType == TrackType.Audio && swapAudio)
{
for(int i = 0; i < 2352; i += 2)
{
buffer[i + 1] = sector[i];
buffer[i] = sector[i + 1];
}
}
else Array.Copy(sector, 0, buffer, 0, track.TrackRawBytesPerSector);
return buffer;
@@ -2496,7 +2471,7 @@ namespace DiscImageChef.DiscImages
throw new FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image");
List<Track> trks = new List<Track>();
foreach(Track track in tracks.Values) { if(track.TrackSession == session) trks.Add(track); }
foreach(Track track in tracks.Values) if(track.TrackSession == session) trks.Add(track);
return trks;
}

View File

@@ -323,24 +323,15 @@ namespace DiscImageChef.DiscImages
cdtLenMatch = cdtLenRegex.Match(_line);
discCatMatch = discCatRegex.Match(_line);
if(discEntMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found TocEntries at line {0}", line);
}
else if(discSessMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found Sessions at line {0}", line);
}
if(discEntMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found TocEntries at line {0}", line);
else if(discSessMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found Sessions at line {0}", line);
else if(discScrMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found DataTracksScrambled at line {0}",
line);
scrambled |= discScrMatch.Groups["value"].Value == "1";
}
else if(cdtLenMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found CDTextLength at line {0}", line);
}
else if(cdtLenMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found CDTextLength at line {0}", line);
else if(discCatMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found Catalog at line {0}", line);
@@ -353,10 +344,7 @@ namespace DiscImageChef.DiscImages
cdtEntsMatch = cdtEntsRegex.Match(_line);
cdtEntMatch = cdtEntRegex.Match(_line);
if(cdtEntsMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found CD-Text Entries at line {0}", line);
}
if(cdtEntsMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found CD-Text Entries at line {0}", line);
else if(cdtEntMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found CD-Text Entry at line {0}", line);
@@ -372,14 +360,8 @@ namespace DiscImageChef.DiscImages
sessPregMatch = sessPregRegex.Match(_line);
sessSubcMatch = sessSubcRegex.Match(_line);
if(sessPregMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found PreGapMode at line {0}", line);
}
else if(sessSubcMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found PreGapSubC at line {0}", line);
}
if(sessPregMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found PreGapMode at line {0}", line);
else if(sessSubcMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found PreGapSubC at line {0}", line);
}
else if(inEntry)
{
@@ -440,10 +422,7 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("CloneCD plugin", "Found AFrame at line {0}", line);
currentEntry.Frame = Convert.ToByte(entAFrameMatch.Groups["value"].Value, 10);
}
else if(entAlbaMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found ALBA at line {0}", line);
}
else if(entAlbaMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found ALBA at line {0}", line);
else if(entZeroMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found Zero at line {0}", line);
@@ -466,10 +445,7 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("CloneCD plugin", "Found PFrame at line {0}", line);
currentEntry.PFRAME = Convert.ToByte(entPFrameMatch.Groups["value"].Value, 10);
}
else if(entPlbaMatch.Success)
{
DicConsole.DebugWriteLine("CloneCD plugin", "Found PLBA at line {0}", line);
}
else if(entPlbaMatch.Success) DicConsole.DebugWriteLine("CloneCD plugin", "Found PLBA at line {0}", line);
}
}
}
@@ -639,7 +615,6 @@ namespace DiscImageChef.DiscImages
Array.Copy(sectTest, 20, subHdr2, 0, 4);
if(subHdr1.SequenceEqual(subHdr2) && !empHdr.SequenceEqual(subHdr1))
{
if((subHdr1[2] & 0x20) == 0x20)
{
currentTrack.TrackBytesPerSector = 2324;
@@ -704,7 +679,6 @@ namespace DiscImageChef.DiscImages
.CdSectorEdc);
if(ImageInfo.SectorSize < 2048) ImageInfo.SectorSize = 2048;
}
}
else
{
currentTrack.TrackBytesPerSector = 2336;
@@ -936,19 +910,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in tracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress <= _track.TrackEndSector)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -957,19 +923,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in tracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress <= _track.TrackEndSector)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -982,13 +940,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1049,7 +1005,6 @@ namespace DiscImageChef.DiscImages
dataStream.Seek((long)(_track.TrackFileOffset + sectorAddress * 2352), SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) dataStream.Read(buffer, 0, buffer.Length);
else
{
for(int i = 0; i < length; i++)
{
byte[] sector = new byte[sectorSize];
@@ -1058,7 +1013,6 @@ namespace DiscImageChef.DiscImages
dataStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1071,13 +1025,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1299,7 +1251,6 @@ namespace DiscImageChef.DiscImages
dataStream.Seek((long)(_track.TrackFileOffset + sectorAddress * 2352), SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) dataStream.Read(buffer, 0, buffer.Length);
else
{
for(int i = 0; i < length; i++)
{
byte[] sector = new byte[sectorSize];
@@ -1308,7 +1259,6 @@ namespace DiscImageChef.DiscImages
dataStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1326,19 +1276,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector + 1)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1351,13 +1293,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1488,7 +1428,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(DiscImages.Session session)
{
if(sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1496,7 +1436,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(ushort session)
{
List<Track> tracks = new List<Track>();
foreach(Track _track in this.tracks) { if(_track.TrackSession == session) tracks.Add(_track); }
foreach(Track _track in this.tracks) if(_track.TrackSession == session) tracks.Add(_track);
return tracks;
}

View File

@@ -704,19 +704,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in tracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress < _track.TrackEndSector)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -725,19 +717,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in tracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress < _track.TrackEndSector)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -750,13 +734,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -831,7 +813,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) imageStream.Read(buffer, 0, buffer.Length);
else
{
for(int i = 0; i < length; i++)
{
byte[] sector = new byte[sectorSize];
@@ -840,7 +821,6 @@ namespace DiscImageChef.DiscImages
imageStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -852,13 +832,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1046,7 +1024,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) imageStream.Read(buffer, 0, buffer.Length);
else
{
for(int i = 0; i < length; i++)
{
byte[] sector = new byte[sectorSize];
@@ -1055,7 +1032,6 @@ namespace DiscImageChef.DiscImages
imageStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1073,19 +1049,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track track in tracks)
{
if(track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < track.TrackEndSector - track.TrackStartSector)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1098,13 +1066,11 @@ namespace DiscImageChef.DiscImages
_track.TrackSequence = 0;
foreach(Track __track in tracks)
{
if(__track.TrackSequence == track)
{
_track = __track;
break;
}
}
if(_track.TrackSequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -1139,7 +1105,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) imageStream.Read(buffer, 0, buffer.Length);
else
{
for(int i = 0; i < length; i++)
{
byte[] sector = new byte[sectorSize];
@@ -1148,7 +1113,6 @@ namespace DiscImageChef.DiscImages
imageStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -1265,7 +1229,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1273,7 +1237,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(ushort session)
{
List<Track> _tracks = new List<Track>();
foreach(Track _track in tracks) { if(_track.TrackSession == session) _tracks.Add(_track); }
foreach(Track _track in tracks) if(_track.TrackSession == session) _tracks.Add(_track);
return _tracks;
}

View File

@@ -703,10 +703,8 @@ namespace DiscImageChef.DiscImages
byte[] buffer = new byte[length * ImageInfo.SectorSize];
if(twiggy)
{
Array.Copy(twiggyCache, (int)sectorAddress * ImageInfo.SectorSize, buffer, 0,
length * ImageInfo.SectorSize);
}
else
{
Stream stream = dc42ImageFilter.GetDataForkStream();
@@ -732,7 +730,7 @@ namespace DiscImageChef.DiscImages
byte[] buffer = new byte[length * bptag];
if(twiggy) { Array.Copy(twiggyCacheTags, (int)sectorAddress * bptag, buffer, 0, length * bptag); }
if(twiggy) Array.Copy(twiggyCacheTags, (int)sectorAddress * bptag, buffer, 0, length * bptag);
else
{
Stream stream = dc42ImageFilter.GetDataForkStream();

View File

@@ -258,7 +258,6 @@ namespace DiscImageChef.DiscImages
currentTrack.Trackfile = currentTrack.Trackfilter.GetFilename();
if(currentTrack.StartSector - currentStart > 0)
{
if(currentTrack.StartSector == 45000)
{
highDensity = true;
@@ -271,7 +270,6 @@ namespace DiscImageChef.DiscImages
currentTrack.Pregap = currentTrack.StartSector - currentStart;
currentTrack.StartSector -= currentTrack.StartSector - currentStart;
}
}
if((currentTrack.Trackfilter.GetDataForkLength() - currentTrack.Offset) % currentTrack.Bps !=
0) throw new ImageNotSupportedException("Track size not a multiple of sector size");
@@ -292,13 +290,11 @@ namespace DiscImageChef.DiscImages
Session[] _sessions = new Session[2];
for(int s = 0; s < _sessions.Length; s++)
{
if(s == 0)
{
_sessions[s].SessionSequence = 1;
foreach(GdiTrack trk in discimage.Tracks)
{
if(!trk.HighDensity)
{
if(_sessions[s].StartTrack == 0) _sessions[s].StartTrack = trk.Sequence;
@@ -312,14 +308,12 @@ namespace DiscImageChef.DiscImages
if(_sessions[s].EndSector < trk.Sectors + trk.StartSector - 1)
_sessions[s].EndSector = trk.Sectors + trk.StartSector - 1;
}
}
}
else
{
_sessions[s].SessionSequence = 2;
foreach(GdiTrack trk in discimage.Tracks)
{
if(trk.HighDensity)
{
if(_sessions[s].StartTrack == 0) _sessions[s].StartTrack = trk.Sequence;
@@ -333,9 +327,7 @@ namespace DiscImageChef.DiscImages
if(_sessions[s].EndSector < trk.Sectors + trk.StartSector - 1)
_sessions[s].EndSector = trk.Sectors + trk.StartSector - 1;
}
}
}
}
discimage.Sessions.Add(_sessions[0]);
discimage.Sessions.Add(_sessions[1]);
@@ -416,7 +408,6 @@ namespace DiscImageChef.DiscImages
ImageInfo.SectorSize = 2352; // All others
foreach(GdiTrack track in discimage.Tracks)
{
if((track.Flags & 0x40) == 0x40 && track.Bps == 2352)
{
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync);
@@ -427,7 +418,6 @@ namespace DiscImageChef.DiscImages
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEccQ);
ImageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc);
}
}
ImageInfo.ImageCreationTime = imageFilter.GetCreationTime();
ImageInfo.ImageLastModificationTime = imageFilter.GetLastWriteTime();
@@ -499,19 +489,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < gdiTrack.Sectors)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
ulong transitionStart;
offsetmap.TryGetValue(0, out transitionStart);
@@ -524,19 +506,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < gdiTrack.Sectors)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
ulong transitionStart;
offsetmap.TryGetValue(0, out transitionStart);
@@ -562,13 +536,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == track)
{
_track = gdiTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -640,7 +612,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * remainingSectors));
else
{
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
@@ -649,7 +620,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, (int)(i * sectorSize), sectorSize);
}
}
return buffer;
}
@@ -672,13 +642,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == track)
{
_track = gdiTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -804,7 +772,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * remainingSectors));
else
{
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
@@ -813,7 +780,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, (int)(i * sectorSize), sectorSize);
}
}
return buffer;
}
@@ -831,19 +797,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == kvp.Key)
{
if(sectorAddress - kvp.Value < gdiTrack.Sectors)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
}
@@ -864,13 +822,11 @@ namespace DiscImageChef.DiscImages
_track.Sequence = 0;
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.Sequence == track)
{
_track = gdiTrack;
break;
}
}
if(_track.Sequence == 0)
throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image");
@@ -942,7 +898,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * remainingSectors));
else
{
for(ulong i = 0; i < remainingSectors; i++)
{
byte[] sector;
@@ -951,7 +906,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, (int)(i * sectorSize), sectorSize);
}
}
return buffer;
}
@@ -1045,7 +999,7 @@ namespace DiscImageChef.DiscImages
public override List<Track> GetSessionTracks(Session session)
{
if(discimage.Sessions.Contains(session)) { return GetSessionTracks(session.SessionSequence); }
if(discimage.Sessions.Contains(session)) return GetSessionTracks(session.SessionSequence);
throw new ImageNotSupportedException("Session does not exist in disc image");
}
@@ -1067,7 +1021,6 @@ namespace DiscImageChef.DiscImages
}
foreach(GdiTrack gdiTrack in discimage.Tracks)
{
if(gdiTrack.HighDensity == expectedDensity)
{
Track _track = new Track();
@@ -1092,7 +1045,6 @@ namespace DiscImageChef.DiscImages
tracks.Add(_track);
}
}
return tracks;
}

View File

@@ -223,7 +223,7 @@ namespace DiscImageChef.DiscImages
if(fheader.trackMap[0] != 1 || fheader.trackMap[1] != 1) return false;
// all other tracks must be either present (=1) or absent (=0)
for(int i = 0; i < 2 * 82; i++) { if(fheader.trackMap[i] > 1) return false; }
for(int i = 0; i < 2 * 82; i++) if(fheader.trackMap[i] > 1) return false;
// TODO: validate the tracks
// For now, having a valid header should be sufficient.
@@ -268,12 +268,7 @@ namespace DiscImageChef.DiscImages
// build table of track offsets
for(int i = 0; i < ImageInfo.Cylinders * 2; i++)
{
if(fheader.trackMap[i] == 0)
{
// track is not present in image
trackOffset[i] = -1;
}
if(fheader.trackMap[i] == 0) trackOffset[i] = -1;
else
{
// track is present, read the block header
@@ -295,7 +290,6 @@ namespace DiscImageChef.DiscImages
// skip the block data
stream.Seek(blkLength, SeekOrigin.Current);
}
}
// ensure that the last track is present completely
if(currentOffset > stream.Length) return false;
@@ -374,10 +368,8 @@ namespace DiscImageChef.DiscImages
public override MediaType GetMediaType()
{
foreach(MediaTypeTableEntry ent in mediaTypes)
{
if(ent.Tracks == ImageInfo.Cylinders && ent.SectorsPerTrack == ImageInfo.SectorsPerTrack)
return ent.MediaType;
}
return MediaType.Unknown;
}
@@ -410,17 +402,15 @@ namespace DiscImageChef.DiscImages
int sIndex = 0; // source buffer position
int dIndex = 0; // destination buffer position
while(sIndex < compressedLength)
{
if(cBuffer[sIndex] == escapeByte)
{
sIndex++; // skip over escape byte
fillByte = cBuffer[sIndex++]; // read fill byte
fillCount = cBuffer[sIndex++]; // read fill count
// fill destination buffer
for(int i = 0; i < fillCount; i++) { trackData[dIndex++] = fillByte; }
for(int i = 0; i < fillCount; i++) trackData[dIndex++] = fillByte;
}
else { trackData[dIndex++] = cBuffer[sIndex++]; }
}
else trackData[dIndex++] = cBuffer[sIndex++];
// check that the number of bytes decompressed matches a whole track
if(dIndex != ImageInfo.SectorSize * ImageInfo.SectorsPerTrack)
@@ -443,11 +433,7 @@ namespace DiscImageChef.DiscImages
throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found");
result = new byte[ImageInfo.SectorSize];
if(trackOffset[trackNum] == -1)
{
// track is not present. Fill with zeroes.
Array.Clear(result, 0, (int)ImageInfo.SectorSize);
}
if(trackOffset[trackNum] == -1) Array.Clear(result, 0, (int)ImageInfo.SectorSize);
else
{
// track is present in file, make sure it has been loaded
@@ -466,10 +452,7 @@ namespace DiscImageChef.DiscImages
if(sectorAddress + length > ImageInfo.Sectors)
throw new ArgumentOutOfRangeException(nameof(length), "Requested more sectors than available");
for(int i = 0; i < length; i++)
{
ReadSector(sectorAddress + (ulong)i).CopyTo(result, i * ImageInfo.SectorSize);
}
for(int i = 0; i < length; i++) ReadSector(sectorAddress + (ulong)i).CopyTo(result, i * ImageInfo.SectorSize);
return result;
}

View File

@@ -184,7 +184,7 @@ namespace DiscImageChef.DiscImages
stream.Read(bpsbytes, 0, bpsbytes.Length);
for(int i = 0; i < spt; i++) bps[i] = BitConverter.ToUInt16(bpsbytes, i * 2);
}
else { for(int i = 0; i < spt; i++) bps[i] = (ushort)(128 << n); }
else for(int i = 0; i < spt; i++) bps[i] = (ushort)(128 << n);
if(spt > ImageInfo.SectorsPerTrack) ImageInfo.SectorsPerTrack = spt;

View File

@@ -482,14 +482,12 @@ namespace DiscImageChef.DiscImages
ulong chunkStartSector = 0;
foreach(KeyValuePair<ulong, BlockChunk> kvp in chunks)
{
if(sectorAddress >= kvp.Key)
{
currentChunk = kvp.Value;
chunkFound = true;
chunkStartSector = kvp.Key;
}
}
long relOff = ((long)sectorAddress - (long)chunkStartSector) * SECTOR_SIZE;

View File

@@ -900,14 +900,8 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("Nero plugin", "footerV2.ChunkID = 0x{0:X8}", footerV2.ChunkId);
DicConsole.DebugWriteLine("Nero plugin", "footerV2.FirstChunkOffset = {0}", footerV2.FirstChunkOffset);
if(footerV2.ChunkId == NeroV2FooterId && footerV2.FirstChunkOffset < (ulong)imageStream.Length)
{
return true;
}
if(footerV1.ChunkId == NeroV1FooterId && footerV1.FirstChunkOffset < (ulong)imageStream.Length)
{
return true;
}
if(footerV2.ChunkId == NeroV2FooterId && footerV2.FirstChunkOffset < (ulong)imageStream.Length) return true;
if(footerV1.ChunkId == NeroV1FooterId && footerV1.FirstChunkOffset < (ulong)imageStream.Length) return true;
return false;
}
@@ -1842,19 +1836,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in imageTracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < _track.TrackEndSector - _track.TrackStartSector)
return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1863,19 +1849,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in imageTracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < _track.TrackEndSector - _track.TrackStartSector)
return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -1970,7 +1948,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -1979,7 +1956,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -2201,7 +2177,6 @@ namespace DiscImageChef.DiscImages
SeekOrigin.Begin);
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -2210,7 +2185,6 @@ namespace DiscImageChef.DiscImages
br.BaseStream.Seek(sectorSkip, SeekOrigin.Current);
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}
@@ -2228,19 +2202,11 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectorsLong(ulong sectorAddress, uint length)
{
foreach(KeyValuePair<uint, ulong> kvp in offsetmap)
{
if(sectorAddress >= kvp.Value)
{
foreach(Track _track in imageTracks)
{
if(_track.TrackSequence == kvp.Key)
{
if(sectorAddress - kvp.Value < _track.TrackEndSector - _track.TrackStartSector)
return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key);
}
}
}
}
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
string.Format("Sector address {0} not found", sectorAddress));
@@ -2312,7 +2278,6 @@ namespace DiscImageChef.DiscImages
if(sectorOffset == 0 && sectorSkip == 0) buffer = br.ReadBytes((int)(sectorSize * length));
else
{
for(int i = 0; i < length; i++)
{
byte[] sector;
@@ -2322,7 +2287,6 @@ namespace DiscImageChef.DiscImages
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
}
}
return buffer;
}

View File

@@ -217,8 +217,6 @@ namespace DiscImageChef.DiscImages
// Flux
if(next != current)
{
// Next is used
if(next)
{
extentStart = i;
@@ -229,7 +227,6 @@ namespace DiscImageChef.DiscImages
extents.Add(extentStart, i);
extentsOff.TryGetValue(extentStart, out ulong foo);
}
}
if(next && current) blockOff++;
@@ -300,13 +297,11 @@ namespace DiscImageChef.DiscImages
bool allEmpty = true;
for(uint i = 0; i < length; i++)
{
if(byteMap[sectorAddress + i] != 0)
{
allEmpty = false;
break;
}
}
if(allEmpty) return new byte[pHdr.blockSize * length];

View File

@@ -518,8 +518,6 @@ namespace DiscImageChef.DiscImages
// Flux
if(next != current)
{
// Next is used
if(next)
{
extentStart = i;
@@ -530,7 +528,6 @@ namespace DiscImageChef.DiscImages
extents.Add(extentStart, i);
extentsOff.TryGetValue(extentStart, out ulong foo);
}
}
if(next && current) blockOff++;
@@ -617,13 +614,11 @@ namespace DiscImageChef.DiscImages
bool allEmpty = true;
for(uint i = 0; i < length; i++)
{
if((bitmap[sectorAddress / 8] & (1 << (int)(sectorAddress % 8))) != 0)
{
allEmpty = false;
break;
}
}
if(allEmpty) return new byte[ImageInfo.SectorSize * length];

View File

@@ -501,7 +501,7 @@ namespace DiscImageChef.DiscImages
cnt++;
val >>= 1;
}
if((val & 0x1) == 0) { cnt++; }
if((val & 0x1) == 0) cnt++;
return cnt;
}

View File

@@ -82,7 +82,7 @@ namespace DiscImageChef.DiscImages
byte[] hdr_b = new byte[256];
stream.Read(hdr_b, 0, hdr_b.Length);
for(int i = 4; i < 256; i++) { if(hdr_b[i] != 0) return false; }
for(int i = 4; i < 256; i++) if(hdr_b[i] != 0) return false;
int cylinders = BitConverter.ToInt32(hdr_b, 0);
@@ -103,7 +103,7 @@ namespace DiscImageChef.DiscImages
byte[] hdr_b = new byte[256];
stream.Read(hdr_b, 0, hdr_b.Length);
for(int i = 4; i < 256; i++) { if(hdr_b[i] != 0) return false; }
for(int i = 4; i < 256; i++) if(hdr_b[i] != 0) return false;
int cylinders = BitConverter.ToInt32(hdr_b, 0);

View File

@@ -357,7 +357,7 @@ namespace DiscImageChef.DiscImages
inStream.Seek(12, SeekOrigin.Begin);
stream.Seek(12, SeekOrigin.Begin);
init_Decode();
do { if((rd = Decode(out obuf, BUFSZ)) > 0) stream.Write(obuf, 0, rd); }
do if((rd = Decode(out obuf, BUFSZ)) > 0) stream.Write(obuf, 0, rd);
while(rd == BUFSZ);
}
else
@@ -416,10 +416,8 @@ namespace DiscImageChef.DiscImages
aDiskCrcHasFailed |= cmtcrc != commentHeader.Crc;
for(int i = 0; i < commentBlock.Length; i++)
{
// Replace NULLs, used by TeleDisk as newline markers, with UNIX newline marker
// Replace NULLs, used by TeleDisk as newline markers, with UNIX newline marker
if(commentBlock[i] == 0x00) commentBlock[i] = 0x0A;
}
ImageInfo.ImageComments = System.Text.Encoding.ASCII.GetString(commentBlock);
@@ -527,7 +525,6 @@ namespace DiscImageChef.DiscImages
break;
if(teleDiskTrack.Sectors < ImageInfo.SectorsPerTrack)
{
if(teleDiskTrack.Cylinder + 1 == totalCylinders)
{
hasLeadOutOnHead0 |= teleDiskTrack.Head == 0;
@@ -535,7 +532,6 @@ namespace DiscImageChef.DiscImages
if(ImageInfo.Cylinders == totalCylinders) ImageInfo.Cylinders--;
}
else ImageInfo.SectorsPerTrack = teleDiskTrack.Sectors;
}
for(byte processedSectors = 0; processedSectors < teleDiskTrack.Sectors; processedSectors++)
{
TeleDiskSectorHeader teleDiskSector = new TeleDiskSectorHeader();
@@ -676,50 +672,34 @@ namespace DiscImageChef.DiscImages
DicConsole.DebugWriteLine("TeleDisk plugin", "\t\tLBA: {0}", lba);
if((teleDiskSector.Flags & FLAGS_SECTOR_NO_ID) != FLAGS_SECTOR_NO_ID)
{
if(sectorsData[teleDiskTrack.Cylinder][teleDiskTrack.Head][teleDiskSector.SectorNumber] != null)
{
if((teleDiskSector.Flags & FLAGS_SECTOR_DUPLICATE) == FLAGS_SECTOR_DUPLICATE)
{
DicConsole.DebugWriteLine("TeleDisk plugin",
"\t\tSector {0} on cylinder {1} head {2} is duplicate, and marked so",
teleDiskSector.SectorNumber, teleDiskSector.Cylinder, teleDiskSector.Head);
}
else
{
DicConsole.DebugWriteLine("TeleDisk plugin",
"\t\tSector {0} on cylinder {1} head {2} is duplicate, but is not marked so",
teleDiskSector.SectorNumber, teleDiskSector.Cylinder, teleDiskSector.Head);
}
}
else
{
sectorsData[teleDiskTrack.Cylinder][teleDiskTrack.Head][teleDiskSector.SectorNumber] = decodedData;
totalDiskSize += (uint)decodedData.Length;
}
}
}
}
MemoryStream leadOutMs = new MemoryStream();
if(hasLeadOutOnHead0)
{
for(int i = 0; i < sectorsData[totalCylinders - 1][0].Length; i++)
{
if(sectorsData[totalCylinders - 1][0][i] != null)
leadOutMs.Write(sectorsData[totalCylinders - 1][0][i], 0,
sectorsData[totalCylinders - 1][0][i].Length);
}
}
if(hasLeadOutOnHead1)
{
for(int i = 0; i < sectorsData[totalCylinders - 1][1].Length; i++)
{
if(sectorsData[totalCylinders - 1][1][i] != null)
leadOutMs.Write(sectorsData[totalCylinders - 1][1][i], 0,
sectorsData[totalCylinders - 1][1][i].Length);
}
}
if(leadOutMs.Length != 0)
{
@@ -911,10 +891,8 @@ namespace DiscImageChef.DiscImages
crc ^= (ushort)((buffer[counter] & 0xFF) << 8);
for(int i = 0; i < 8; i++)
{
if((crc & 0x8000) > 0) crc = (ushort)((crc << 1) ^ TELE_DISK_CRC_POLY);
else crc = (ushort)(crc << 1);
}
counter++;
}
@@ -1517,14 +1495,12 @@ namespace DiscImageChef.DiscImages
/* halven cumulative freq for leaf nodes */
j = 0;
for(i = 0; i < T; i++)
{
if(son[i] >= T)
{
freq[j] = (ushort)((freq[i] + 1) / 2);
son[j] = son[i];
j++;
}
}
/* make a tree : first, connect children nodes */
for(i = 0, j = N_CHAR; j < T; i += 2, j++)
{
@@ -1543,10 +1519,8 @@ namespace DiscImageChef.DiscImages
}
/* connect parent nodes */
for(i = 0; i < T; i++)
{
if((k = son[i]) >= T) { prnt[k] = i; }
else { prnt[k] = prnt[k + 1] = i; }
}
if((k = son[i]) >= T) prnt[k] = i;
else prnt[k] = prnt[k + 1] = i;
}
/* update freq tree */
@@ -1555,7 +1529,7 @@ namespace DiscImageChef.DiscImages
{
int i, j, k, l;
if(freq[R] == MAX_FREQ) { Reconst(); }
if(freq[R] == MAX_FREQ) Reconst();
c = prnt[c + T];
do
{
@@ -1663,7 +1637,6 @@ namespace DiscImageChef.DiscImages
buf = new byte[len];
int count; // was an unsigned long, seems unnecessary
for(count = 0; count < len;)
{
if(tdctl.Bufcnt == 0)
{
if((c = DecodeChar()) < 0) return count; // fatal error
@@ -1699,7 +1672,6 @@ namespace DiscImageChef.DiscImages
// reset bufcnt after copy string from text_buf[]
if(tdctl.Bufndx >= tdctl.Bufcnt) tdctl.Bufndx = tdctl.Bufcnt = 0;
}
}
return count; // count == len, success
}

View File

@@ -839,7 +839,6 @@ namespace DiscImageChef.DiscImages
{
locatorEntriesData = new byte[8][];
for(int i = 0; i < 8; i++)
{
if(thisDynamic.LocatorEntries[i].PlatformCode != 0x00000000)
{
locatorEntriesData[i] = new byte[thisDynamic.LocatorEntries[i].PlatformDataLength];
@@ -873,7 +872,6 @@ namespace DiscImageChef.DiscImages
break;
}
}
}
int currentLocator = 0;
bool locatorFound = false;

View File

@@ -674,7 +674,6 @@ namespace DiscImageChef.DiscImages
ulong skipSize = 0;
for(ulong i = 0; i < dataBlocks; i++)
{
if(readChunks == chunkRatio)
{
if(hasParent)
@@ -688,7 +687,6 @@ namespace DiscImageChef.DiscImages
blockAllocationTable[i] = BitConverter.ToUInt64(batB, (int)(i * 8 + skipSize));
readChunks++;
}
}
if(hasParent)
{
@@ -696,11 +694,7 @@ namespace DiscImageChef.DiscImages
MemoryStream sectorBmpMs = new MemoryStream();
foreach(ulong pt in sectorBitmapPointers)
{
if((pt & BAT_FLAGS_MASK) == SECTOR_BITMAP_NOT_PRESENT)
{
sectorBmpMs.Write(new byte[1048576], 0, 1048576);
}
if((pt & BAT_FLAGS_MASK) == SECTOR_BITMAP_NOT_PRESENT) sectorBmpMs.Write(new byte[1048576], 0, 1048576);
else if((pt & BAT_FLAGS_MASK) == SECTOR_BITMAP_PRESENT)
{
stream.Seek((long)((pt & BAT_FILE_OFFSET_MASK) * 1048576), SeekOrigin.Begin);
@@ -713,7 +707,6 @@ namespace DiscImageChef.DiscImages
ImageNotSupportedException(string
.Format("Unsupported sector bitmap block flags (0x{0:X16}) found, not proceeding.",
pt & BAT_FLAGS_MASK));
}
sectorBitmap = sectorBmpMs.ToArray();
sectorBmpMs.Close();

View File

@@ -131,7 +131,6 @@ namespace DiscImageChef.DiscImages
else if((extension == ".adf" || extension == ".adl") && imageFilter.GetDataForkLength() == 819200)
ImageInfo.SectorSize = 1024;
else
{
switch(imageFilter.GetDataForkLength())
{
case 242944:
@@ -188,7 +187,6 @@ namespace DiscImageChef.DiscImages
ImageInfo.SectorSize = 512;
break;
}
}
ImageInfo.ImageSize = (ulong)imageFilter.GetDataForkLength();
ImageInfo.ImageCreationTime = imageFilter.GetCreationTime();
@@ -308,14 +306,12 @@ namespace DiscImageChef.DiscImages
// Sharp X68000 SASI hard disks
if(extension == ".hdf")
{
if(ImageInfo.ImageSize % 256 == 0)
{
ImageInfo.SectorSize = 256;
ImageInfo.Sectors = ImageInfo.ImageSize / ImageInfo.SectorSize;
ImageInfo.MediaType = MediaType.GENERIC_HDD;
}
}
if(ImageInfo.XmlMediaType == XmlMediaType.OpticalDisc)
{
@@ -675,7 +671,7 @@ namespace DiscImageChef.DiscImages
public override byte[] ReadSectors(ulong sectorAddress, uint length)
{
if(differentTrackZeroSize) { throw new NotImplementedException("Not yet implemented"); }
if(differentTrackZeroSize) throw new NotImplementedException("Not yet implemented");
else
{
if(sectorAddress > ImageInfo.Sectors - 1)
@@ -920,7 +916,6 @@ namespace DiscImageChef.DiscImages
return MediaType.Unknown;
}
else
{
switch(ImageInfo.ImageSize)
{
case 80384: return MediaType.ECMA_66;
@@ -1018,7 +1013,6 @@ namespace DiscImageChef.DiscImages
default: return MediaType.GENERIC_HDD;
}
}
}
#endregion