diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes index 365386412..937d6929a 160000 --- a/Aaru.CommonTypes +++ b/Aaru.CommonTypes @@ -1 +1 @@ -Subproject commit 36538641284bdec1a8104edc6fb6eec5a0441a88 +Subproject commit 937d6929a006165ee0d65bc9f82dd22fa775928d diff --git a/Aaru.Images/AaruFormat/Read.cs b/Aaru.Images/AaruFormat/Read.cs index 8e353647e..39f794f12 100644 --- a/Aaru.Images/AaruFormat/Read.cs +++ b/Aaru.Images/AaruFormat/Read.cs @@ -2223,8 +2223,9 @@ public sealed partial class AaruFormat return ErrorNumber.NoError; } - else if(_sectorPrefixDdt != null && - _sectorSuffixDdt != null) + + if(_sectorPrefixDdt != null && + _sectorSuffixDdt != null) { buffer = new byte[2352 * length]; @@ -2240,8 +2241,8 @@ public sealed partial class AaruFormat return ErrorNumber.NoError; } - else - return ReadSectors(sectorAddress, length, out buffer); + + return ReadSectors(sectorAddress, length, out buffer); // Join prefix (sync, header) with user data case TrackType.CdMode2Formless: @@ -2265,8 +2266,9 @@ public sealed partial class AaruFormat return ErrorNumber.NoError; } - else if(_sectorPrefixDdt != null && - _sectorSuffixDdt != null) + + if(_sectorPrefixDdt != null && + _sectorSuffixDdt != null) { buffer = new byte[2352 * length]; diff --git a/Aaru.Images/GDI/Read.cs b/Aaru.Images/GDI/Read.cs index 46e71b428..7277a7aa0 100644 --- a/Aaru.Images/GDI/Read.cs +++ b/Aaru.Images/GDI/Read.cs @@ -90,72 +90,70 @@ public sealed partial class Gdi return ErrorNumber.InvalidArgument; } - else + + Match trackMatch = regexTrack.Match(line ?? ""); + + if(!trackMatch.Success) { - Match trackMatch = regexTrack.Match(line ?? ""); + AaruConsole.ErrorWriteLine($"Unknown line \"{line}\" at line {lineNumber}"); - if(!trackMatch.Success) - { - AaruConsole.ErrorWriteLine($"Unknown line \"{line}\" at line {lineNumber}"); - - return ErrorNumber.InvalidArgument; - } - - AaruConsole.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, - lineNumber); - - var filtersList = new FiltersList(); - - var currentTrack = new GdiTrack - { - Bps = ushort.Parse(trackMatch.Groups["type"].Value), - Flags = byte.Parse(trackMatch.Groups["flags"].Value), - Offset = long.Parse(trackMatch.Groups["offset"].Value), - Sequence = uint.Parse(trackMatch.Groups["track"].Value), - StartSector = ulong.Parse(trackMatch.Groups["start"].Value), - TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.ParentFolder, - trackMatch.Groups["filename"].Value. - Replace("\\\"", "\"").Trim('"'))) - }; - - currentTrack.TrackFile = currentTrack.TrackFilter.Filename; - - if(currentTrack.StartSector - currentStart > 0) - if(currentTrack.StartSector == 45000) - { - highDensity = true; - _offsetMap.Add(0, currentStart); - _densitySeparationSectors = currentTrack.StartSector - currentStart; - currentStart = currentTrack.StartSector; - } - else - { - currentTrack.Pregap = currentTrack.StartSector - currentStart; - currentTrack.StartSector -= currentTrack.StartSector - currentStart; - } - - if((currentTrack.TrackFilter.DataForkLength - currentTrack.Offset) % currentTrack.Bps != 0) - { - AaruConsole.ErrorWriteLine("Track size not a multiple of sector size"); - - return ErrorNumber.InvalidArgument; - } - - currentTrack.Sectors = (ulong)((currentTrack.TrackFilter.DataForkLength - currentTrack.Offset) / - currentTrack.Bps); - - currentTrack.Sectors += currentTrack.Pregap; - currentStart += currentTrack.Sectors; - currentTrack.HighDensity = highDensity; - - currentTrack.TrackType = (currentTrack.Flags & 0x4) == 0x4 ? TrackType.CdMode1 : TrackType.Audio; - - _discImage.Tracks.Add(currentTrack); + return ErrorNumber.InvalidArgument; } + + AaruConsole.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, + lineNumber); + + var filtersList = new FiltersList(); + + var currentTrack = new GdiTrack + { + Bps = ushort.Parse(trackMatch.Groups["type"].Value), + Flags = byte.Parse(trackMatch.Groups["flags"].Value), + Offset = long.Parse(trackMatch.Groups["offset"].Value), + Sequence = uint.Parse(trackMatch.Groups["track"].Value), + StartSector = ulong.Parse(trackMatch.Groups["start"].Value), + TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.ParentFolder, + trackMatch.Groups["filename"].Value. + Replace("\\\"", "\"").Trim('"'))) + }; + + currentTrack.TrackFile = currentTrack.TrackFilter.Filename; + + if(currentTrack.StartSector - currentStart > 0) + if(currentTrack.StartSector == 45000) + { + highDensity = true; + _offsetMap.Add(0, currentStart); + _densitySeparationSectors = currentTrack.StartSector - currentStart; + currentStart = currentTrack.StartSector; + } + else + { + currentTrack.Pregap = currentTrack.StartSector - currentStart; + currentTrack.StartSector -= currentTrack.StartSector - currentStart; + } + + if((currentTrack.TrackFilter.DataForkLength - currentTrack.Offset) % currentTrack.Bps != 0) + { + AaruConsole.ErrorWriteLine("Track size not a multiple of sector size"); + + return ErrorNumber.InvalidArgument; + } + + currentTrack.Sectors = (ulong)((currentTrack.TrackFilter.DataForkLength - currentTrack.Offset) / + currentTrack.Bps); + + currentTrack.Sectors += currentTrack.Pregap; + currentStart += currentTrack.Sectors; + currentTrack.HighDensity = highDensity; + + currentTrack.TrackType = (currentTrack.Flags & 0x4) == 0x4 ? TrackType.CdMode1 : TrackType.Audio; + + _discImage.Tracks.Add(currentTrack); } var sessions = new Session[2];