qzdoom/src/w_zip.h

77 lines
1.5 KiB
C
Raw Normal View History

2016-03-01 15:47:10 +00:00
#ifndef __W_ZIP
#define __W_ZIP
#pragma pack(1)
// FZipCentralInfo
struct FZipEndOfCentralDirectory
{
2017-03-08 14:52:09 +00:00
uint32_t Magic;
uint16_t DiskNumber;
uint16_t FirstDisk;
uint16_t NumEntries;
uint16_t NumEntriesOnAllDisks;
uint32_t DirectorySize;
uint32_t DirectoryOffset;
uint16_t ZipCommentLength;
} FORCE_PACKED;
2016-03-01 15:47:10 +00:00
// FZipFileInfo
struct FZipCentralDirectoryInfo
{
2017-03-08 14:52:09 +00:00
uint32_t Magic;
2017-03-08 17:47:52 +00:00
uint8_t VersionMadeBy[2];
uint8_t VersionToExtract[2];
2017-03-08 14:52:09 +00:00
uint16_t Flags;
uint16_t Method;
uint16_t ModTime;
uint16_t ModDate;
uint32_t CRC32;
uint32_t CompressedSize;
uint32_t UncompressedSize;
uint16_t NameLength;
uint16_t ExtraLength;
uint16_t CommentLength;
uint16_t StartingDiskNumber;
uint16_t InternalAttributes;
uint32_t ExternalAttributes;
uint32_t LocalHeaderOffset;
2016-03-01 15:47:10 +00:00
// file name and other variable length info follows
} FORCE_PACKED;
2016-03-01 15:47:10 +00:00
// FZipLocalHeader
struct FZipLocalFileHeader
{
2017-03-08 14:52:09 +00:00
uint32_t Magic;
2017-03-08 17:47:52 +00:00
uint8_t VersionToExtract[2];
2017-03-08 14:52:09 +00:00
uint16_t Flags;
uint16_t Method;
uint16_t ModTime;
uint16_t ModDate;
uint32_t CRC32;
uint32_t CompressedSize;
uint32_t UncompressedSize;
uint16_t NameLength;
uint16_t ExtraLength;
2016-03-01 15:47:10 +00:00
// file name and other variable length info follows
} FORCE_PACKED;
2016-03-01 15:47:10 +00:00
#pragma pack()
#define ZIP_LOCALFILE MAKE_ID('P','K',3,4)
#define ZIP_CENTRALFILE MAKE_ID('P','K',1,2)
#define ZIP_ENDOFDIR MAKE_ID('P','K',5,6)
#define METHOD_STORED 0
#define METHOD_SHRINK 1
#define METHOD_IMPLODE 6
#define METHOD_DEFLATE 8
#define METHOD_BZIP2 12
#define METHOD_LZMA 14
#define METHOD_PPMD 98
// File header flags.
#define ZF_ENCRYPTED 0x1
#endif