From 30bf2c67c620b8074006a22374f454b1b713a553 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 9 Jun 2026 19:18:17 +0000
Subject: [PATCH 1/3] Plan: bump dependency versions to latest
---
nuget.config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nuget.config b/nuget.config
index ba47b6aa..765346e5 100644
--- a/nuget.config
+++ b/nuget.config
@@ -2,6 +2,6 @@
-
+
From 1abec32756aadf12cd72954d997c6c7d0c4290f3 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 9 Jun 2026 19:26:34 +0000
Subject: [PATCH 2/3] Bump dependencies to latest; adapt to SharpCompress 1.0.0
API; restore nuget.config
---
.../RecursiveExtractor.Cli.Tests.csproj | 6 ++--
.../RecursiveExtractor.Cli.csproj | 2 +-
.../RecursiveExtractor.Tests.csproj | 10 +++---
RecursiveExtractor/Extractors/AceExtractor.cs | 4 +--
RecursiveExtractor/Extractors/ArcExtractor.cs | 4 +--
RecursiveExtractor/Extractors/ArjExtractor.cs | 4 +--
.../Extractors/BZip2Extractor.cs | 4 +--
RecursiveExtractor/Extractors/RarExtractor.cs | 4 +--
.../Extractors/SevenZipExtractor.cs | 4 +--
RecursiveExtractor/Extractors/TarExtractor.cs | 4 +--
RecursiveExtractor/Extractors/ZipExtractor.cs | 14 ++++----
RecursiveExtractor/RecursiveExtractor.csproj | 36 +++++++++----------
nuget.config | 2 +-
13 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/RecursiveExtractor.Cli.Tests/RecursiveExtractor.Cli.Tests.csproj b/RecursiveExtractor.Cli.Tests/RecursiveExtractor.Cli.Tests.csproj
index 41d07b76..89ddffce 100644
--- a/RecursiveExtractor.Cli.Tests/RecursiveExtractor.Cli.Tests.csproj
+++ b/RecursiveExtractor.Cli.Tests/RecursiveExtractor.Cli.Tests.csproj
@@ -10,9 +10,9 @@
-
-
-
+
+
+
diff --git a/RecursiveExtractor.Cli/RecursiveExtractor.Cli.csproj b/RecursiveExtractor.Cli/RecursiveExtractor.Cli.csproj
index df2aa1a5..1a24e848 100644
--- a/RecursiveExtractor.Cli/RecursiveExtractor.Cli.csproj
+++ b/RecursiveExtractor.Cli/RecursiveExtractor.Cli.csproj
@@ -29,7 +29,7 @@
-
+
diff --git a/RecursiveExtractor.Tests/RecursiveExtractor.Tests.csproj b/RecursiveExtractor.Tests/RecursiveExtractor.Tests.csproj
index 248021b2..75fdbb97 100644
--- a/RecursiveExtractor.Tests/RecursiveExtractor.Tests.csproj
+++ b/RecursiveExtractor.Tests/RecursiveExtractor.Tests.csproj
@@ -10,12 +10,12 @@
-
+
-
-
-
-
+
+
+
+
diff --git a/RecursiveExtractor/Extractors/AceExtractor.cs b/RecursiveExtractor/Extractors/AceExtractor.cs
index 54c0b2ff..f28076d7 100644
--- a/RecursiveExtractor/Extractors/AceExtractor.cs
+++ b/RecursiveExtractor/Extractors/AceExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ArcExtractor.cs b/RecursiveExtractor/Extractors/ArcExtractor.cs
index 8247b15e..281cf185 100644
--- a/RecursiveExtractor/Extractors/ArcExtractor.cs
+++ b/RecursiveExtractor/Extractors/ArcExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -107,7 +107,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ArjExtractor.cs b/RecursiveExtractor/Extractors/ArjExtractor.cs
index bb836879..c3c4cb33 100644
--- a/RecursiveExtractor/Extractors/ArjExtractor.cs
+++ b/RecursiveExtractor/Extractors/ArjExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
+ arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/BZip2Extractor.cs b/RecursiveExtractor/Extractors/BZip2Extractor.cs
index 0276b403..a35e9ae3 100644
--- a/RecursiveExtractor/Extractors/BZip2Extractor.cs
+++ b/RecursiveExtractor/Extractors/BZip2Extractor.cs
@@ -40,7 +40,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
var failed = false;
try
{
- using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
+ using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
await bzipStream.CopyToAsync(fs);
}
catch (Exception e)
@@ -99,7 +99,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
- using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
+ using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
bzipStream.CopyTo(fs);
}
catch (Exception e)
diff --git a/RecursiveExtractor/Extractors/RarExtractor.cs b/RecursiveExtractor/Extractors/RarExtractor.cs
index 85d7ff80..84373955 100644
--- a/RecursiveExtractor/Extractors/RarExtractor.cs
+++ b/RecursiveExtractor/Extractors/RarExtractor.cs
@@ -31,7 +31,7 @@ public RarExtractor(Extractor context)
try
{
- rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
+ rarArchive = RarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
// Test for invalid archives. This will throw invalidformatexception
var t = rarArchive.IsSolid;
if (rarArchive.Entries.Any(x => x.IsEncrypted))
@@ -66,7 +66,7 @@ public RarExtractor(Extractor context)
try
{
fileEntry.Content.Position = 0;
- rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true, LeaveStreamOpen = true });
+ rarArchive = RarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true, LeaveStreamOpen = true });
var byt = new byte[1];
var encryptedEntry = rarArchive.Entries.FirstOrDefault(x => x is { IsEncrypted: true, Size: > 0 });
// Justification for !: Because we use FirstOrDefault encryptedEntry may be null, but we have a catch below for it
diff --git a/RecursiveExtractor/Extractors/SevenZipExtractor.cs b/RecursiveExtractor/Extractors/SevenZipExtractor.cs
index 869da19d..fc767135 100644
--- a/RecursiveExtractor/Extractors/SevenZipExtractor.cs
+++ b/RecursiveExtractor/Extractors/SevenZipExtractor.cs
@@ -83,7 +83,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
var needsPassword = false;
try
{
- sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
+ sevenZipArchive = SevenZipArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
if (sevenZipArchive.Entries.Where(x => !x.IsDirectory).Any(x => x.IsEncrypted))
{
needsPassword = true;
@@ -114,7 +114,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LeaveStreamOpen = true });
+ sevenZipArchive = SevenZipArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LeaveStreamOpen = true });
// When filenames are encrypted we can't access the size of individual files
// But if we can accesss the total uncompressed size we have the right password
try
diff --git a/RecursiveExtractor/Extractors/TarExtractor.cs b/RecursiveExtractor/Extractors/TarExtractor.cs
index 662f8597..00419eae 100644
--- a/RecursiveExtractor/Extractors/TarExtractor.cs
+++ b/RecursiveExtractor/Extractors/TarExtractor.cs
@@ -29,7 +29,7 @@ public TarExtractor(Extractor context)
///
public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
{
- using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
+ using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -103,7 +103,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
///
public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
{
- using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
+ using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ZipExtractor.cs b/RecursiveExtractor/Extractors/ZipExtractor.cs
index 5140a60d..49da757c 100644
--- a/RecursiveExtractor/Extractors/ZipExtractor.cs
+++ b/RecursiveExtractor/Extractors/ZipExtractor.cs
@@ -37,7 +37,7 @@ public ZipExtractor(Extractor context)
{
// Create a new archive instance with the password to test it
fileEntry.Content.Position = 0;
- using var testArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
+ using var testArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
{
Password = password,
LeaveStreamOpen = true
@@ -73,7 +73,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
+ zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
// Recreate archive with password
zipArchive.Dispose();
fileEntry.Content.Position = 0;
- zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
+ zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
{
Password = foundPassword,
LeaveStreamOpen = true
@@ -199,7 +199,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
+ zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -230,7 +230,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
// Recreate archive with password
zipArchive.Dispose();
fileEntry.Content.Position = 0;
- zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
+ zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
{
Password = foundPassword,
LeaveStreamOpen = true
@@ -329,7 +329,7 @@ private async IAsyncEnumerable YieldNonIndexedEntriesAsync(
IReader? forwardReader = null;
try
{
- forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
+ forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
}
catch (Exception ex)
{
@@ -413,7 +413,7 @@ private IEnumerable YieldNonIndexedEntries(
IReader? forwardReader = null;
try
{
- forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
+ forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
}
catch (Exception ex)
{
diff --git a/RecursiveExtractor/RecursiveExtractor.csproj b/RecursiveExtractor/RecursiveExtractor.csproj
index 23a06036..b8416c3c 100644
--- a/RecursiveExtractor/RecursiveExtractor.csproj
+++ b/RecursiveExtractor/RecursiveExtractor.csproj
@@ -31,25 +31,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/nuget.config b/nuget.config
index 765346e5..ba47b6aa 100644
--- a/nuget.config
+++ b/nuget.config
@@ -2,6 +2,6 @@
-
+
From 26393c5545b8b39209fd29ebac0d4983c44ee385 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 9 Jun 2026 20:27:59 +0000
Subject: [PATCH 3/3] Use SharpCompress 0.49.1 (1.0.0 is unlisted); revert to
0.49.x API; fix PAX-header test counts
---
.../CliTests/CliTests.cs | 8 ++++----
.../ExtractorTests/DisposeBehaviorTests.cs | 16 ++++++++--------
.../ExtractorTests/ExpectedNumFilesTests.cs | 10 +++++-----
.../ExtractorTests/FilterTests.cs | 8 ++++----
RecursiveExtractor/Extractors/AceExtractor.cs | 4 ++--
RecursiveExtractor/Extractors/ArcExtractor.cs | 4 ++--
RecursiveExtractor/Extractors/ArjExtractor.cs | 4 ++--
RecursiveExtractor/Extractors/BZip2Extractor.cs | 4 ++--
RecursiveExtractor/Extractors/RarExtractor.cs | 4 ++--
.../Extractors/SevenZipExtractor.cs | 4 ++--
RecursiveExtractor/Extractors/TarExtractor.cs | 4 ++--
RecursiveExtractor/Extractors/ZipExtractor.cs | 14 +++++++-------
RecursiveExtractor/RecursiveExtractor.csproj | 2 +-
13 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/RecursiveExtractor.Cli.Tests/CliTests/CliTests.cs b/RecursiveExtractor.Cli.Tests/CliTests/CliTests.cs
index 7c9eb773..71a35820 100644
--- a/RecursiveExtractor.Cli.Tests/CliTests/CliTests.cs
+++ b/RecursiveExtractor.Cli.Tests/CliTests/CliTests.cs
@@ -27,11 +27,11 @@ public static TheoryData CliArchiveData
{
{ "TestData.zip", 5 },
{ "TestData.7z", 3 },
- { "TestData.tar", 6 },
+ { "TestData.tar", 5 },
{ "TestData.rar", 3 },
{ "TestData.rar4", 3 },
- { "TestData.tar.bz2", 6 },
- { "TestData.tar.gz", 6 },
+ { "TestData.tar.bz2", 5 },
+ { "TestData.tar.gz", 5 },
{ "TestData.tar.xz", 3 },
{ "sysvbanner_1.0-17fakesync1_amd64.deb", 8 },
{ "TestData.a", 3 },
@@ -39,7 +39,7 @@ public static TheoryData CliArchiveData
{ "TestData.iso", 3 },
{ "TestData.vhdx", 3 },
{ "EmptyFile.txt", 1 },
- { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 54 : 52 },
+ { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 51 : 49 },
};
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
diff --git a/RecursiveExtractor.Tests/ExtractorTests/DisposeBehaviorTests.cs b/RecursiveExtractor.Tests/ExtractorTests/DisposeBehaviorTests.cs
index da7883bc..af9d136b 100644
--- a/RecursiveExtractor.Tests/ExtractorTests/DisposeBehaviorTests.cs
+++ b/RecursiveExtractor.Tests/ExtractorTests/DisposeBehaviorTests.cs
@@ -23,11 +23,11 @@ public static TheoryData DisposeData
var data = new TheoryData
{
{ "TestData.7z", 3, false },
- { "TestData.tar", 6, false },
+ { "TestData.tar", 5, false },
{ "TestData.rar", 3, false },
{ "TestData.rar4", 3, false },
- { "TestData.tar.bz2", 6, false },
- { "TestData.tar.gz", 6, false },
+ { "TestData.tar.bz2", 5, false },
+ { "TestData.tar.gz", 5, false },
{ "TestData.tar.xz", 3, false },
{ "sysvbanner_1.0-17fakesync1_amd64.deb", 8, false },
{ "TestData.a", 3, false },
@@ -37,11 +37,11 @@ public static TheoryData DisposeData
{ "EmptyFile.txt", 1, false },
{ "TestData.zip", 5, true },
{ "TestData.7z", 3, true },
- { "TestData.tar", 6, true },
+ { "TestData.tar", 5, true },
{ "TestData.rar", 3, true },
{ "TestData.rar4", 3, true },
- { "TestData.tar.bz2", 6, true },
- { "TestData.tar.gz", 6, true },
+ { "TestData.tar.bz2", 5, true },
+ { "TestData.tar.gz", 5, true },
{ "TestData.tar.xz", 3, true },
{ "sysvbanner_1.0-17fakesync1_amd64.deb", 8, true },
{ "TestData.a", 3, true },
@@ -49,8 +49,8 @@ public static TheoryData DisposeData
{ "TestData.iso", 3, true },
{ "TestData.vhdx", 3, true },
{ "EmptyFile.txt", 1, true },
- { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 54 : 52, true },
- { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 54 : 52, false },
+ { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 51 : 49, true },
+ { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 51 : 49, false },
};
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
diff --git a/RecursiveExtractor.Tests/ExtractorTests/ExpectedNumFilesTests.cs b/RecursiveExtractor.Tests/ExtractorTests/ExpectedNumFilesTests.cs
index 92dd3c24..3f8eeaad 100644
--- a/RecursiveExtractor.Tests/ExtractorTests/ExpectedNumFilesTests.cs
+++ b/RecursiveExtractor.Tests/ExtractorTests/ExpectedNumFilesTests.cs
@@ -28,11 +28,11 @@ public static TheoryData ArchiveData
{ "100trees.7z", 101 },
{ "TestData.zip", 5 },
{ "TestData.7z",3 },
- { "TestData.tar", 6 },
+ { "TestData.tar", 5 },
{ "TestData.rar",3 },
{ "TestData.rar4",3 },
- { "TestData.tar.bz2", 6 },
- { "TestData.tar.gz", 6 },
+ { "TestData.tar.bz2", 5 },
+ { "TestData.tar.gz", 5 },
{ "TestData.tar.xz",3 },
{ "sysvbanner_1.0-17fakesync1_amd64.deb", 8 },
{ "TestData.a",3 },
@@ -40,7 +40,7 @@ public static TheoryData ArchiveData
{ "TestData.iso",3 },
{ "TestData.vhdx",3 },
{ "EmptyFile.txt", 1 },
- { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 54 : 52 },
+ { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 51 : 49 },
{ "UdfTest.iso", 3 },
{ "UdfTestWithMultiSystem.iso", 3 },
{ "TestData.arj", 1 },
@@ -69,7 +69,7 @@ public static TheoryData NoRecursionData
{ "100trees.7z", 101 },
{ "TestData.zip", 5 },
{ "TestData.7z", 3 },
- { "TestData.tar", 6 },
+ { "TestData.tar", 5 },
{ "TestData.rar", 3 },
{ "TestData.rar4", 3 },
{ "TestData.tar.bz2", 1 },
diff --git a/RecursiveExtractor.Tests/ExtractorTests/FilterTests.cs b/RecursiveExtractor.Tests/ExtractorTests/FilterTests.cs
index 3ed7a32c..50ee5c3e 100644
--- a/RecursiveExtractor.Tests/ExtractorTests/FilterTests.cs
+++ b/RecursiveExtractor.Tests/ExtractorTests/FilterTests.cs
@@ -56,11 +56,11 @@ public static TheoryData DenyFilterData
{
{ "TestData.zip", 4 },
{ "TestData.7z", 2 },
- { "TestData.tar", 5 },
+ { "TestData.tar", 4 },
{ "TestData.rar", 2 },
{ "TestData.rar4", 2 },
- { "TestData.tar.bz2", 5 },
- { "TestData.tar.gz", 5 },
+ { "TestData.tar.bz2", 4 },
+ { "TestData.tar.gz", 4 },
{ "TestData.tar.xz", 2 },
{ "sysvbanner_1.0-17fakesync1_amd64.deb", 8 },
{ "TestData.a", 3 },
@@ -68,7 +68,7 @@ public static TheoryData DenyFilterData
{ "TestData.iso", 2 },
{ "TestData.vhdx", 2 },
{ "EmptyFile.txt", 1 },
- { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 45 : 44 },
+ { "TestDataArchivesNested.zip", RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 42 : 41 },
};
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
diff --git a/RecursiveExtractor/Extractors/AceExtractor.cs b/RecursiveExtractor/Extractors/AceExtractor.cs
index f28076d7..54c0b2ff 100644
--- a/RecursiveExtractor/Extractors/AceExtractor.cs
+++ b/RecursiveExtractor/Extractors/AceExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
+ aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
+ aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ArcExtractor.cs b/RecursiveExtractor/Extractors/ArcExtractor.cs
index 281cf185..8247b15e 100644
--- a/RecursiveExtractor/Extractors/ArcExtractor.cs
+++ b/RecursiveExtractor/Extractors/ArcExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
+ arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -107,7 +107,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
+ arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ArjExtractor.cs b/RecursiveExtractor/Extractors/ArjExtractor.cs
index c3c4cb33..bb836879 100644
--- a/RecursiveExtractor/Extractors/ArjExtractor.cs
+++ b/RecursiveExtractor/Extractors/ArjExtractor.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
+ arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
+ arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/BZip2Extractor.cs b/RecursiveExtractor/Extractors/BZip2Extractor.cs
index a35e9ae3..0276b403 100644
--- a/RecursiveExtractor/Extractors/BZip2Extractor.cs
+++ b/RecursiveExtractor/Extractors/BZip2Extractor.cs
@@ -40,7 +40,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
var failed = false;
try
{
- using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
+ using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
await bzipStream.CopyToAsync(fs);
}
catch (Exception e)
@@ -99,7 +99,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
- using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
+ using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
bzipStream.CopyTo(fs);
}
catch (Exception e)
diff --git a/RecursiveExtractor/Extractors/RarExtractor.cs b/RecursiveExtractor/Extractors/RarExtractor.cs
index 84373955..85d7ff80 100644
--- a/RecursiveExtractor/Extractors/RarExtractor.cs
+++ b/RecursiveExtractor/Extractors/RarExtractor.cs
@@ -31,7 +31,7 @@ public RarExtractor(Extractor context)
try
{
- rarArchive = RarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
+ rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
// Test for invalid archives. This will throw invalidformatexception
var t = rarArchive.IsSolid;
if (rarArchive.Entries.Any(x => x.IsEncrypted))
@@ -66,7 +66,7 @@ public RarExtractor(Extractor context)
try
{
fileEntry.Content.Position = 0;
- rarArchive = RarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true, LeaveStreamOpen = true });
+ rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true, LeaveStreamOpen = true });
var byt = new byte[1];
var encryptedEntry = rarArchive.Entries.FirstOrDefault(x => x is { IsEncrypted: true, Size: > 0 });
// Justification for !: Because we use FirstOrDefault encryptedEntry may be null, but we have a catch below for it
diff --git a/RecursiveExtractor/Extractors/SevenZipExtractor.cs b/RecursiveExtractor/Extractors/SevenZipExtractor.cs
index fc767135..869da19d 100644
--- a/RecursiveExtractor/Extractors/SevenZipExtractor.cs
+++ b/RecursiveExtractor/Extractors/SevenZipExtractor.cs
@@ -83,7 +83,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
var needsPassword = false;
try
{
- sevenZipArchive = SevenZipArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
+ sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
if (sevenZipArchive.Entries.Where(x => !x.IsDirectory).Any(x => x.IsEncrypted))
{
needsPassword = true;
@@ -114,7 +114,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- sevenZipArchive = SevenZipArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LeaveStreamOpen = true });
+ sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LeaveStreamOpen = true });
// When filenames are encrypted we can't access the size of individual files
// But if we can accesss the total uncompressed size we have the right password
try
diff --git a/RecursiveExtractor/Extractors/TarExtractor.cs b/RecursiveExtractor/Extractors/TarExtractor.cs
index 00419eae..662f8597 100644
--- a/RecursiveExtractor/Extractors/TarExtractor.cs
+++ b/RecursiveExtractor/Extractors/TarExtractor.cs
@@ -29,7 +29,7 @@ public TarExtractor(Extractor context)
///
public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
{
- using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
+ using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -103,7 +103,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
///
public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
{
- using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
+ using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
{
LeaveStreamOpen = true
});
diff --git a/RecursiveExtractor/Extractors/ZipExtractor.cs b/RecursiveExtractor/Extractors/ZipExtractor.cs
index 49da757c..5140a60d 100644
--- a/RecursiveExtractor/Extractors/ZipExtractor.cs
+++ b/RecursiveExtractor/Extractors/ZipExtractor.cs
@@ -37,7 +37,7 @@ public ZipExtractor(Extractor context)
{
// Create a new archive instance with the password to test it
fileEntry.Content.Position = 0;
- using var testArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
+ using var testArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
{
Password = password,
LeaveStreamOpen = true
@@ -73,7 +73,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
try
{
fileEntry.Content.Position = 0;
- zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
+ zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -104,7 +104,7 @@ public async IAsyncEnumerable ExtractAsync(FileEntry fileEntry, Extra
// Recreate archive with password
zipArchive.Dispose();
fileEntry.Content.Position = 0;
- zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
+ zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
{
Password = foundPassword,
LeaveStreamOpen = true
@@ -199,7 +199,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
try
{
fileEntry.Content.Position = 0;
- zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
+ zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
{
LeaveStreamOpen = true
});
@@ -230,7 +230,7 @@ public IEnumerable Extract(FileEntry fileEntry, ExtractorOptions opti
// Recreate archive with password
zipArchive.Dispose();
fileEntry.Content.Position = 0;
- zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
+ zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
{
Password = foundPassword,
LeaveStreamOpen = true
@@ -329,7 +329,7 @@ private async IAsyncEnumerable YieldNonIndexedEntriesAsync(
IReader? forwardReader = null;
try
{
- forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
+ forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
}
catch (Exception ex)
{
@@ -413,7 +413,7 @@ private IEnumerable YieldNonIndexedEntries(
IReader? forwardReader = null;
try
{
- forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
+ forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
}
catch (Exception ex)
{
diff --git a/RecursiveExtractor/RecursiveExtractor.csproj b/RecursiveExtractor/RecursiveExtractor.csproj
index b8416c3c..53fd4f35 100644
--- a/RecursiveExtractor/RecursiveExtractor.csproj
+++ b/RecursiveExtractor/RecursiveExtractor.csproj
@@ -48,7 +48,7 @@
-
+