1 module utils.miniz.binding; 2 3 import 4 core.stdc.stdio; 5 6 7 extern(C): 8 9 enum 10 { 11 MZ_ZIP_MAX_IO_BUF_SIZE = 64* 1024, 12 MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512, 13 MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512 14 } 15 16 struct mz_zip_internal_state; 17 18 struct mz_zip_archive_file_stat 19 { 20 uint m_file_index; 21 ulong m_central_dir_ofs; 22 ushort m_version_made_by; 23 ushort m_version_needed; 24 ushort m_bit_flag; 25 ushort m_method; 26 ulong m_time; 27 uint m_crc32; 28 ulong m_comp_size; 29 ulong m_uncomp_size; 30 ushort m_internal_attr; 31 uint m_external_attr; 32 ulong m_local_header_ofs; 33 uint m_comment_size; 34 int m_is_directory; 35 int m_is_encrypted; 36 int m_is_supported; 37 char[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE] m_filename; 38 char[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE] m_comment; 39 } 40 41 struct mz_zip_archive 42 { 43 ulong m_archive_size; 44 ulong m_central_directory_file_ofs; 45 uint m_total_files; 46 mz_zip_mode m_zip_mode; 47 mz_zip_type m_zip_type; 48 mz_zip_error m_last_error; 49 ulong m_file_offset_alignment; 50 mz_alloc_func m_pAlloc; 51 mz_free_func m_pFree; 52 mz_realloc_func m_pRealloc; 53 void* m_pAlloc_opaque; 54 mz_file_read_func m_pRead; 55 mz_file_write_func m_pWrite; 56 mz_file_needs_keepalive m_pNeeds_keepalive; 57 void* m_pIO_opaque; 58 mz_zip_internal_state* m_pState; 59 } 60 61 /*struct tinfl_decompressor; 62 63 struct mz_zip_reader_extract_iter_state 64 { 65 mz_zip_archive* pZip; 66 uint flags; 67 int status; 68 uint mz_file_crc32; 69 ulong read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs; 70 mz_zip_archive_file_stat mz_file_stat; 71 void* pRead_buf; 72 void* pWrite_buf; 73 size_t out_blk_remain; 74 tinfl_decompressor inflator; 75 }*/ 76 77 alias mz_file_read_func = size_t function(void* pOpaque, ulong mz_file_ofs, void* pBuf, size_t n); 78 alias mz_file_write_func = size_t function(void* pOpaque, ulong mz_file_ofs, in void* pBuf, size_t n); 79 alias mz_file_needs_keepalive = int function(void* pOpaque); 80 81 alias mz_alloc_func = void* function(void* opaque, size_t items, size_t size); 82 alias mz_free_func = void function(void* opaque, void* address); 83 alias mz_realloc_func = void* function(void* opaque, void* address, size_t items, size_t size); 84 85 alias mz_zip_mode = int; 86 alias mz_zip_type = int; 87 alias mz_zip_error = int; 88 alias mz_zip_flags = int; 89 90 enum 91 { 92 MZ_ZIP_MODE_INVALID = 0, 93 MZ_ZIP_MODE_READING = 1, 94 MZ_ZIP_MODE_WRITING = 2, 95 MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3 96 } 97 98 enum 99 { 100 MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, 101 MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, 102 MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, 103 MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800, 104 MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG = 0x1000, 105 MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY = 0x2000, 106 MZ_ZIP_FLAG_WRITE_ZIP64 = 0x4000, 107 MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000, 108 MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000 109 } 110 111 enum 112 { 113 MZ_ZIP_TYPE_INVALID = 0, 114 MZ_ZIP_TYPE_USER, 115 MZ_ZIP_TYPE_MEMORY, 116 MZ_ZIP_TYPE_HEAP, 117 MZ_ZIP_TYPE_FILE, 118 MZ_ZIP_TYPE_CFILE, 119 MZ_ZIP_TOTAL_TYPES 120 } 121 122 enum 123 { 124 MZ_ZIP_NO_ERROR = 0, 125 MZ_ZIP_UNDEFINED_ERROR, 126 MZ_ZIP_TOO_MANY_FILES, 127 MZ_ZIP_FILE_TOO_LARGE, 128 MZ_ZIP_UNSUPPORTED_METHOD, 129 MZ_ZIP_UNSUPPORTED_ENCRYPTION, 130 MZ_ZIP_UNSUPPORTED_FEATURE, 131 MZ_ZIP_FAILED_FINDING_CENTRAL_DIR, 132 MZ_ZIP_NOT_AN_ARCHIVE, 133 MZ_ZIP_INVALID_HEADER_OR_CORRUPTED, 134 MZ_ZIP_UNSUPPORTED_MULTIDISK, 135 MZ_ZIP_DECOMPRESSION_FAILED, 136 MZ_ZIP_COMPRESSION_FAILED, 137 MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE, 138 MZ_ZIP_CRC_CHECK_FAILED, 139 MZ_ZIP_UNSUPPORTED_CDIR_SIZE, 140 MZ_ZIP_ALLOC_FAILED, 141 MZ_ZIP_FILE_OPEN_FAILED, 142 MZ_ZIP_FILE_CREATE_FAILED, 143 MZ_ZIP_FILE_WRITE_FAILED, 144 MZ_ZIP_FILE_READ_FAILED, 145 MZ_ZIP_FILE_CLOSE_FAILED, 146 MZ_ZIP_FILE_SEEK_FAILED, 147 MZ_ZIP_FILE_STAT_FAILED, 148 MZ_ZIP_INVALID_PARAMETER, 149 MZ_ZIP_INVALID_FILENAME, 150 MZ_ZIP_BUF_TOO_SMALL, 151 MZ_ZIP_INTERNAL_ERROR, 152 MZ_ZIP_FILE_NOT_FOUND, 153 MZ_ZIP_ARCHIVE_TOO_LARGE, 154 MZ_ZIP_VALIDATION_FAILED, 155 MZ_ZIP_WRITE_CALLBACK_FAILED, 156 MZ_ZIP_TOTAL_ERRORS 157 } 158 159 int mz_zip_reader_init(mz_zip_archive* pZip, ulong size, uint flags); 160 int mz_zip_reader_init_mem(mz_zip_archive* pZip, in void* pMem, size_t size, uint flags); 161 int mz_zip_reader_init_file(mz_zip_archive* pZip, in char* pFilename, uint flags); 162 int mz_zip_reader_init_file_v2(mz_zip_archive* pZip, in char* pFilename, uint flags, ulong mz_file_start_ofs, ulong archive_size); 163 int mz_zip_reader_init_cfile(mz_zip_archive* pZip, FILE* pFile, ulong archive_size, uint flags); 164 165 int mz_zip_reader_end(mz_zip_archive* pZip); 166 void mz_zip_zero_struct(mz_zip_archive* pZip); 167 168 mz_zip_mode mz_zip_get_mode(mz_zip_archive* pZip); 169 mz_zip_type mz_zip_get_type(mz_zip_archive* pZip); 170 uint mz_zip_reader_get_num_files(mz_zip_archive* pZip); 171 ulong mz_zip_get_archive_size(mz_zip_archive* pZip); 172 ulong mz_zip_get_archive_file_start_offset(mz_zip_archive* pZip); 173 174 FILE* mz_zip_get_cfile(mz_zip_archive* pZip); 175 size_t mz_zip_read_archive_data(mz_zip_archive* pZip, ulong mz_file_ofs, void* pBuf, size_t n); 176 177 mz_zip_error mz_zip_set_last_error(mz_zip_archive* pZip, mz_zip_error err_num); 178 mz_zip_error mz_zip_peek_last_error(mz_zip_archive* pZip); 179 mz_zip_error mz_zip_clear_last_error(mz_zip_archive* pZip); 180 mz_zip_error mz_zip_get_last_error(mz_zip_archive* pZip); 181 const(char)* mz_zip_get_error_string(mz_zip_error mz_err); 182 183 int mz_zip_reader_is_file_a_directory(mz_zip_archive* pZip, uint mz_file_index); 184 int mz_zip_reader_is_file_encrypted(mz_zip_archive* pZip, uint mz_file_index); 185 int mz_zip_reader_is_file_supported(mz_zip_archive* pZip, uint mz_file_index); 186 187 uint mz_zip_reader_get_filename(mz_zip_archive* pZip, uint mz_file_index, char* pFilename, uint filename_buf_size); 188 189 int mz_zip_reader_locate_file(mz_zip_archive* pZip, in char* pName, in char* pComment, uint flags); 190 int mz_zip_reader_locate_file_v2(mz_zip_archive* pZip, in char* pName, in char* pComment, uint flags, uint* mz_file_index); 191 int mz_zip_reader_file_stat(mz_zip_archive* pZip, uint mz_file_index, mz_zip_archive_file_stat* pStat); 192 193 int mz_zip_is_zip64(mz_zip_archive* pZip); 194 size_t mz_zip_get_central_dir_size(mz_zip_archive* pZip); 195 196 int mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive* pZip, uint mz_file_index, void* pBuf, size_t buf_size, uint flags, void* pUser_read_buf, size_t user_read_buf_size); 197 int mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive* pZip, in char* pFilename, void* pBuf, size_t buf_size, uint flags, void* pUser_read_buf, size_t user_read_buf_size); 198 int mz_zip_reader_extract_to_mem(mz_zip_archive* pZip, uint mz_file_index, void* pBuf, size_t buf_size, uint flags); 199 int mz_zip_reader_extract_file_to_mem(mz_zip_archive* pZip, in char* pFilename, void* pBuf, size_t buf_size, uint flags); 200 201 void* mz_zip_reader_extract_to_heap(mz_zip_archive* pZip, uint mz_file_index, size_t* pSize, uint flags); 202 void* mz_zip_reader_extract_file_to_heap(mz_zip_archive* pZip, in char* pFilename, size_t* pSize, uint flags); 203 204 int mz_zip_reader_extract_to_callback(mz_zip_archive* pZip, uint mz_file_index, mz_file_write_func pCallback, void* pOpaque, uint flags); 205 int mz_zip_reader_extract_file_to_callback(mz_zip_archive* pZip, in char* pFilename, mz_file_write_func pCallback, void* pOpaque, uint flags); 206 207 /*mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive* pZip, uint mz_file_index, uint flags); 208 mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive* pZip, in char* pFilename, uint flags); 209 size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size); 210 int mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState);*/ 211 212 int mz_zip_reader_extract_to_file(mz_zip_archive* pZip, uint mz_file_index, in char* pDst_filename, uint flags); 213 int mz_zip_reader_extract_file_to_file(mz_zip_archive* pZip, in char* pArchive_filename, in char* pDst_filename, uint flags); 214 int mz_zip_reader_extract_to_cfile(mz_zip_archive* pZip, uint mz_file_index, FILE* File, uint flags); 215 int mz_zip_reader_extract_file_to_cfile(mz_zip_archive* pZip, in char* pArchive_filename, FILE* pFile, uint flags); 216 217 int mz_zip_validate_file(mz_zip_archive* pZip, uint mz_file_index, uint flags); 218 int mz_zip_validate_archive(mz_zip_archive* pZip, uint flags); 219 int mz_zip_validate_mem_archive(in void* pMem, size_t size, uint flags, mz_zip_error* pErr); 220 int mz_zip_validate_file_archive(in char* pFilename, uint flags, mz_zip_error* pErr); 221 int mz_zip_end(mz_zip_archive* pZip); 222 223 int mz_zip_writer_init(mz_zip_archive* pZip, ulong existing_size); 224 int mz_zip_writer_init_v2(mz_zip_archive* pZip, ulong existing_size, uint flags); 225 int mz_zip_writer_init_heap(mz_zip_archive* pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size); 226 int mz_zip_writer_init_heap_v2(mz_zip_archive* pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, uint flags); 227 int mz_zip_writer_init_file(mz_zip_archive* pZip, in char* pFilename, ulong size_to_reserve_at_beginning); 228 int mz_zip_writer_init_file_v2(mz_zip_archive* pZip, in char* pFilename, ulong size_to_reserve_at_beginning, uint flags); 229 int mz_zip_writer_init_cfile(mz_zip_archive* pZip, FILE* pFile, uint flags); 230 int mz_zip_writer_init_from_reader(mz_zip_archive* pZip, in char* pFilename); 231 int mz_zip_writer_init_from_reader_v2(mz_zip_archive* pZip, in char* pFilename, uint flags); 232 233 int mz_zip_writer_add_mem(mz_zip_archive* pZip, in char* pArchive_name, in void* pBuf, size_t buf_size, uint level_and_flags); 234 int mz_zip_writer_add_mem_ex(mz_zip_archive* pZip, in char* pArchive_name, in void* pBuf, size_t buf_size, in void* pComment, ushort comment_size, uint level_and_flags, 235 ulong uncomp_size, uint uncomp_crc32); 236 int mz_zip_writer_add_mem_ex_v2(mz_zip_archive* pZip, in char* pArchive_name, in void* pBuf, size_t buf_size, in void* pComment, ushort comment_size, uint level_and_flags, 237 ulong uncomp_size, uint uncomp_crc32, ulong* last_modified, in char* user_extra_data_local, uint user_extra_data_local_len, 238 in char* user_extra_data_central, uint user_extra_data_central_len); 239 240 int mz_zip_writer_add_file(mz_zip_archive* pZip, in char* pArchive_name, in char* pSrc_filename, in void* pComment, ushort comment_size, uint level_and_flags); 241 int mz_zip_writer_add_cfile(mz_zip_archive* pZip, in char* pArchive_name, FILE* pSrc_file, ulong size_to_add, 242 in ulong* pFile_time, in void* pComment, ushort comment_size, uint level_and_flags, in char* user_extra_data_local, uint user_extra_data_local_len, 243 in char* user_extra_data_central, uint user_extra_data_central_len); 244 int mz_zip_writer_add_from_zip_reader(mz_zip_archive* pZip, mz_zip_archive* pSource_zip, uint src_file_index); 245 246 int mz_zip_writer_finalize_archive(mz_zip_archive* pZip); 247 int mz_zip_writer_finalize_heap_archive(mz_zip_archive* pZip, void* *ppBuf, size_t* pSize); 248 int mz_zip_writer_end(mz_zip_archive* pZip); 249 250 int mz_zip_add_mem_to_archive_file_in_place(in char* pZip_filename, in char* pArchive_name, in void* pBuf, size_t buf_size, in void* pComment, ushort comment_size, uint level_and_flags); 251 int mz_zip_add_mem_to_archive_file_in_place_v2(in char* pZip_filename, in char* pArchive_name, in void* pBuf, size_t buf_size, in void* pComment, ushort comment_size, uint level_and_flags, mz_zip_error* pErr); 252 253 void* mz_zip_extract_archive_file_to_heap(in char* pZip_filename, in char* pArchive_name, size_t* pSize, uint flags); 254 void* mz_zip_extract_archive_file_to_heap_v2(in char* pZip_filename, in char* pArchive_name, in char* pComment, size_t* pSize, uint flags, mz_zip_error* pErr);