コード例 #1
0
        internal T PromoteHeader<T>(RarCrcBinaryReader reader)
            where T : RarHeader, new()
        {
            T header = new T();
            header.FillBase(this);

            reader.Mark();
            header.ReadFromReader(reader);
            header.ReadBytes += reader.CurrentReadByteCount;

            int headerSizeDiff = header.HeaderSize - (int)header.ReadBytes;

            if (headerSizeDiff > 0)
            {
                reader.ReadBytes(headerSizeDiff);
            }

            VerifyHeaderCrc(reader.GetCrc());

            return header;
        }
コード例 #2
0
ファイル: RarHeader.cs プロジェクト: zhouzu/sharpcompress
        protected RarHeader(RarHeader header, RarCrcBinaryReader reader, HeaderType headerType)
        {
            _headerType        = headerType;
            _isRar5            = header.IsRar5;
            HeaderCrc          = header.HeaderCrc;
            HeaderCode         = header.HeaderCode;
            HeaderFlags        = header.HeaderFlags;
            HeaderSize         = header.HeaderSize;
            ExtraSize          = header.ExtraSize;
            AdditionalDataSize = header.AdditionalDataSize;
            ArchiveEncoding    = header.ArchiveEncoding;
            ReadFinish(reader);

            int n = RemainingHeaderBytes(reader);

            if (n > 0)
            {
                reader.ReadBytes(n);
            }

            VerifyHeaderCrc(reader.GetCrc32());
        }