diff options
author | Dave Hylands <dhylands@gmail.com> | 2015-10-31 21:24:47 -0700 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-11-04 14:21:10 +0000 |
commit | 074d713bfb845a87e557e608f5215f53694e7d01 (patch) | |
tree | 3688db7f8d476613bc0888b4be6a01a5238b63af /lib/memzip/memzip.h | |
parent | a9f3030371094e3308b4d2150853db2ee3aa4a6b (diff) | |
download | micropython-074d713bfb845a87e557e608f5215f53694e7d01.tar.gz micropython-074d713bfb845a87e557e608f5215f53694e7d01.zip |
lib/memzip: Factor out memzip from teensy/ into lib/memzip.
Diffstat (limited to 'lib/memzip/memzip.h')
-rw-r--r-- | lib/memzip/memzip.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/lib/memzip/memzip.h b/lib/memzip/memzip.h new file mode 100644 index 0000000000..667e2df7e1 --- /dev/null +++ b/lib/memzip/memzip.h @@ -0,0 +1,83 @@ +#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); |