MCPcopy Create free account
hub / github.com/ClassiCube/ClassiCube / ZipWriter_LocalFile

Function ZipWriter_LocalFile

src/Resources.c:105–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103}
104
105static cc_result ZipWriter_LocalFile(struct Stream* s, struct ResourceZipEntry* e) {
106 int filenameLen = String_Length(e->filename);
107 cc_uint8 header[30 + STRING_SIZE];
108 cc_result res;
109 int modTime, modDate;
110
111 GetCurrentZipDate(&modTime, &modDate);
112 if ((res = s->Position(s, &e->offset))) return res;
113
114 Stream_SetU32_LE(header + 0, 0x04034b50); /* signature */
115 Stream_SetU16_LE(header + 4, 20); /* version needed */
116 Stream_SetU16_LE(header + 6, 0); /* bitflags */
117 Stream_SetU16_LE(header + 8, 0); /* compression method */
118 Stream_SetU16_LE(header + 10, modTime); /* last modified */
119 Stream_SetU16_LE(header + 12, modDate); /* last modified */
120
121 Stream_SetU32_LE(header + 14, e->crc32); /* CRC32 */
122 Stream_SetU32_LE(header + 18, e->size); /* Compressed size */
123 Stream_SetU32_LE(header + 22, e->size); /* Uncompressed size */
124
125 Stream_SetU16_LE(header + 26, filenameLen); /* name length */
126 Stream_SetU16_LE(header + 28, 0); /* extra field length */
127
128 Mem_Copy(header + 30, e->filename, filenameLen);
129 return Stream_Write(s, header, 30 + filenameLen);
130}
131
132static cc_result ZipWriter_CentralDir(struct Stream* s, struct ResourceZipEntry* e) {
133 int filenameLen = String_Length(e->filename);

Callers 4

ZipWriter_FixupLocalFileFunction · 0.85
ZipWriter_WriteDataFunction · 0.85
ZipWriter_WritePngFunction · 0.85
ZipWriter_WriteWavFunction · 0.85

Calls 6

String_LengthFunction · 0.85
GetCurrentZipDateFunction · 0.85
Stream_SetU32_LEFunction · 0.85
Stream_SetU16_LEFunction · 0.85
Mem_CopyFunction · 0.85
Stream_WriteFunction · 0.85

Tested by

no test coverage detected