# minizip **Repository Path**: asight/minizip ## Basic Information - **Project Name**: minizip - **Description**: https://github.com/nmoinvaz/minizip.git - **Primary Language**: Unknown - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2018-12-11 - **Last Updated**: 2024-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Minizip zlib contribution that includes: - AES encryption - I/O buffering - PKWARE disk spanning - Visual Studio 2008 project files It also has the latest bug fixes that having been found all over the internet including the minizip forum and zlib developer's mailing list. *AES Encryption* + Requires #define HAVE_AES + Requires AES library files When zipping with a password it will always use AES 256-bit encryption. When unzipping it will use AES decryption only if necessary. *I/O Buffering* Improves I/O performance by buffering read and write operations. ``` zlib_filefunc64_def filefunc64 = {0}; ourbuffer_t buffered = {0}; fill_win32_filefunc64(&buffered->filefunc64); fill_buffer_filefunc64(&filefunc64, buffered); unzOpen2_64(filename, &filefunc64) ``` *PKWARE disk spanning* To create an archive with multiple disks use zipOpen3_64 supplying a disk_size value in bytes. ``` extern zipFile ZEXPORT zipOpen3_64 OF((const void *pathname, int append, ZPOS64_T disk_size, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)); ``` The central directory is the only data stored in the .zip and doesn't follow disk_size restrictions. When unzipping it will automatically determine when in needs to span disks. *I/O Memory* To unzip from a zip file in memory use fill_memory_filefunc and supply a proper ourmemory_t structure. ``` zlib_filefunc_def filefunc32 = {0}; ourmemory_t unzmem = {0}; unzmem.size = bufsize; unzmem.base = (char *)malloc(unzmem.size); memcpy(unzmem.base, buffer, unzmem.size); fill_memory_filefunc(&filefunc32, &unzmem); unzOpen2("__notused__", &filefunc32); ``` To create a zip file in memory use fill_memory_filefunc and supply a proper ourmemory_t structure. It is important not to forget to free zipmem->base when finished. If grow is set, zipmem->base will expand to fit the size of the zip. If grow is not set be sure to fill out zipmem.base and zipmem.size. ``` zlib_filefunc_def filefunc32 = {0}; ourmemory_t zipmem = {0}; zipmem.grow = 1; fill_memory_filefunc(&filefunc32, &zipmem); zipOpen3("__notused__", APPEND_STATUS_CREATE, 0, 0, &filefunc32); ``` *BZIP2* + Requires #define HAVE_BZIP2 + Requires BZIP2 library *Apple libcompression* + Requires #define HAVE_APPLE_COMPRESSION *Windows RT* + Requires #define IOWIN32_USING_WINRT_API