| #pragma pack(push, 1) |
| |
| #define MEMZIP_FILE_HEADER_SIGNATURE 0x04034b50 |
| typedef struct |
| { |
| uint32_t signature; |
| uint16_t version; |
| uint16_t flags; |
| uint16_t compression_method; |
| uint16_t last_mod_time; |
| uint16_t last_mod_date; |
| uint32_t crc32; |
| uint32_t compressed_size; |
| uint32_t uncompressed_size; |
| uint16_t filename_len; |
| uint16_t extra_len; |
| |
| /* char filename[filename_len] */ |
| /* uint8_t extra[extra_len] */ |
| |
| } MEMZIP_FILE_HDR; |
| |
| #define MEMZIP_CENTRAL_DIRECTORY_SIGNATURE 0x02014b50 |
| typedef struct |
| { |
| uint32_t signature; |
| uint16_t version_made_by; |
| uint16_t version_read_with; |
| uint16_t flags; |
| uint16_t compression_method; |
| uint16_t last_mod_time; |
| uint16_t last_mod_date; |
| uint32_t crc32; |
| uint32_t compressed_size; |
| uint32_t uncompressed_size; |
| uint16_t filename_len; |
| uint16_t extra_len; |
| uint16_t disk_num; |
| uint16_t internal_file_attributes; |
| uint32_t external_file_attributes; |
| uint32_t file_header_offset; |
| |
| /* char filename[filename_len] */ |
| /* uint8_t extra[extra_len] */ |
| |
| } MEMZIP_CENTRAL_DIRECTORY_HDR; |
| |
| #define MEMZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE 0x06054b50 |
| typedef struct |
| { |
| uint32_t signature; |
| uint16_t disk_num; |
| uint16_t central_directory_disk; |
| uint16_t num_central_directories_this_disk; |
| uint16_t total_central_directories; |
| uint32_t central_directory_size; |
| uint32_t central_directory_offset; |
| uint16_t comment_len; |
| |
| /* char comment[comment_len] */ |
| |
| } MEMZIP_END_OF_CENTRAL_DIRECTORY; |
| |
| #pragma pack(pop) |
| |
| typedef enum { |
| MZ_OK = 0, /* (0) Succeeded */ |
| MZ_NO_FILE, /* (1) Could not find the file. */ |
| MZ_FILE_COMPRESSED, /* (2) File is compressed (expecting uncompressed) */ |
| |
| } MEMZIP_RESULT; |
| |
| typedef struct { |
| uint32_t file_size; |
| uint16_t last_mod_date; |
| uint16_t last_mod_time; |
| uint8_t is_dir; |
| |
| } MEMZIP_FILE_INFO; |
| |
| MEMZIP_RESULT memzip_locate(const char *filename, void **data, size_t *len); |
| |
| MEMZIP_RESULT memzip_stat(const char *path, MEMZIP_FILE_INFO *info); |