50 # define VERSIONMADEBY (0x0) 54 #define Z_BUFSIZE (64*1024) //(16384) 57 #ifndef Z_MAXFILENAMEINZIP 58 #define Z_MAXFILENAMEINZIP (256) 62 # define ALLOC(size) (malloc(size)) 65 # define TRYFREE(p) {if (p) free(p);} 77 #define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) 92 #if MAX_MEM_LEVEL >= 8 93 # define DEF_MEM_LEVEL 8 95 # define DEF_MEM_LEVEL MAX_MEM_LEVEL 98 const char zip_copyright[] =
" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll";
101 #define SIZEDATA_INDATABLOCK (4096-(4*4)) 103 #define LOCALHEADERMAGIC (0x04034b50) 104 #define CENTRALHEADERMAGIC (0x02014b50) 105 #define ENDHEADERMAGIC (0x06054b50) 106 #define ZIP64ENDHEADERMAGIC (0x6064b50) 107 #define ZIP64ENDLOCHEADERMAGIC (0x7064b50) 109 #define FLAG_LOCALHEADER_OFFSET (0x06) 110 #define CRC_LOCALHEADER_OFFSET (0x0e) 112 #define SIZECENTRALHEADER (0x2e) 159 unsigned long keys[3];
177 #ifndef NO_ADDFILEINEXISTINGZIP 185 #define INCLUDECRYPTINGCODE_IFCRYPTALLOWED 215 ll->first_block =
ll->last_block =
NULL;
221 ll->first_block =
ll->last_block =
NULL;
228 const unsigned char* from_copy;
233 if (
ll->last_block ==
NULL)
236 if (
ll->first_block ==
NULL)
240 ldi =
ll->last_block;
241 from_copy = (
unsigned char*)
buf;
247 unsigned char* to_copy;
255 ll->last_block = ldi;
265 for (
i=0;
i<copy_this;
i++)
266 *(to_copy+
i)=*(from_copy+
i);
270 from_copy += copy_this ;
280 #ifndef NO_ADDFILEINEXISTINGZIP 289 unsigned char buf[8];
291 for (
n = 0;
n < nbByte;
n++)
298 for (
n = 0;
n < nbByte;
n++)
313 unsigned char*
buf=(
unsigned char*)
dest;
315 for (
n = 0;
n < nbByte;
n++) {
322 for (
n = 0;
n < nbByte;
n++)
360 if (
ZERROR64(*pzlib_filefunc_def,filestream))
471 #ifndef BUFREADCOMMENT 472 #define BUFREADCOMMENT (0x400) 492 uSizeFile =
ZTELL64(*pzlib_filefunc_def,filestream);
494 if (uMaxBack>uSizeFile)
495 uMaxBack = uSizeFile;
502 while (uBackRead<uMaxBack)
508 uBackRead = uMaxBack;
511 uReadPos = uSizeFile-uBackRead ;
518 if (
ZREAD64(*pzlib_filefunc_def,filestream,
buf,uReadSize)!=uReadSize)
521 for (
i=(
int)uReadSize-3; (
i--)>0;)
523 if (((*(
buf+
i))==0x50) && ((*(
buf+
i+1))==0x4b) &&
524 ((*(
buf+
i+2))==0x05) && ((*(
buf+
i+3))==0x06))
526 uPosFound = uReadPos+
i;
557 uSizeFile =
ZTELL64(*pzlib_filefunc_def,filestream);
559 if (uMaxBack>uSizeFile)
560 uMaxBack = uSizeFile;
567 while (uBackRead<uMaxBack)
573 uBackRead = uMaxBack;
576 uReadPos = uSizeFile-uBackRead ;
583 if (
ZREAD64(*pzlib_filefunc_def,filestream,
buf,uReadSize)!=uReadSize)
586 for (
i=(
int)uReadSize-3; (
i--)>0;)
589 if (((*(
buf+
i))==0x50) && ((*(
buf+
i+1))==0x4b) && ((*(
buf+
i+2))==0x06) && ((*(
buf+
i+3))==0x07))
591 uPosFound = uReadPos+
i;
636 if (uL != 0x06064b50)
639 return relativeOffset;
654 uLong number_disk_with_CD;
664 int hasZIP64Record = 0;
672 else if(central_pos == 0)
720 if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0))
766 number_entry_CD = uL;
768 if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0))
772 size_central_dir = 0;
776 size_central_dir = uL;
779 offset_central_dir = 0;
783 offset_central_dir = uL;
791 if ((central_pos<offset_central_dir+size_central_dir) &&
811 byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir);
815 ZPOS64_T size_central_dir_to_read = size_central_dir;
821 while ((size_central_dir_to_read>0) && (
err==
ZIP_OK))
824 if (read_this > size_central_dir_to_read)
825 read_this = size_central_dir_to_read;
833 size_central_dir_to_read-=read_this;
837 pziinit->
begin_pos = byte_before_the_zipfile;
860 if (pzlib_filefunc64_32_def==
NULL)
896 # ifndef NO_ADDFILEINEXISTINGZIP 912 # ifndef NO_ADDFILEINEXISTINGZIP 928 if (pzlib_filefunc32_def !=
NULL)
941 if (pzlib_filefunc_def !=
NULL)
944 zlib_filefunc64_32_def_fill.
zfile_func64 = *pzlib_filefunc_def;
970 uInt size_extrafield = size_extrafield_local;
1014 size_extrafield += 20;
1020 if ((
err==
ZIP_OK) && (size_filename > 0))
1026 if ((
err==
ZIP_OK) && (size_extrafield_local > 0))
1063 const void* extrafield_local,
uInt size_extrafield_local,
1064 const void* extrafield_global,
uInt size_extrafield_global,
1068 uLong versionMadeBy,
uLong flagBase,
int zip64)
1176 for (
i=0;
i<size_filename;
i++)
1179 for (
i=0;
i<size_extrafield_global;
i++)
1181 *(((
const char*)extrafield_global)+
i);
1183 for (
i=0;
i<size_comment;
i++)
1185 size_extrafield_global+
i) = *(
comment+
i);
1197 zi->
ci.bstream.avail_in = (
uInt)0;
1200 zi->
ci.bstream.total_in_hi32 = 0;
1201 zi->
ci.bstream.total_in_lo32 = 0;
1202 zi->
ci.bstream.total_out_hi32 = 0;
1203 zi->
ci.bstream.total_out_lo32 = 0;
1237 zi->
ci.bstream.bzalloc = 0;
1238 zi->
ci.bstream.bzfree = 0;
1241 err = BZ2_bzCompressInit(&zi->
ci.bstream,
level, 0,35);
1253 unsigned char bufHead[RAND_HEAD_LEN];
1254 unsigned int sizeHead;
1273 const void* extrafield_local,
uInt size_extrafield_local,
1274 const void* extrafield_global,
uInt size_extrafield_global,
1281 extrafield_local, size_extrafield_local,
1282 extrafield_global, size_extrafield_global,
1285 password, crcForCrypting, versionMadeBy, flagBase, 0);
1289 const void* extrafield_local,
uInt size_extrafield_local,
1290 const void* extrafield_global,
uInt size_extrafield_global,
1296 extrafield_local, size_extrafield_local,
1297 extrafield_global, size_extrafield_global,
1304 const void* extrafield_local,
uInt size_extrafield_local,
1305 const void* extrafield_global,
uInt size_extrafield_global,
1311 extrafield_local, size_extrafield_local,
1312 extrafield_global, size_extrafield_global,
1319 const void* extrafield_local,
uInt size_extrafield_local,
1320 const void* extrafield_global,
uInt size_extrafield_global,
1324 extrafield_local, size_extrafield_local,
1325 extrafield_global, size_extrafield_global,
1332 const void* extrafield_local,
uInt size_extrafield_local,
1333 const void* extrafield_global,
uInt size_extrafield_global,
1337 extrafield_local, size_extrafield_local,
1338 extrafield_global, size_extrafield_global,
1345 const void* extrafield_local,
uInt size_extrafield_local,
1346 const void*extrafield_global,
uInt size_extrafield_global,
1350 extrafield_local, size_extrafield_local,
1351 extrafield_global, size_extrafield_global,
1358 const void* extrafield_local,
uInt size_extrafield_local,
1359 const void*extrafield_global,
uInt size_extrafield_global,
1363 extrafield_local, size_extrafield_local,
1364 extrafield_global, size_extrafield_global,
1393 zi->
ci.bstream.total_in_lo32 = 0;
1394 zi->
ci.bstream.total_in_hi32 = 0;
1426 zi->
ci.bstream.next_in = (
void*)
buf;
1427 zi->
ci.bstream.avail_in =
len;
1430 while ((
err==BZ_RUN_OK) && (zi->
ci.bstream.avail_in>0))
1432 if (zi->
ci.bstream.avail_out == 0)
1441 if(
err != BZ_RUN_OK)
1446 uLong uTotalOutBefore_lo = zi->
ci.bstream.total_out_lo32;
1448 err=BZ2_bzCompress(&zi->
ci.bstream, BZ_RUN);
1454 if(
err == BZ_RUN_OK)
1497 for (
i = 0;
i < copy_this;
i++)
1525 uLong invalidValue = 0xffffffff;
1541 uLong uTotalOutBefore;
1558 while (
err==BZ_FINISH_OK)
1560 uLong uTotalOutBefore;
1561 if (zi->
ci.bstream.avail_out == 0)
1568 uTotalOutBefore = zi->
ci.bstream.total_out_lo32;
1569 err=BZ2_bzCompress(&zi->
ci.bstream, BZ_FINISH);
1570 if(
err == BZ_STREAM_END)
1576 if(
err == BZ_FINISH_OK)
1600 int tmperr = BZ2_bzCompressEnd(&zi->
ci.bstream);
1619 if(compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->
ci.
pos_local_header >= 0xffffffff)
1631 if(compressed_size >= 0xffffffff)
1640 if(uncompressed_size >= 0xffffffff)
1646 if(uncompressed_size >= 0xffffffff)
1650 if(compressed_size >= 0xffffffff)
1675 if(uncompressed_size >= 0xffffffff)
1681 if(compressed_size >= 0xffffffff)
1721 if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff )
1788 uLong Zip64DataSize = 44;
1860 if(
pos >= 0xffffffff)
1874 uInt size_global_comment = 0;
1876 if(global_comment !=
NULL)
1877 size_global_comment = (
uInt)
strlen(global_comment);
1881 if (
err ==
ZIP_OK && size_global_comment > 0)
1893 uLong size_centraldir = 0;
1907 #ifndef NO_ADDFILEINEXISTINGZIP 1908 if (global_comment==
NULL)
1950 #ifndef NO_ADDFILEINEXISTINGZIP 1972 pNewHeader = (
char*)
ALLOC(*dataLen);
1975 while(
p < (
pData + *dataLen))
ZPOS64_T add_position_when_writing_offset
struct linkedlist_datablock_internal_s linkedlist_datablock_internal
ssize_t buf_read(int, void *, size_t)
#define ZIP64ENDLOCHEADERMAGIC
#define ZIP_INTERNALERROR
#define SIZEDATA_INDATABLOCK
int zip64local_getLong64(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)
ACPI_SIZE strlen(const char *String)
linkedlist_data central_dir
#define zencode(pkeys, pcrc_32_tab, c, t)
unsigned char data[SIZEDATA_INDATABLOCK]
int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32)
int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw)
#define SIZECENTRALHEADER
int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting)
const z_crc_t * pcrc_32_tab
GLint GLint GLint GLint GLint x
int zip64local_getShort(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)
uLong filled_in_this_block
ZPOS64_T pos_local_header
#define ZERROR64(filefunc, filestream)
struct linkedlist_datablock_internal_s * next_datablock
#define comment(fmt, arg1)
#define APPEND_STATUS_CREATEAFTER
static void append(struct dump_context *dc, const void *data, unsigned size)
#define ZLIB_FILEFUNC_MODE_READ
int Write_EndOfCentralDirectoryRecord(zip64_internal *zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
int ZEXPORT zipRemoveExtraInfoBlock(char *pData, int *dataLen, short sHeader)
struct linkedlist_data_s linkedlist_data
zipFile ZEXPORT zipOpen(const char *pathname, int append)
int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32)
GLenum GLuint GLenum GLsizei const GLchar * buf
int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int zip64)
int zip64local_putValue(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy)
zipFile ZEXPORT zipOpen2(const char *pathname, int append, zipcharpc *globalcomment, zlib_filefunc_def *pzlib_filefunc32_def)
void free_datablock(linkedlist_datablock_internal *ldi)
int ZEXPORT zipWriteInFileInZip(zipFile file, const void *buf, unsigned int len)
uInt pos_in_buffered_data
int zip64FlushWriteBuffer(zip64_internal *zi)
seek_file_func zseek32_file
linkedlist_datablock_internal * first_block
int zip64local_putValue OF((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte))
int deflateEnd(z_streamp strm) DECLSPEC_HIDDEN
uLong size_centralExtraFree
#define ZCLOSE64(filefunc, filestream)
int Write_LocalFileHeader(zip64_internal *zi, const char *filename, uInt size_extrafield_local, const void *extrafield_local)
void zip64local_putValue_inmemory(void *dest, ZPOS64_T x, int nbByte)
void(* free_func)(voidpf opaque, voidpf address)
#define ZREAD64(filefunc, filestream, buf, size)
#define ZOPEN64(filefunc, filename, mode)
Byte buffered_data[Z_BUFSIZE]
int LoadCentralDirectoryRecord(zip64_internal *pziinit)
ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream)
int zip64local_getByte(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, int *pi)
void init_linkedlist(linkedlist_data *ll)
zlib_filefunc64_def zfile_func64
#define ZLIB_FILEFUNC_MODE_CREATE
unsigned long long int ZPOS64_T
int deflate(z_streamp strm, int flush) DECLSPEC_HIDDEN
ZPOS64_T totalUncompressedData
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def)
#define ZLIB_FILEFUNC_MODE_EXISTING
uLong avail_in_this_block
#define ZIP64ENDHEADERMAGIC
#define ZTELL64(filefunc, filestream)
T1_FIELD_DICT_PRIVATE password
int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal *zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
const z_crc_t FAR *ZEXPORT get_crc_table()
#define memcpy(s1, s2, n)
int ZEXPORT zipOpenNewFileInZip(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level)
zipFile ZEXPORT zipOpen64(const void *pathname, int append)
zlib_filefunc64_32_def z_filefunc
tell_file_func ztell32_file
int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, int zip64)
int Write_GlobalComment(zip64_internal *zi, const char *global_comment)
int add_data_in_datablock(linkedlist_data *ll, const void *buf, uLong len)
int zip64local_getLong(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void free_linkedlist(linkedlist_data *ll)
int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal *zi, ZPOS64_T zip64eocd_pos_inzip)
linkedlist_datablock_internal * allocate_new_datablock()
ZPOS64_T totalCompressedData
int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int zip64)
zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, zipcharpc *globalcomment, zlib_filefunc64_def *pzlib_filefunc_def)
#define crc32(crc, buf, len)
#define ZLIB_FILEFUNC_MODE_WRITE
#define ZSEEK64(filefunc, filestream, pos, mode)
int ZEXPORT zipCloseFileInZip(zipFile file)
ZPOS64_T pos_zip64extrainfo
#define ZLIB_FILEFUNC_SEEK_END
voidpf(* alloc_func)(voidpf opaque, uInt items, uInt size)
int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase)
int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64)
ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream)
#define APPEND_STATUS_ADDINZIP
const char zip_copyright[]
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
zipFile ZEXPORT zipOpen3(const void *pathname, int append, zipcharpc *globalcomment, zlib_filefunc64_32_def *pzlib_filefunc64_32_def)
#define ZLIB_FILEFUNC_SEEK_SET
#define APPEND_STATUS_CREATE
#define Z_DEFAULT_STRATEGY
int ZEXPORT zipClose(zipFile file, const char *global_comment)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
linkedlist_datablock_internal * last_block
uLong zip64local_TmzDateToDosDate(const tm_zip *ptm)
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def *p_filefunc64_32, const zlib_filefunc_def *p_filefunc32)
#define ZWRITE64(filefunc, filestream, buf, size)
#define CENTRALHEADERMAGIC
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *