private static void WriteBlockInfo(BinaryWriter writer, ulong offset, BlockInfo blockInfo, FileHeader.Version version) { writer.BaseStream.Position = (long)offset; writer.Write((System.UInt32)blockInfo.flags); writer.Write((System.UInt32)blockInfo.fileCount); FileHeader.WriteUIntVersionAware(writer, blockInfo.directorySize, version); FileHeader.WriteUIntVersionAware(writer, blockInfo.decompressedSize, version); FileHeader.WriteUIntVersionAware(writer, blockInfo.nextBlock, version); }
private static void WriteHeader(BinaryWriter writer, ulong offset, FileHeader fileHeader, FileHeader.Version version) { writer.BaseStream.Position = (long)offset; byte[] magic = FileHeader.GetMagicBytes(fileHeader.version); writer.Write(magic); writer.Write(fileHeader.unkown); FileHeader.WriteUIntVersionAware(writer, fileHeader.firstBlockOffset, version); }
private static byte[] CreateDirEntryBytes(DirEntry dirEntry, FileHeader.Version version) { byte[] result = new byte[DirEntry.GetSize(version)]; MemoryStream memoryStream = new MemoryStream(result); BinaryWriter writer = new BinaryWriter(memoryStream); byte[] filenameBytes = Encoding.Unicode.GetBytes(dirEntry.filename); writer.Write(filenameBytes, 0, (int)Math.Min(DirEntry.GetFilenameSize(), filenameBytes.Length)); writer.BaseStream.Position = DirEntry.GetFilenameSize(); FileHeader.WriteUIntVersionAware(writer, dirEntry.offset, version); FileHeader.WriteUIntVersionAware(writer, dirEntry.compressed, version); FileHeader.WriteUIntVersionAware(writer, dirEntry.filesize, version); FileHeader.WriteUIntVersionAware(writer, dirEntry.timestamp, version); FileHeader.WriteUIntVersionAware(writer, dirEntry.unknown, version); return(result); }