Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ZipEndOfCentralDirectoryBlock.cs
Go to the documentation of this file.
2
4{
5 public uint Signature;
6
7 public ushort NumberOfThisDisk;
8
10
12
14
16
18
19 public byte[] ArchiveComment;
20
21 public static void WriteBlock(Stream stream, long numberOfEntries, long startOfCentralDirectory, long sizeOfCentralDirectory, byte[] archiveComment)
22 {
23 BinaryWriter binaryWriter = new BinaryWriter(stream);
24 ushort value = ((numberOfEntries > 65535) ? ushort.MaxValue : ((ushort)numberOfEntries));
25 uint value2 = (uint)((startOfCentralDirectory > uint.MaxValue) ? uint.MaxValue : startOfCentralDirectory);
26 uint value3 = (uint)((sizeOfCentralDirectory > uint.MaxValue) ? uint.MaxValue : sizeOfCentralDirectory);
27 binaryWriter.Write(101010256u);
28 binaryWriter.Write((ushort)0);
29 binaryWriter.Write((ushort)0);
30 binaryWriter.Write(value);
31 binaryWriter.Write(value);
32 binaryWriter.Write(value3);
33 binaryWriter.Write(value2);
34 binaryWriter.Write((ushort)((archiveComment != null) ? ((ushort)archiveComment.Length) : 0));
35 if (archiveComment != null)
36 {
37 binaryWriter.Write(archiveComment);
38 }
39 }
40
41 public static bool TryReadBlock(BinaryReader reader, out ZipEndOfCentralDirectoryBlock eocdBlock)
42 {
43 eocdBlock = default(ZipEndOfCentralDirectoryBlock);
44 if (reader.ReadUInt32() != 101010256)
45 {
46 return false;
47 }
48 eocdBlock.Signature = 101010256u;
49 eocdBlock.NumberOfThisDisk = reader.ReadUInt16();
50 eocdBlock.NumberOfTheDiskWithTheStartOfTheCentralDirectory = reader.ReadUInt16();
51 eocdBlock.NumberOfEntriesInTheCentralDirectoryOnThisDisk = reader.ReadUInt16();
52 eocdBlock.NumberOfEntriesInTheCentralDirectory = reader.ReadUInt16();
53 eocdBlock.SizeOfCentralDirectory = reader.ReadUInt32();
54 eocdBlock.OffsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber = reader.ReadUInt32();
55 ushort count = reader.ReadUInt16();
56 eocdBlock.ArchiveComment = reader.ReadBytes(count);
57 return true;
58 }
59}
virtual ushort ReadUInt16()
virtual byte[] ReadBytes(int count)
virtual uint ReadUInt32()
virtual void Write(bool value)
static bool TryReadBlock(BinaryReader reader, out ZipEndOfCentralDirectoryBlock eocdBlock)
static void WriteBlock(Stream stream, long numberOfEntries, long startOfCentralDirectory, long sizeOfCentralDirectory, byte[] archiveComment)