public override Stream OpenEntry(ArcFile arc, Entry entry) { if (!(entry.Size > 8 && arc.File.View.AsciiEqual(entry.Offset, "acp\0"))) { return(base.OpenEntry(arc, entry)); } int unpacked_size = Binary.BigEndian(arc.File.View.ReadInt32(entry.Offset + 4)); using (var input = arc.File.CreateStream(entry.Offset + 8, entry.Size - 8)) using (var decoder = new LzwDecoder(input, unpacked_size)) { decoder.Unpack(); return(new MemoryStream(decoder.Output)); } }
public override Stream OpenEntry(ArcFile arc, Entry entry) { if (!(entry.Size > 8 && arc.File.View.AsciiEqual (entry.Offset, "acp\0"))) return base.OpenEntry (arc, entry); int unpacked_size = Binary.BigEndian (arc.File.View.ReadInt32 (entry.Offset+4)); using (var input = arc.File.CreateStream (entry.Offset+8, entry.Size-8)) using (var decoder = new LzwDecoder (input, unpacked_size)) { decoder.Unpack(); return new MemoryStream (decoder.Output); } }