[ARC] Implement support for compression methods 8 (Crunch) and 9 (squash).

This commit is contained in:
2025-09-02 10:22:17 +01:00
parent dfeda1f426
commit a5f34e557b
3 changed files with 124 additions and 1 deletions

View File

@@ -149,7 +149,7 @@ public sealed partial class Arc
if((int)_entries[entryNumber].Method >= 20) return ErrorNumber.InvalidArgument;
if(_entries[entryNumber].Method > Method.CrunchFastHash) return ErrorNumber.NotSupported;
if(_entries[entryNumber].Method > Method.Squash) return ErrorNumber.NotSupported;
Stream stream = new OffsetStream(new NonClosableStream(_stream),
_entries[entryNumber].DataOffset,
@@ -172,6 +172,12 @@ public sealed partial class Arc
if(_entries[entryNumber].Method == Method.CrunchFastHash)
stream = new CrunchStream(stream, _entries[entryNumber].Uncompressed, true, true);
if(_entries[entryNumber].Method == Method.CrunchDynamic)
stream = new LzwStream(stream, _entries[entryNumber].Uncompressed, false);
if(_entries[entryNumber].Method == Method.Squash)
stream = new LzwStream(stream, _entries[entryNumber].Uncompressed, true);
filter = new ZZZNoFilter();
ErrorNumber errno = filter.Open(stream);