Example #1
0
 internal static void WriteHeader(ArchiveHeader header, BinaryWriter w)
 {
     w.Write(header.Signature);
     w.Write(header.Version);
     w.Write(header.HeaderSize);
     w.Write(header.Unknown);
     w.Write(header.IndexOffset);
     w.Write(header.IndexLength);
 }
Example #2
0
        public void Reload()
        {
            CloseAllFiles();
            Files.Clear();

            var reader = new BinaryReader(Stream);

            Stream.Seek(0);
            lock (_syncRoot) {
                Header = ArchiveHelpers.ReadHeader(reader);
                Files  = ArchiveHelpers.ReadIndex(this, reader);
            }
        }
Example #3
0
        internal static ArchiveHeader ReadHeader(BinaryReader r)
        {
            var header = new ArchiveHeader {
                Signature   = r.ReadBytes(6),
                Version     = r.ReadUInt16(),
                HeaderSize  = r.ReadUInt32(),
                Unknown     = r.ReadUInt32(),
                IndexOffset = r.ReadUInt32(),
                IndexLength = r.ReadUInt32()
            };

            Debug.Assert(header.Signature.Matches(Signature), $"Unexpected archive signature: {Encoding.ASCII.GetString(header.Signature)}");
            Debug.Assert(header.Version == 0, $"Unsupported archive version: {header.Version}");
            Debug.Assert(header.HeaderSize == HeaderSize, $"Unexpected header size field: {header.HeaderSize}");

            return(header);
        }