Skip to content

Commit 8a14f28

Browse files
Copilotgfs
andauthored
Upgrade SharpCompress to 0.47.4 and migrate extractor APIs to new OpenReader/OpenArchive surface (#205)
* Initial plan * Upgrade SharpCompress to 0.47.4 and migrate breaking API calls Agent-Logs-Url: https://github.com/microsoft/RecursiveExtractor/sessions/4a1fc24b-3c85-4d07-ae1d-e352607abda7 Co-authored-by: gfs <98900+gfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gfs <98900+gfs@users.noreply.github.com>
1 parent 196a557 commit 8a14f28

9 files changed

Lines changed: 32 additions & 32 deletions

File tree

RecursiveExtractor/Extractors/AceExtractor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ public AceExtractor(Extractor context)
2929
///<inheritdoc />
3030
public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
3131
{
32-
AceReader? aceReader = null;
32+
IReader? aceReader = null;
3333
try
3434
{
3535
fileEntry.Content.Position = 0;
36-
aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
36+
aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
3737
{
3838
LeaveStreamOpen = true
3939
});
@@ -100,11 +100,11 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
100100
///<inheritdoc />
101101
public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
102102
{
103-
AceReader? aceReader = null;
103+
IReader? aceReader = null;
104104
try
105105
{
106106
fileEntry.Content.Position = 0;
107-
aceReader = AceReader.Open(fileEntry.Content, new ReaderOptions()
107+
aceReader = AceReader.OpenReader(fileEntry.Content, new ReaderOptions()
108108
{
109109
LeaveStreamOpen = true
110110
});

RecursiveExtractor/Extractors/ArcExtractor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ public ArcExtractor(Extractor context)
2929
///<inheritdoc />
3030
public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
3131
{
32-
ArcReader? arcReader = null;
32+
IReader? arcReader = null;
3333
try
3434
{
3535
fileEntry.Content.Position = 0;
36-
arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
36+
arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
3737
{
3838
LeaveStreamOpen = true
3939
});
@@ -103,11 +103,11 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
103103
///<inheritdoc />
104104
public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
105105
{
106-
ArcReader? arcReader = null;
106+
IReader? arcReader = null;
107107
try
108108
{
109109
fileEntry.Content.Position = 0;
110-
arcReader = ArcReader.Open(fileEntry.Content, new ReaderOptions()
110+
arcReader = ArcReader.OpenReader(fileEntry.Content, new ReaderOptions()
111111
{
112112
LeaveStreamOpen = true
113113
});

RecursiveExtractor/Extractors/ArjExtractor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ public ArjExtractor(Extractor context)
2929
///<inheritdoc />
3030
public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
3131
{
32-
ArjReader? arjReader = null;
32+
IReader? arjReader = null;
3333
try
3434
{
3535
fileEntry.Content.Position = 0;
36-
arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
36+
arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
3737
{
3838
LeaveStreamOpen = true
3939
});
@@ -100,11 +100,11 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
100100
///<inheritdoc />
101101
public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
102102
{
103-
ArjReader? arjReader = null;
103+
IReader? arjReader = null;
104104
try
105105
{
106106
fileEntry.Content.Position = 0;
107-
arjReader = ArjReader.Open(fileEntry.Content, new ReaderOptions()
107+
arjReader = ArjReader.OpenReader(fileEntry.Content, new ReaderOptions()
108108
{
109109
LeaveStreamOpen = true
110110
});

RecursiveExtractor/Extractors/BZip2Extractor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
4040
var failed = false;
4141
try
4242
{
43-
using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
43+
using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
4444
await bzipStream.CopyToAsync(fs);
4545
}
4646
catch (Exception e)
@@ -99,7 +99,7 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
9999

100100
try
101101
{
102-
using var bzipStream = new BZip2Stream(fileEntry.Content, CompressionMode.Decompress, false);
102+
using var bzipStream = BZip2Stream.Create(fileEntry.Content, CompressionMode.Decompress, false, leaveOpen: false);
103103
bzipStream.CopyTo(fs);
104104
}
105105
catch (Exception e)
@@ -139,4 +139,4 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
139139
}
140140
}
141141
}
142-
}
142+
}

RecursiveExtractor/Extractors/RarExtractor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public RarExtractor(Extractor context)
3131

3232
try
3333
{
34-
rarArchive = RarArchive.Open(fileEntry.Content);
34+
rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
3535
// Test for invalid archives. This will throw invalidformatexception
3636
var t = rarArchive.IsSolid;
3737
if (rarArchive.Entries.Any(x => x.IsEncrypted))
@@ -66,7 +66,7 @@ public RarExtractor(Extractor context)
6666
try
6767
{
6868
fileEntry.Content.Position = 0;
69-
rarArchive = RarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true });
69+
rarArchive = (RarArchive)RarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LookForHeader = true, LeaveStreamOpen = true });
7070
var byt = new byte[1];
7171
var encryptedEntry = rarArchive.Entries.FirstOrDefault(x => x is { IsEncrypted: true, Size: > 0 });
7272
// Justification for !: Because we use FirstOrDefault encryptedEntry may be null, but we have a catch below for it
@@ -197,4 +197,4 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
197197
}
198198
}
199199
}
200-
}
200+
}

RecursiveExtractor/Extractors/SevenZipExtractor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
8383
var needsPassword = false;
8484
try
8585
{
86-
sevenZipArchive = SevenZipArchive.Open(fileEntry.Content);
86+
sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { LeaveStreamOpen = true });
8787
if (sevenZipArchive.Entries.Where(x => !x.IsDirectory).Any(x => x.IsEncrypted))
8888
{
8989
needsPassword = true;
@@ -114,7 +114,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
114114
try
115115
{
116116
fileEntry.Content.Position = 0;
117-
sevenZipArchive = SevenZipArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password });
117+
sevenZipArchive = (SevenZipArchive)SevenZipArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions() { Password = password, LeaveStreamOpen = true });
118118
// When filenames are encrypted we can't access the size of individual files
119119
// But if we can accesss the total uncompressed size we have the right password
120120
try
@@ -197,4 +197,4 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
197197
}
198198
}
199199
}
200-
}
200+
}

RecursiveExtractor/Extractors/TarExtractor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public TarExtractor(Extractor context)
2929
///<inheritdoc />
3030
public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
3131
{
32-
using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
32+
using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
3333
{
3434
LeaveStreamOpen = true
3535
});
@@ -103,7 +103,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
103103
///<inheritdoc />
104104
public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions options, ResourceGovernor governor, bool topLevel = true)
105105
{
106-
using TarArchive archive = TarArchive.Open(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
106+
using TarArchive archive = (TarArchive)TarArchive.OpenArchive(fileEntry.Content, new SharpCompress.Readers.ReaderOptions()
107107
{
108108
LeaveStreamOpen = true
109109
});
@@ -224,4 +224,4 @@ internal TarEntryCollectionEnumerator(ICollection<TarArchiveEntry> entries, stri
224224
}
225225
}
226226
}
227-
}
227+
}

RecursiveExtractor/Extractors/ZipExtractor.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ZipExtractor(Extractor context)
3737
{
3838
// Create a new archive instance with the password to test it
3939
fileEntry.Content.Position = 0;
40-
using var testArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
40+
using var testArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
4141
{
4242
Password = password,
4343
LeaveStreamOpen = true
@@ -73,7 +73,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
7373
try
7474
{
7575
fileEntry.Content.Position = 0;
76-
zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
76+
zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
7777
{
7878
LeaveStreamOpen = true
7979
});
@@ -104,7 +104,7 @@ public async IAsyncEnumerable<FileEntry> ExtractAsync(FileEntry fileEntry, Extra
104104
// Recreate archive with password
105105
zipArchive.Dispose();
106106
fileEntry.Content.Position = 0;
107-
zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
107+
zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
108108
{
109109
Password = foundPassword,
110110
LeaveStreamOpen = true
@@ -199,7 +199,7 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
199199
try
200200
{
201201
fileEntry.Content.Position = 0;
202-
zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
202+
zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
203203
{
204204
LeaveStreamOpen = true
205205
});
@@ -230,7 +230,7 @@ public IEnumerable<FileEntry> Extract(FileEntry fileEntry, ExtractorOptions opti
230230
// Recreate archive with password
231231
zipArchive.Dispose();
232232
fileEntry.Content.Position = 0;
233-
zipArchive = ZipArchive.Open(fileEntry.Content, new ReaderOptions()
233+
zipArchive = (ZipArchive)ZipArchive.OpenArchive(fileEntry.Content, new ReaderOptions()
234234
{
235235
Password = foundPassword,
236236
LeaveStreamOpen = true
@@ -329,7 +329,7 @@ private async IAsyncEnumerable<FileEntry> YieldNonIndexedEntriesAsync(
329329
IReader? forwardReader = null;
330330
try
331331
{
332-
forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
332+
forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
333333
}
334334
catch (Exception ex)
335335
{
@@ -413,7 +413,7 @@ private IEnumerable<FileEntry> YieldNonIndexedEntries(
413413
IReader? forwardReader = null;
414414
try
415415
{
416-
forwardReader = ReaderFactory.Open(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
416+
forwardReader = ReaderFactory.OpenReader(parentEntry.Content, new ReaderOptions { LeaveStreamOpen = true });
417417
}
418418
catch (Exception ex)
419419
{

RecursiveExtractor/RecursiveExtractor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.6" />
4949
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
5050
<PackageReference Include="NLog" Version="6.0.3" />
51-
<PackageReference Include="SharpCompress" Version="0.44.5" />
51+
<PackageReference Include="SharpCompress" Version="0.47.4" />
5252
<PackageReference Include="System.Linq.AsyncEnumerable" Version="10.0.6" />
5353
</ItemGroup>
5454

0 commit comments

Comments
 (0)