Example #1
0
        /// <summary>
        /// Extracts the specified entry.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <returns>Stream.</returns>
        public Stream Extract(PackEntry entry)
        {
            Stream s = new SegmentStream(_source, entry.DataOffset + _dataStart, entry.SizeInPack);

            s = new PackCryptoStream(s, entry.CryptoSeed);

            if (entry.IsCompressed)
            {
                s = new ZlibStream(s, CompressionMode.Decompress);
            }

            return(s);
        }
Example #2
0
        /// <summary>
        /// Writes the specified sstream into the packfile.
        /// </summary>
        /// <param name="s">The s.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="seed">The seed.</param>
        /// <param name="compress"></param>
        /// <param name="createDate"></param>
        /// <param name="modifyDate"></param>
        /// <param name="AccessDate"></param>
        public void Write(Stream s, string fileName, int seed, bool compress, DateTime createDate, DateTime modifyDate, DateTime AccessDate)
        {
            var outputStart = _bodyStream.Position;
            var inputStart  = s.Position;

            using (var mc = new PackCryptoStream(new ZlibStream(s, CompressionMode.Compress), seed))
            {
                mc.CopyTo(_bodyStream);
            }

            _entries.Add(new PackEntry(fileName, seed, compress, (int)(_bodyStream.Position - outputStart),
                                       (int)(s.Position - inputStart), outputStart, createDate, modifyDate, AccessDate));
        }