' ======================================================================================== ' LiteZip/LiteUnzip ' ======================================================================================== ' LiteZip.dll and LiteUnzip.dll are two Win32 Dynamic Link libraries. The former has ' functions to create a ZIP archive (ie, compress numerous files into a ZIP file). The ' latter has functions to extract the contents of a ZIP archive. ' This project is largely based upon work by Lucian Wischik, who in turn based his work on ' gzip 1.1.4, zlib, and info-zip which are by by Jean-Loup Gailly and Mark Adler. Lucian's ' code has been reworked to be written in plain C, using only the Win32 API, and packaged ' into 2 DLLs. (Also some improvements to error-checking, some added functionality, and ' code-reduction/stream-lining was accomplished). ' ======================================================================================== ' /* ' * LiteZip.h ' * ' * For creating zip files using LITEZIP.DLL. ' * ' * This file is a repackaged form of extracts from the zlib code available ' * at www.gzip.org/zlib, by Jean-Loup Gailly and Mark Adler. The original ' * copyright notice may be found in LiteZip.c. The repackaging was done ' * by Lucian Wischik to simplify and extend its use in Windows/C++. Also ' * encryption and unicode filenames have been added. Code was further ' * revamped and turned into a DLL (which supports both UNICODE and ANSI ' * C strings) by Jeff Glatt. ' */ ' // An HZIP identifies a zip archive that is being created ' ======================================================================================== %TZIP_OPTION_GZIP = &H80000000 ' // These are the return codes from Zip functions %ZR_OK = 0 ' // Success ' // The following come from general system stuff (e.g. files not openable) %ZR_NOFILE = 1 ' // Can't create/open the file %ZR_NOALLOC = 2 ' // Failed to allocate memory %ZR_WRITE = 3 ' // A general error writing to the file %ZR_NOTFOUND = 4 ' // Can't find the specified file in the zip %ZR_MORE = 5 ' // There's still more data to be unzipped %ZR_CORRUPT = 6 ' // The zipfile is corrupt or not a zipfile %ZR_READ = 7 ' // An error reading the file %ZR_NOTSUPPORTED = 8 ' // The entry is in a format that can't be decompressed by this Unzip add-on ' // The following come from mistakes on the part of the caller %ZR_ARGS = 9 ' // Bad arguments passed %ZR_NOTMMAP = 10 ' // Tried to ZipGetMemory, but that only works on mmap zipfiles, which yours wasn't %ZR_MEMSIZE = 11 ' // The memory-buffer size is too small %ZR_FAILED = 12 ' // Already failed when you called this function %ZR_ENDED = 13 ' // The zip creation has already been closed %ZR_MISSIZE = 14 ' // The source file size turned out mistaken %ZR_ZMODE = 15 ' // Tried to mix creating/opening a zip ' // The following come from bugs within the zip library itself %ZR_SEEK = 16 ' // trying to seek in an unseekable file %ZR_NOCHANGE = 17 ' // changed its mind on storage, but not allowed %ZR_FLATE = 18 ' // An error in the de/inflation code %ZR_PASSWORD = 19 ' // Password is incorrect ' ======================================================================================== ' DWORD WINAPI ZipCreateFileA(HZIP *zipHandle, const char *fn, const char *password) ' ======================================================================================== DECLARE FUNCTION ZipCreateFile LIB "LITEZIP.DLL" ALIAS "ZipCreateFileA" ( _ BYREF hZip AS DWORD, BYREF szFilename AS ASCIIZ, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipCreateBuffer(HZIP *zipHandle, void *z, DWORD len, const char *password) ' ======================================================================================== DECLARE FUNCTION ZipCreateBuffer LIB "LITEZIP.DLL" ALIAS "ZipCreateBuffer" ( _ BYREF hZip AS DWORD, BYVAL lpBuffer AS DWORD, BYVAL nSize AS DWORD, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipCreateHandle(HZIP *zipHandle, HANDLE h, const char *password) ' ======================================================================================== DECLARE FUNCTION ZipCreateHandle LIB "LITEZIP.DLL" ALIAS "ZipCreateHandle" ( _ BYREF hZip AS DWORD, BYVAL fileHandle AS DWORD, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddFileA(HZIP tzip, const char *destname, const char *fn) ' ======================================================================================== DECLARE FUNCTION ZipAddFile LIB "LITEZIP.DLL" ALIAS "ZipAddFileA" ( _ BYVAL hZip AS DWORD, BYREF szZipname AS ASCIIZ, BYREF szFilename AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddHandleA(HZIP tzip, const char *destname, HANDLE h) ' ======================================================================================== DECLARE FUNCTION ZipAddHandle LIB "LITEZIP.DLL" ALIAS "ZipAddHandleA" ( _ BYVAL hZip AS DWORD, BYREF szZipname AS ASCIIZ, BYVAL fileHandle AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddBufferA(HZIP tzip, const char *destname, const void *src, DWORD len) ' ======================================================================================== DECLARE FUNCTION ZipAddBuffer LIB "LITEZIP.DLL" ALIAS "ZipAddBufferA" ( _ BYVAL hZip AS DWORD, BYREF szZipname AS ASCIIZ, BYVAL lpBuffer AS DWORD, BYVAL nSize AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddPipeA(HZIP tzip, const char *destname, HANDLE h, DWORD len) ' ======================================================================================== DECLARE FUNCTION ZipAddPipe LIB "LITEZIP.DLL" ALIAS "ZipAddPipeA" ( _ BYVAL hZip AS DWORD, BYREF szZipname AS ASCIIZ, BYVAL fileHandle AS DWORD, BYVAL nSize AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddFolderA(HZIP tzip, const char *destname) ' ======================================================================================== DECLARE FUNCTION ZipAddFolder LIB "LITEZIP.DLL" ALIAS "ZipAddFolderA" ( _ BYVAL hZip AS DWORD, BYREF szZipname AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipGetMemory(HZIP tzip, void **pbuf, DWORD *plen, HANDLE *base) ' ======================================================================================== DECLARE FUNCTION ZipGetMemory LIB "LITEZIP.DLL" ALIAS "ZipGetMemory" ( _ BYVAL hZip AS DWORD, BYREF bufferPtr AS DWORD, BYREF nSize AS DWORD, BYREF freeHandle AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipResetMemory(HZIP tzip) ' ======================================================================================== DECLARE FUNCTION ZipResetMemory LIB "LITEZIP.DLL" ALIAS "ZipResetMemory" (BYVAL hZip AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipClose(HZIP tzip) ' ======================================================================================== DECLARE FUNCTION ZipClose LIB "LITEZIP.DLL" ALIAS "ZipClose" (BYVAL hZip AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipOptions(HZIP tzip, DWORD flags) ' ======================================================================================== DECLARE FUNCTION ZipOptions LIB "LITEZIP.DLL" ALIAS "ZipOptions" ( _ BYVAL hZip AS DWORD, BYVAL flags AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipFormatMessageA(DWORD code, char *buf, DWORD len) ' ======================================================================================== DECLARE FUNCTION ZipFormatMessage LIB "LITEZIP.DLL" ALIAS "ZipFormatMessageA" ( _ BYVAL errornumber AS DWORD, BYREF lpBuffer AS ASCIIZ, BYVAL buffersize AS DWORD) AS DWORD ' ======================================================================================== ' DWORD WINAPI ZipAddDirA(HZIP, const char *, DWORD) ' ======================================================================================== DECLARE FUNCTION ZipAddDir LIB "LITEZIP.DLL" ALIAS "ZipAddDirA" ( _ BYVAL hZip AS DWORD, BYREF szDirName AS ASCIIZ, BYVAL dwOffset AS DWORD) AS DWORD ' ======================================================================================== ' /* ' * LiteUnzip.h ' * ' * For decompressing the contents of zip archives using LITEUNZIP.DLL. ' * ' * This file is a repackaged form of extracts from the zlib code available ' * at www.gzip.org/zlib, by Jean-Loup Gailly and Mark Adler. The original ' * copyright notice may be found in unzip.cpp. The repackaging was done ' * by Lucian Wischik to simplify and extend its use in Windows/C++. Also ' * encryption and unicode filenames have been added. Code was further ' * revamped and turned into a DLL by Jeff Glatt. ' */ ' // An HUNZIP identifies a zip archive that has been opened ' ======================================================================================== TYPE ZIPENTRY Index AS DWORD ' // index of this entry within the zip archive Attributes AS DWORD ' // attributes, as in GetFileAttributes. AccessTime AS FILETIME ' // access filetime CreateTime AS FILETIME ' // create filetime ModifyTime AS FILETIME ' // modify filetime CompressedSize AS LONG ' // sizes of entry, compressed and uncompressed. These UncompressedSize AS LONG ' // may be -1 if not yet known (e.g. being streamed in) szName AS ASCIIZ * %MAX_PATH ' // entry name END TYPE ' ======================================================================================== ' DWORD WINAPI UnzipOpenFileA(HUNZIP *tunzip, const char *fn, const char *password) ' ======================================================================================== DECLARE FUNCTION UnzipOpenFile LIB "LITEUNZIP.DLL" ALIAS "UnzipOpenFileA" ( _ BYREF hUnzip AS DWORD, BYREF szFilename AS ASCIIZ, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipOpenBuffer(HUNZIP *tunzip, void *z, DWORD len, const char *password) ' ======================================================================================== DECLARE FUNCTION UnzipOpenBuffer LIB "LITEUNZIP.DLL" ALIAS "UnzipOpenBuffer" ( _ BYREF hUnzip AS DWORD, BYVAL lpBuffer AS DWORD, BYVAL nSize AS DWORD, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipOpenHandle(HUNZIP *tunzip, HANDLE h, const char *password) ' ======================================================================================== DECLARE FUNCTION UnzipOpenHandle LIB "LITEUNZIP.DLL" ALIAS "UnzipOpenHandle" ( _ BYREF hUnzip AS DWORD, BYVAL fileHandle AS DWORD, BYREF szPassword AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipGetItemA(HUNZIP tunzip, ZIPENTRY *ze) ' ======================================================================================== DECLARE FUNCTION UnzipGetItem LIB "LITEUNZIP.DLL" ALIAS "UnzipGetItemA" ( _ BYVAL hUnzip AS DWORD, BYREF ze AS ZIPENTRY) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipFindItemA(HUNZIP tunzip, ZIPENTRY *ze, BOOL ic) ' ======================================================================================== DECLARE FUNCTION UnzipFindItem LIB "LITEUNZIP.DLL" ALIAS "UnzipFindItemA" ( _ BYVAL hUnzip AS DWORD, BYREF ze AS ZIPENTRY, BYREF ic AS LONG) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipItemToFileA(HUNZIP tunzip, const char *fn, ZIPENTRY *ze) ' ======================================================================================== DECLARE FUNCTION UnzipItemToFile LIB "LITEUNZIP.DLL" ALIAS "UnzipItemToFileA" ( _ BYVAL hUnzip AS DWORD, BYREF szFilename AS ASCIIZ, BYREF ze AS ZIPENTRY) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipItemToHandle(HUNZIP tunzip, HANDLE h, ZIPENTRY *ze) ' ======================================================================================== DECLARE FUNCTION UnzipItemToHandle LIB "LITEUNZIP.DLL" ALIAS "UnzipItemToHandle" ( _ BYVAL hUnzip AS DWORD, BYVAL dwHandle AS DWORD, BYREF ze AS ZIPENTRY) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipItemToBuffer(HUNZIP tunzip, void *z, DWORD len, ZIPENTRY *ze) ' ======================================================================================== DECLARE FUNCTION UnzipItemToBuffer LIB "LITEUNZIP.DLL" ALIAS "UnzipItemToBuffer" ( _ BYVAL hUnzip AS DWORD, BYVAL buffer AS DWORD, BYVAL bufSize AS DWORD, BYREF ze AS ZIPENTRY) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipSetBaseDirA(HUNZIP tunzip, const char *dir) ' ======================================================================================== DECLARE FUNCTION UnzipSetBaseDir LIB "LITEUNZIP.DLL" ALIAS "UnzipSetBaseDirA" ( _ BYVAL hUnzip AS DWORD, BYREF szDirName AS ASCIIZ) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipFormatMessageA(DWORD code, char *buf, DWORD len) ' ======================================================================================== DECLARE FUNCTION UnzipFormatMessage LIB "LITEUNZIP.DLL" ALIAS "UnzipFormatMessageA" ( _ BYVAL errornumber AS DWORD, BYREF lpBuffer AS ASCIIZ, BYVAL buffersize AS LONG) AS DWORD ' ======================================================================================== ' DWORD WINAPI UnzipClose(HUNZIP tunzip) ' ======================================================================================== DECLARE FUNCTION UnzipClose LIB "LITEUNZIP.DLL" ALIAS "UnzipClose" (BYVAL hUnzip AS DWORD) AS DWORD