[ARC] Implement support for compression methods 5, 6 and 7 (crunch).

This commit is contained in:
2025-09-02 03:51:20 +01:00
parent f8e4ceab71
commit dfeda1f426
5 changed files with 135 additions and 3 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.Squeeze) return ErrorNumber.NotSupported;
if(_entries[entryNumber].Method > Method.CrunchFastHash) return ErrorNumber.NotSupported;
Stream stream = new OffsetStream(new NonClosableStream(_stream),
_entries[entryNumber].DataOffset,
@@ -163,6 +163,15 @@ public sealed partial class Arc
if(_entries[entryNumber].Method == Method.Squeeze)
stream = new SqueezeStream(stream, _entries[entryNumber].Uncompressed);
if(_entries[entryNumber].Method == Method.CrunchOld)
stream = new CrunchStream(stream, _entries[entryNumber].Uncompressed, false, false);
if(_entries[entryNumber].Method == Method.Crunch)
stream = new CrunchStream(stream, _entries[entryNumber].Uncompressed, true, false);
if(_entries[entryNumber].Method == Method.CrunchFastHash)
stream = new CrunchStream(stream, _entries[entryNumber].Uncompressed, true, true);
filter = new ZZZNoFilter();
ErrorNumber errno = filter.Open(stream);