Exemplo n.º 1
0
        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));
                }
        }
Exemplo n.º 2
0
 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);
     }
 }