private void ReadStartFromReader(RarCrcBinaryReader reader) { HeadCRC = reader.ReadUInt16(); reader.ResetCrc(); HeaderType = (HeaderType)(reader.ReadByte() & 0xff); Flags = reader.ReadInt16(); HeaderSize = reader.ReadInt16(); if (FlagUtility.HasFlag(Flags, LONG_BLOCK)) { AdditionalSize = reader.ReadUInt32(); } }
private RarHeader(RarCrcBinaryReader reader, bool isRar5, ArchiveEncoding archiveEncoding) { _headerType = HeaderType.Null; _isRar5 = isRar5; ArchiveEncoding = archiveEncoding; if (IsRar5) { HeaderCrc = reader.ReadUInt32(); reader.ResetCrc(); HeaderSize = (int)reader.ReadRarVIntUInt32(3); reader.Mark(); HeaderCode = reader.ReadRarVIntByte(); HeaderFlags = reader.ReadRarVIntUInt16(2); if (HasHeaderFlag(HeaderFlagsV5.HAS_EXTRA)) { ExtraSize = reader.ReadRarVIntUInt32(); } if (HasHeaderFlag(HeaderFlagsV5.HAS_DATA)) { AdditionalDataSize = (long)reader.ReadRarVInt(); } } else { reader.Mark(); HeaderCrc = reader.ReadUInt16(); reader.ResetCrc(); HeaderCode = reader.ReadByte(); HeaderFlags = reader.ReadUInt16(); HeaderSize = reader.ReadInt16(); if (HasHeaderFlag(HeaderFlagsV4.HAS_DATA)) { AdditionalDataSize = reader.ReadUInt32(); } } }