From ad09603ef5dc49defac010f5e520b5ab5b614296 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Sun, 20 Oct 2024 20:49:04 +1300 Subject: [PATCH 1/3] Fix solution paths Seems VS Pro somehow added absolute paths to the projects --- OpenMcdf3.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenMcdf3.sln b/OpenMcdf3.sln index 4f19d749..fbea60de 100644 --- a/OpenMcdf3.sln +++ b/OpenMcdf3.sln @@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.11.35327.3 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenMcdf3", "D:\OpenMcdf3\OpenMcdf3\OpenMcdf3.csproj", "{B90DDE7E-803A-4890-82F0-09DAD0FF66D8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenMcdf3", "OpenMcdf3\OpenMcdf3.csproj", "{B90DDE7E-803A-4890-82F0-09DAD0FF66D8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenMcdf3.Tests", "D:\OpenMcdf3\OpenMcdf3.Tests\OpenMcdf3.Tests.csproj", "{96A9DA9C-E4C2-4531-A2E4-154F1FBF7532}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenMcdf3.Tests", "OpenMcdf3.Tests\OpenMcdf3.Tests.csproj", "{96A9DA9C-E4C2-4531-A2E4-154F1FBF7532}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{34030FA7-0A06-43D1-85DD-ADD39D502C3C}" ProjectSection(SolutionItems) = preProject From a2ba07c87b78db3568d6e850c379dd5ca59c420c Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Mon, 21 Oct 2024 10:15:23 +1300 Subject: [PATCH 2/3] Improve FatSectorEnumerator validation --- OpenMcdf3/FatSectorEnumerator.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenMcdf3/FatSectorEnumerator.cs b/OpenMcdf3/FatSectorEnumerator.cs index 21bbf81b..f9530a12 100644 --- a/OpenMcdf3/FatSectorEnumerator.cs +++ b/OpenMcdf3/FatSectorEnumerator.cs @@ -88,6 +88,9 @@ public bool MoveNext() /// public bool MoveTo(uint sectorId) { + if (sectorId > SectorType.Maximum) + throw new ArgumentOutOfRangeException(nameof(sectorId)); + if (sectorId < id) Reset(); From 7391580afa634091bec3e0facd4a7e8c508527ac Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Mon, 21 Oct 2024 10:11:24 +1300 Subject: [PATCH 3/3] Rename chain enumerators --- OpenMcdf3/DirectoryEntryEnumerator.cs | 6 +++--- .../{FatSectorChainEnumerator.cs => FatChainEnumerator.cs} | 4 ++-- OpenMcdf3/FatStream.cs | 2 +- ...atSectorChainEnumerator.cs => MiniFatChainEnumerator.cs} | 4 ++-- OpenMcdf3/MiniFatSectorEnumerator.cs | 2 +- OpenMcdf3/MiniFatStream.cs | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) rename OpenMcdf3/{FatSectorChainEnumerator.cs => FatChainEnumerator.cs} (95%) rename OpenMcdf3/{MiniFatSectorChainEnumerator.cs => MiniFatChainEnumerator.cs} (93%) diff --git a/OpenMcdf3/DirectoryEntryEnumerator.cs b/OpenMcdf3/DirectoryEntryEnumerator.cs index c84a41af..596c49ff 100644 --- a/OpenMcdf3/DirectoryEntryEnumerator.cs +++ b/OpenMcdf3/DirectoryEntryEnumerator.cs @@ -3,14 +3,14 @@ namespace OpenMcdf3; /// -/// Enumerates instances from a . +/// Enumerates instances from a . /// internal sealed class DirectoryEntryEnumerator : IEnumerator { private readonly IOContext ioContext; private readonly Version version; private readonly int entryCount; - private readonly FatSectorChainEnumerator chainEnumerator; + private readonly FatChainEnumerator chainEnumerator; private int entryIndex = -1; private DirectoryEntry? current; @@ -19,7 +19,7 @@ public DirectoryEntryEnumerator(IOContext ioContext) this.ioContext = ioContext; this.version = (Version)ioContext.Header.MajorVersion; this.entryCount = ioContext.Header.SectorSize / DirectoryEntry.Length; - this.chainEnumerator = new FatSectorChainEnumerator(ioContext, ioContext.Header.FirstDirectorySectorId); + this.chainEnumerator = new FatChainEnumerator(ioContext, ioContext.Header.FirstDirectorySectorId); } /// diff --git a/OpenMcdf3/FatSectorChainEnumerator.cs b/OpenMcdf3/FatChainEnumerator.cs similarity index 95% rename from OpenMcdf3/FatSectorChainEnumerator.cs rename to OpenMcdf3/FatChainEnumerator.cs index 09117b00..567b2cdb 100644 --- a/OpenMcdf3/FatSectorChainEnumerator.cs +++ b/OpenMcdf3/FatChainEnumerator.cs @@ -5,7 +5,7 @@ namespace OpenMcdf3; /// /// Enumerates the s in a FAT sector chain. /// -internal sealed class FatSectorChainEnumerator : IEnumerator +internal sealed class FatChainEnumerator : IEnumerator { private readonly IOContext ioContext; private readonly FatSectorEnumerator fatEnumerator; @@ -13,7 +13,7 @@ internal sealed class FatSectorChainEnumerator : IEnumerator private bool start = true; private Sector current = Sector.EndOfChain; - public FatSectorChainEnumerator(IOContext ioContext, uint startSectorId) + public FatChainEnumerator(IOContext ioContext, uint startSectorId) { this.ioContext = ioContext; this.startId = startSectorId; diff --git a/OpenMcdf3/FatStream.cs b/OpenMcdf3/FatStream.cs index 7c86cda8..547b52fd 100644 --- a/OpenMcdf3/FatStream.cs +++ b/OpenMcdf3/FatStream.cs @@ -6,7 +6,7 @@ internal class FatStream : Stream { readonly IOContext ioContext; - readonly FatSectorChainEnumerator chain; + readonly FatChainEnumerator chain; readonly long length; long position; bool disposed; diff --git a/OpenMcdf3/MiniFatSectorChainEnumerator.cs b/OpenMcdf3/MiniFatChainEnumerator.cs similarity index 93% rename from OpenMcdf3/MiniFatSectorChainEnumerator.cs rename to OpenMcdf3/MiniFatChainEnumerator.cs index dc838d7d..b090cccc 100644 --- a/OpenMcdf3/MiniFatSectorChainEnumerator.cs +++ b/OpenMcdf3/MiniFatChainEnumerator.cs @@ -5,14 +5,14 @@ namespace OpenMcdf3; /// /// Enumerates the s in a Mini FAT sector chain. /// -internal sealed class MiniFatSectorChainEnumerator : IEnumerator +internal sealed class MiniFatChainEnumerator : IEnumerator { private readonly MiniFatSectorEnumerator miniFatEnumerator; private readonly uint startId; private bool start = true; private MiniSector current = MiniSector.EndOfChain; - public MiniFatSectorChainEnumerator(IOContext ioContext, uint startSectorId) + public MiniFatChainEnumerator(IOContext ioContext, uint startSectorId) { this.startId = startSectorId; miniFatEnumerator = new(ioContext); diff --git a/OpenMcdf3/MiniFatSectorEnumerator.cs b/OpenMcdf3/MiniFatSectorEnumerator.cs index 2e0a1fd8..ff41b421 100644 --- a/OpenMcdf3/MiniFatSectorEnumerator.cs +++ b/OpenMcdf3/MiniFatSectorEnumerator.cs @@ -8,7 +8,7 @@ namespace OpenMcdf3; internal sealed class MiniFatSectorEnumerator : IEnumerator { private readonly IOContext ioContext; - private readonly FatSectorChainEnumerator fatChain; + private readonly FatChainEnumerator fatChain; bool start = true; MiniSector current = MiniSector.EndOfChain; diff --git a/OpenMcdf3/MiniFatStream.cs b/OpenMcdf3/MiniFatStream.cs index 5044e953..915d5e88 100644 --- a/OpenMcdf3/MiniFatStream.cs +++ b/OpenMcdf3/MiniFatStream.cs @@ -6,7 +6,7 @@ internal sealed class MiniFatStream : Stream { readonly IOContext ioContext; - readonly MiniFatSectorChainEnumerator chain; + readonly MiniFatChainEnumerator chain; readonly FatStream fatStream; readonly long length; long position;