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