mirror of
				https://github.com/chibicitiberiu/rainmeter-studio.git
				synced 2024-02-24 04:33:31 +00:00 
			
		
		
		
	SkinInstaller: Update zlib to 1.2.8
This commit is contained in:
		@@ -32,7 +32,7 @@
 | 
			
		||||
/***********************************************************************
 | 
			
		||||
 * Return the next byte in the pseudo-random sequence
 | 
			
		||||
 */
 | 
			
		||||
static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab)
 | 
			
		||||
static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
 | 
			
		||||
{
 | 
			
		||||
    unsigned temp;  /* POTENTIAL BUG:  temp*(temp^1) may overflow in an
 | 
			
		||||
                     * unpredictable manner on 16-bit systems; not a problem
 | 
			
		||||
@@ -45,7 +45,7 @@ static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab)
 | 
			
		||||
/***********************************************************************
 | 
			
		||||
 * Update the encryption keys with the next byte of plain text
 | 
			
		||||
 */
 | 
			
		||||
static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c)
 | 
			
		||||
static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
 | 
			
		||||
{
 | 
			
		||||
    (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
 | 
			
		||||
    (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
 | 
			
		||||
@@ -62,7 +62,7 @@ static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int
 | 
			
		||||
 * Initialize the encryption keys and the random header according to
 | 
			
		||||
 * the given password.
 | 
			
		||||
 */
 | 
			
		||||
static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab)
 | 
			
		||||
static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
 | 
			
		||||
{
 | 
			
		||||
    *(pkeys+0) = 305419896L;
 | 
			
		||||
    *(pkeys+1) = 591751049L;
 | 
			
		||||
@@ -91,7 +91,7 @@ static int crypthead(const char* passwd,      /* password string */
 | 
			
		||||
                     unsigned char* buf,      /* where to write header */
 | 
			
		||||
                     int bufSize,
 | 
			
		||||
                     unsigned long* pkeys,
 | 
			
		||||
                     const unsigned long* pcrc_32_tab,
 | 
			
		||||
                     const z_crc_t* pcrc_32_tab,
 | 
			
		||||
                     unsigned long crcForCrypting)
 | 
			
		||||
{
 | 
			
		||||
    int n;                       /* index in random header */
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,22 @@
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if (defined(_WIN32))
 | 
			
		||||
#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS)))
 | 
			
		||||
        #define _CRT_SECURE_NO_WARNINGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__APPLE__) || defined(IOAPI_NO_64)
 | 
			
		||||
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
 | 
			
		||||
#else
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello64(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "ioapi.h"
 | 
			
		||||
 | 
			
		||||
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
 | 
			
		||||
@@ -47,7 +59,7 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
 | 
			
		||||
        if ((tell_uLong) == ((uLong)-1))
 | 
			
		||||
        if ((tell_uLong) == MAXU32)
 | 
			
		||||
            return (ZPOS64_T)-1;
 | 
			
		||||
        else
 | 
			
		||||
            return tell_uLong;
 | 
			
		||||
@@ -112,7 +124,7 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
 | 
			
		||||
        mode_fopen = "wb";
 | 
			
		||||
 | 
			
		||||
    if ((filename!=NULL) && (mode_fopen != NULL))
 | 
			
		||||
        file = fopen64((const char*)filename, mode_fopen);
 | 
			
		||||
        file = FOPEN_FUNC((const char*)filename, mode_fopen);
 | 
			
		||||
    return file;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -142,7 +154,7 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
 | 
			
		||||
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
 | 
			
		||||
{
 | 
			
		||||
    ZPOS64_T ret;
 | 
			
		||||
    ret = ftello64((FILE *)stream);
 | 
			
		||||
    ret = FTELLO_FUNC((FILE *)stream);
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -188,7 +200,7 @@ static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T
 | 
			
		||||
    }
 | 
			
		||||
    ret = 0;
 | 
			
		||||
 | 
			
		||||
    if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
 | 
			
		||||
    if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0)
 | 
			
		||||
                        ret = -1;
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
#ifndef _ZLIBIOAPI64_H
 | 
			
		||||
#define _ZLIBIOAPI64_H
 | 
			
		||||
 | 
			
		||||
#if (!defined(_WIN32)) && (!defined(WIN32))
 | 
			
		||||
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
 | 
			
		||||
 | 
			
		||||
  // Linux needs this to support file operation on files larger then 4+GB
 | 
			
		||||
  // But might need better if/def to select just the platforms that needs them.
 | 
			
		||||
@@ -38,6 +38,7 @@
 | 
			
		||||
        #ifndef _FILE_OFFSET_BIT
 | 
			
		||||
                #define _FILE_OFFSET_BIT 64
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
@@ -49,6 +50,11 @@
 | 
			
		||||
#define ftello64 ftell
 | 
			
		||||
#define fseeko64 fseek
 | 
			
		||||
#else
 | 
			
		||||
#ifdef __FreeBSD__
 | 
			
		||||
#define fopen64 fopen
 | 
			
		||||
#define ftello64 ftello
 | 
			
		||||
#define fseeko64 fseeko
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
 #define fopen64 fopen
 | 
			
		||||
 #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
 | 
			
		||||
@@ -85,6 +91,8 @@ typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 | 
			
		||||
typedef uint64_t ZPOS64_T;
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
/* Maximum unsigned 32-bit value used as placeholder for zip64 */
 | 
			
		||||
#define MAXU32 0xffffffff
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) || defined(__BORLANDC__)
 | 
			
		||||
typedef unsigned __int64 ZPOS64_T;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,13 @@
 | 
			
		||||
#define INVALID_SET_FILE_POINTER ((DWORD)-1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
 | 
			
		||||
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
 | 
			
		||||
//#define IOWIN32_USING_WINRT_API 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
voidpf  ZCALLBACK win32_open_file_func  OF((voidpf opaque, const char* filename, int mode));
 | 
			
		||||
uLong   ZCALLBACK win32_read_file_func  OF((voidpf opaque, voidpf stream, void* buf, uLong size));
 | 
			
		||||
uLong   ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
 | 
			
		||||
@@ -93,8 +100,22 @@ voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
 | 
			
		||||
 | 
			
		||||
    win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
 | 
			
		||||
 | 
			
		||||
#ifdef IOWIN32_USING_WINRT_API
 | 
			
		||||
#ifdef UNICODE
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
    {
 | 
			
		||||
        WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
 | 
			
		||||
        MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
 | 
			
		||||
        hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return win32_build_iowin(hFile);
 | 
			
		||||
}
 | 
			
		||||
@@ -108,8 +129,17 @@ voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
 | 
			
		||||
 | 
			
		||||
    win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
 | 
			
		||||
 | 
			
		||||
#ifdef IOWIN32_USING_WINRT_API
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
    {
 | 
			
		||||
        WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
 | 
			
		||||
        MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
 | 
			
		||||
        hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return win32_build_iowin(hFile);
 | 
			
		||||
}
 | 
			
		||||
@@ -123,8 +153,13 @@ voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
 | 
			
		||||
 | 
			
		||||
    win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
 | 
			
		||||
 | 
			
		||||
#ifdef IOWIN32_USING_WINRT_API
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL);
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return win32_build_iowin(hFile);
 | 
			
		||||
}
 | 
			
		||||
@@ -138,8 +173,22 @@ voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
 | 
			
		||||
 | 
			
		||||
    win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
 | 
			
		||||
 | 
			
		||||
#ifdef IOWIN32_USING_WINRT_API
 | 
			
		||||
#ifdef UNICODE
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
    {
 | 
			
		||||
        WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
 | 
			
		||||
        MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
 | 
			
		||||
        hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
    if ((filename!=NULL) && (dwDesiredAccess != 0))
 | 
			
		||||
        hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return win32_build_iowin(hFile);
 | 
			
		||||
}
 | 
			
		||||
@@ -188,6 +237,26 @@ uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* b
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos,  DWORD dwMoveMethod)
 | 
			
		||||
{
 | 
			
		||||
#ifdef IOWIN32_USING_WINRT_API
 | 
			
		||||
    return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
 | 
			
		||||
#else
 | 
			
		||||
    LONG lHigh = pos.HighPart;
 | 
			
		||||
    DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT);
 | 
			
		||||
    BOOL fOk = TRUE;
 | 
			
		||||
    if (dwNewPos == 0xFFFFFFFF)
 | 
			
		||||
        if (GetLastError() != NO_ERROR)
 | 
			
		||||
            fOk = FALSE;
 | 
			
		||||
    if ((newPos != NULL) && (fOk))
 | 
			
		||||
    {
 | 
			
		||||
        newPos->LowPart = dwNewPos;
 | 
			
		||||
        newPos->HighPart = lHigh;
 | 
			
		||||
    }
 | 
			
		||||
    return fOk;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
 | 
			
		||||
{
 | 
			
		||||
    long ret=-1;
 | 
			
		||||
@@ -196,15 +265,17 @@ long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
 | 
			
		||||
        hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
 | 
			
		||||
    if (hFile != NULL)
 | 
			
		||||
    {
 | 
			
		||||
        DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT);
 | 
			
		||||
        if (dwSet == INVALID_SET_FILE_POINTER)
 | 
			
		||||
        LARGE_INTEGER pos;
 | 
			
		||||
        pos.QuadPart = 0;
 | 
			
		||||
 | 
			
		||||
        if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
 | 
			
		||||
        {
 | 
			
		||||
            DWORD dwErr = GetLastError();
 | 
			
		||||
            ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
 | 
			
		||||
            ret = -1;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            ret=(long)dwSet;
 | 
			
		||||
            ret=(long)pos.LowPart;
 | 
			
		||||
    }
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
@@ -218,17 +289,17 @@ ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
 | 
			
		||||
 | 
			
		||||
    if (hFile)
 | 
			
		||||
    {
 | 
			
		||||
        LARGE_INTEGER li;
 | 
			
		||||
        li.QuadPart = 0;
 | 
			
		||||
        li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_CURRENT);
 | 
			
		||||
        if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR))
 | 
			
		||||
        LARGE_INTEGER pos;
 | 
			
		||||
        pos.QuadPart = 0;
 | 
			
		||||
 | 
			
		||||
        if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
 | 
			
		||||
        {
 | 
			
		||||
            DWORD dwErr = GetLastError();
 | 
			
		||||
            ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
 | 
			
		||||
            ret = (ZPOS64_T)-1;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            ret=li.QuadPart;
 | 
			
		||||
            ret=pos.QuadPart;
 | 
			
		||||
    }
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
@@ -258,8 +329,9 @@ long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
 | 
			
		||||
 | 
			
		||||
    if (hFile != NULL)
 | 
			
		||||
    {
 | 
			
		||||
        DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod);
 | 
			
		||||
        if (dwSet == INVALID_SET_FILE_POINTER)
 | 
			
		||||
        LARGE_INTEGER pos;
 | 
			
		||||
        pos.QuadPart = offset;
 | 
			
		||||
        if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod))
 | 
			
		||||
        {
 | 
			
		||||
            DWORD dwErr = GetLastError();
 | 
			
		||||
            ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
 | 
			
		||||
@@ -296,9 +368,9 @@ long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T off
 | 
			
		||||
 | 
			
		||||
    if (hFile)
 | 
			
		||||
    {
 | 
			
		||||
        LARGE_INTEGER* li = (LARGE_INTEGER*)&offset;
 | 
			
		||||
        DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMoveMethod);
 | 
			
		||||
        if (dwSet == INVALID_SET_FILE_POINTER)
 | 
			
		||||
        LARGE_INTEGER pos;
 | 
			
		||||
        pos.QuadPart = offset;
 | 
			
		||||
        if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT))
 | 
			
		||||
        {
 | 
			
		||||
            DWORD dwErr = GetLastError();
 | 
			
		||||
            ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
         Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef _WIN32
 | 
			
		||||
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
 | 
			
		||||
        #ifndef __USE_FILE_OFFSET64
 | 
			
		||||
                #define __USE_FILE_OFFSET64
 | 
			
		||||
        #endif
 | 
			
		||||
@@ -27,6 +27,18 @@
 | 
			
		||||
        #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __APPLE__
 | 
			
		||||
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
 | 
			
		||||
#else
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello64(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
@@ -34,14 +46,15 @@
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
 | 
			
		||||
#ifdef unix
 | 
			
		||||
# include <unistd.h>
 | 
			
		||||
# include <utime.h>
 | 
			
		||||
#else
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
# include <direct.h>
 | 
			
		||||
# include <io.h>
 | 
			
		||||
#else
 | 
			
		||||
# include <unistd.h>
 | 
			
		||||
# include <utime.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "unzip.h"
 | 
			
		||||
 | 
			
		||||
#define CASESENSITIVITY (0)
 | 
			
		||||
@@ -84,7 +97,7 @@ void change_file_date(filename,dosdate,tmu_date)
 | 
			
		||||
  SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
 | 
			
		||||
  CloseHandle(hFile);
 | 
			
		||||
#else
 | 
			
		||||
#ifdef unix
 | 
			
		||||
#ifdef unix || __APPLE__
 | 
			
		||||
  struct utimbuf ut;
 | 
			
		||||
  struct tm newdate;
 | 
			
		||||
  newdate.tm_sec = tmu_date.tm_sec;
 | 
			
		||||
@@ -114,10 +127,10 @@ int mymkdir(dirname)
 | 
			
		||||
    int ret=0;
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
    ret = _mkdir(dirname);
 | 
			
		||||
#else
 | 
			
		||||
#ifdef unix
 | 
			
		||||
#elif unix
 | 
			
		||||
    ret = mkdir (dirname,0775);
 | 
			
		||||
#elif __APPLE__
 | 
			
		||||
    ret = mkdir (dirname,0775);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
@@ -364,7 +377,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
 | 
			
		||||
        {
 | 
			
		||||
            char rep=0;
 | 
			
		||||
            FILE* ftestexist;
 | 
			
		||||
            ftestexist = fopen64(write_filename,"rb");
 | 
			
		||||
            ftestexist = FOPEN_FUNC(write_filename,"rb");
 | 
			
		||||
            if (ftestexist!=NULL)
 | 
			
		||||
            {
 | 
			
		||||
                fclose(ftestexist);
 | 
			
		||||
@@ -395,8 +408,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
 | 
			
		||||
 | 
			
		||||
        if ((skip==0) && (err==UNZ_OK))
 | 
			
		||||
        {
 | 
			
		||||
            fout=fopen64(write_filename,"wb");
 | 
			
		||||
 | 
			
		||||
            fout=FOPEN_FUNC(write_filename,"wb");
 | 
			
		||||
            /* some zipfile don't contain directory alone before file */
 | 
			
		||||
            if ((fout==NULL) && ((*popt_extract_without_path)==0) &&
 | 
			
		||||
                                (filename_withoutpath!=(char*)filename_inzip))
 | 
			
		||||
@@ -405,7 +417,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
 | 
			
		||||
                *(filename_withoutpath-1)='\0';
 | 
			
		||||
                makedir(write_filename);
 | 
			
		||||
                *(filename_withoutpath-1)=c;
 | 
			
		||||
                fout=fopen64(write_filename,"wb");
 | 
			
		||||
                fout=FOPEN_FUNC(write_filename,"wb");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (fout==NULL)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef _WIN32
 | 
			
		||||
#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
 | 
			
		||||
        #ifndef __USE_FILE_OFFSET64
 | 
			
		||||
                #define __USE_FILE_OFFSET64
 | 
			
		||||
        #endif
 | 
			
		||||
@@ -28,6 +28,19 @@
 | 
			
		||||
        #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __APPLE__
 | 
			
		||||
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin)
 | 
			
		||||
#else
 | 
			
		||||
#define FOPEN_FUNC(filename, mode) fopen64(filename, mode)
 | 
			
		||||
#define FTELLO_FUNC(stream) ftello64(stream)
 | 
			
		||||
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
@@ -35,14 +48,14 @@
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
 | 
			
		||||
#ifdef unix
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
# include <direct.h>
 | 
			
		||||
# include <io.h>
 | 
			
		||||
#else
 | 
			
		||||
# include <unistd.h>
 | 
			
		||||
# include <utime.h>
 | 
			
		||||
# include <sys/types.h>
 | 
			
		||||
# include <sys/stat.h>
 | 
			
		||||
#else
 | 
			
		||||
# include <direct.h>
 | 
			
		||||
# include <io.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "zip.h"
 | 
			
		||||
@@ -81,7 +94,7 @@ uLong filetime(f, tmzip, dt)
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
#ifdef unix
 | 
			
		||||
#ifdef unix || __APPLE__
 | 
			
		||||
uLong filetime(f, tmzip, dt)
 | 
			
		||||
    char *f;               /* name of file to get info on */
 | 
			
		||||
    tm_zip *tmzip;         /* return value: access, modific. and creation times */
 | 
			
		||||
@@ -142,7 +155,7 @@ int check_exist_file(filename)
 | 
			
		||||
{
 | 
			
		||||
    FILE* ftestexist;
 | 
			
		||||
    int ret = 1;
 | 
			
		||||
    ftestexist = fopen64(filename,"rb");
 | 
			
		||||
    ftestexist = FOPEN_FUNC(filename,"rb");
 | 
			
		||||
    if (ftestexist==NULL)
 | 
			
		||||
        ret = 0;
 | 
			
		||||
    else
 | 
			
		||||
@@ -173,7 +186,8 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
 | 
			
		||||
{
 | 
			
		||||
   unsigned long calculate_crc=0;
 | 
			
		||||
   int err=ZIP_OK;
 | 
			
		||||
   FILE * fin = fopen64(filenameinzip,"rb");
 | 
			
		||||
   FILE * fin = FOPEN_FUNC(filenameinzip,"rb");
 | 
			
		||||
 | 
			
		||||
   unsigned long size_read = 0;
 | 
			
		||||
   unsigned long total_read = 0;
 | 
			
		||||
   if (fin==NULL)
 | 
			
		||||
@@ -211,13 +225,12 @@ int isLargeFile(const char* filename)
 | 
			
		||||
{
 | 
			
		||||
  int largeFile = 0;
 | 
			
		||||
  ZPOS64_T pos = 0;
 | 
			
		||||
  FILE* pFile = fopen64(filename, "rb");
 | 
			
		||||
  FILE* pFile = FOPEN_FUNC(filename, "rb");
 | 
			
		||||
 | 
			
		||||
  if(pFile != NULL)
 | 
			
		||||
  {
 | 
			
		||||
    int n = fseeko64(pFile, 0, SEEK_END);
 | 
			
		||||
 | 
			
		||||
    pos = ftello64(pFile);
 | 
			
		||||
    int n = FSEEKO_FUNC(pFile, 0, SEEK_END);
 | 
			
		||||
    pos = FTELLO_FUNC(pFile);
 | 
			
		||||
 | 
			
		||||
                printf("File : %s is %lld bytes\n", filename, pos);
 | 
			
		||||
 | 
			
		||||
@@ -447,7 +460,7 @@ int main(argc,argv)
 | 
			
		||||
                    printf("error in opening %s in zipfile\n",filenameinzip);
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    fin = fopen64(filenameinzip,"rb");
 | 
			
		||||
                    fin = FOPEN_FUNC(filenameinzip,"rb");
 | 
			
		||||
                    if (fin==NULL)
 | 
			
		||||
                    {
 | 
			
		||||
                        err=ZIP_ERRNO;
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ uLong* bytesRecovered;
 | 
			
		||||
    int entries = 0;
 | 
			
		||||
    uLong totalBytes = 0;
 | 
			
		||||
    char header[30];
 | 
			
		||||
    char filename[256];
 | 
			
		||||
    char filename[1024];
 | 
			
		||||
    char extra[1024];
 | 
			
		||||
    int offset = 0;
 | 
			
		||||
    int offsetCD = 0;
 | 
			
		||||
@@ -73,9 +73,14 @@ uLong* bytesRecovered;
 | 
			
		||||
 | 
			
		||||
        /* Filename */
 | 
			
		||||
        if (fnsize > 0) {
 | 
			
		||||
          if (fread(filename, 1, fnsize, fpZip) == fnsize) {
 | 
			
		||||
            if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
 | 
			
		||||
              offset += fnsize;
 | 
			
		||||
          if (fnsize < sizeof(filename)) {
 | 
			
		||||
            if (fread(filename, 1, fnsize, fpZip) == fnsize) {
 | 
			
		||||
                if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
 | 
			
		||||
                offset += fnsize;
 | 
			
		||||
              } else {
 | 
			
		||||
                err = Z_ERRNO;
 | 
			
		||||
                break;
 | 
			
		||||
              }
 | 
			
		||||
            } else {
 | 
			
		||||
              err = Z_ERRNO;
 | 
			
		||||
              break;
 | 
			
		||||
@@ -91,9 +96,14 @@ uLong* bytesRecovered;
 | 
			
		||||
 | 
			
		||||
        /* Extra field */
 | 
			
		||||
        if (extsize > 0) {
 | 
			
		||||
          if (fread(extra, 1, extsize, fpZip) == extsize) {
 | 
			
		||||
            if (fwrite(extra, 1, extsize, fpOut) == extsize) {
 | 
			
		||||
              offset += extsize;
 | 
			
		||||
          if (extsize < sizeof(extra)) {
 | 
			
		||||
            if (fread(extra, 1, extsize, fpZip) == extsize) {
 | 
			
		||||
              if (fwrite(extra, 1, extsize, fpOut) == extsize) {
 | 
			
		||||
                offset += extsize;
 | 
			
		||||
                } else {
 | 
			
		||||
                err = Z_ERRNO;
 | 
			
		||||
                break;
 | 
			
		||||
              }
 | 
			
		||||
            } else {
 | 
			
		||||
              err = Z_ERRNO;
 | 
			
		||||
              break;
 | 
			
		||||
 
 | 
			
		||||
@@ -28,4 +28,10 @@ extern int ZEXPORT unzRepair(const char* file,
 | 
			
		||||
                             uLong* nRecovered,
 | 
			
		||||
                             uLong* bytesRecovered);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -188,7 +188,7 @@ typedef struct
 | 
			
		||||
 | 
			
		||||
#    ifndef NOUNCRYPT
 | 
			
		||||
    unsigned long keys[3];     /* keys defining the pseudo-random sequence */
 | 
			
		||||
    const unsigned long* pcrc_32_tab;
 | 
			
		||||
    const z_crc_t* pcrc_32_tab;
 | 
			
		||||
#    endif
 | 
			
		||||
} unz64_s;
 | 
			
		||||
 | 
			
		||||
@@ -801,9 +801,9 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Close a ZipFile opened with unzipOpen.
 | 
			
		||||
  If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
 | 
			
		||||
    these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
 | 
			
		||||
  Close a ZipFile opened with unzOpen.
 | 
			
		||||
  If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
 | 
			
		||||
    these files MUST be closed with unzCloseCurrentFile before call unzClose.
 | 
			
		||||
  return UNZ_OK if there is no problem. */
 | 
			
		||||
extern int ZEXPORT unzClose (unzFile file)
 | 
			
		||||
{
 | 
			
		||||
@@ -1040,26 +1040,26 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 | 
			
		||||
            {
 | 
			
		||||
                                                        uLong uL;
 | 
			
		||||
 | 
			
		||||
                                                                if(file_info.uncompressed_size == (ZPOS64_T)(unsigned long)-1)
 | 
			
		||||
                                                                if(file_info.uncompressed_size == MAXU32)
 | 
			
		||||
                                                                {
 | 
			
		||||
                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
 | 
			
		||||
                                                                                        err=UNZ_ERRNO;
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                if(file_info.compressed_size == (ZPOS64_T)(unsigned long)-1)
 | 
			
		||||
                                                                if(file_info.compressed_size == MAXU32)
 | 
			
		||||
                                                                {
 | 
			
		||||
                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
 | 
			
		||||
                                                                                  err=UNZ_ERRNO;
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                if(file_info_internal.offset_curfile == (ZPOS64_T)(unsigned long)-1)
 | 
			
		||||
                                                                if(file_info_internal.offset_curfile == MAXU32)
 | 
			
		||||
                                                                {
 | 
			
		||||
                                                                        /* Relative Header offset */
 | 
			
		||||
                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
 | 
			
		||||
                                                                                err=UNZ_ERRNO;
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                if(file_info.disk_num_start == (unsigned long)-1)
 | 
			
		||||
                                                                if(file_info.disk_num_start == MAXU32)
 | 
			
		||||
                                                                {
 | 
			
		||||
                                                                        /* Disk Start Number */
 | 
			
		||||
                                                                        if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK)
 | 
			
		||||
@@ -1145,7 +1145,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
 | 
			
		||||
                                                szFileName,fileNameBufferSize,
 | 
			
		||||
                                                extraField,extraFieldBufferSize,
 | 
			
		||||
                                                szComment,commentBufferSize);
 | 
			
		||||
    if (err==UNZ_OK)
 | 
			
		||||
    if ((err==UNZ_OK) && (pfile_info != NULL))
 | 
			
		||||
    {
 | 
			
		||||
        pfile_info->version = file_info64.version;
 | 
			
		||||
        pfile_info->version_needed = file_info64.version_needed;
 | 
			
		||||
@@ -1223,7 +1223,7 @@ extern int ZEXPORT unzGoToNextFile (unzFile  file)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Try locate the file szFileName in the zipfile.
 | 
			
		||||
  For the iCaseSensitivity signification, see unzipStringFileNameCompare
 | 
			
		||||
  For the iCaseSensitivity signification, see unzStringFileNameCompare
 | 
			
		||||
 | 
			
		||||
  return value :
 | 
			
		||||
  UNZ_OK if the file is found. It becomes the current file.
 | 
			
		||||
@@ -1696,7 +1696,7 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 | 
			
		||||
        return UNZ_PARAMERROR;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if ((pfile_in_zip_read_info->read_buffer == NULL))
 | 
			
		||||
    if (pfile_in_zip_read_info->read_buffer == NULL)
 | 
			
		||||
        return UNZ_END_OF_LIST_OF_FILE;
 | 
			
		||||
    if (len==0)
 | 
			
		||||
        return 0;
 | 
			
		||||
@@ -1998,7 +1998,7 @@ extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Close the file in zip opened with unzipOpenCurrentFile
 | 
			
		||||
  Close the file in zip opened with unzOpenCurrentFile
 | 
			
		||||
  Return UNZ_CRCERROR if all the file was read but the CRC is not good
 | 
			
		||||
*/
 | 
			
		||||
extern int ZEXPORT unzCloseCurrentFile (unzFile file)
 | 
			
		||||
 
 | 
			
		||||
@@ -197,9 +197,9 @@ extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
 | 
			
		||||
 | 
			
		||||
extern int ZEXPORT unzClose OF((unzFile file));
 | 
			
		||||
/*
 | 
			
		||||
  Close a ZipFile opened with unzipOpen.
 | 
			
		||||
  Close a ZipFile opened with unzOpen.
 | 
			
		||||
  If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
 | 
			
		||||
    these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
 | 
			
		||||
    these files MUST be closed with unzCloseCurrentFile before call unzClose.
 | 
			
		||||
  return UNZ_OK if there is no problem. */
 | 
			
		||||
 | 
			
		||||
extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
 | 
			
		||||
 
 | 
			
		||||
@@ -157,7 +157,7 @@ typedef struct
 | 
			
		||||
    ZPOS64_T totalUncompressedData;
 | 
			
		||||
#ifndef NOCRYPT
 | 
			
		||||
    unsigned long keys[3];     /* keys defining the pseudo-random sequence */
 | 
			
		||||
    const unsigned long* pcrc_32_tab;
 | 
			
		||||
    const z_crc_t* pcrc_32_tab;
 | 
			
		||||
    int crypt_header_size;
 | 
			
		||||
#endif
 | 
			
		||||
} curfile64_info;
 | 
			
		||||
@@ -1067,6 +1067,7 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
 | 
			
		||||
    int err = ZIP_OK;
 | 
			
		||||
 | 
			
		||||
#    ifdef NOCRYPT
 | 
			
		||||
    (crcForCrypting);
 | 
			
		||||
    if (password != NULL)
 | 
			
		||||
        return ZIP_PARAMERROR;
 | 
			
		||||
#    endif
 | 
			
		||||
@@ -1114,9 +1115,9 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
 | 
			
		||||
    zi->ci.flag = flagBase;
 | 
			
		||||
    if ((level==8) || (level==9))
 | 
			
		||||
      zi->ci.flag |= 2;
 | 
			
		||||
    if ((level==2))
 | 
			
		||||
    if (level==2)
 | 
			
		||||
      zi->ci.flag |= 4;
 | 
			
		||||
    if ((level==1))
 | 
			
		||||
    if (level==1)
 | 
			
		||||
      zi->ci.flag |= 6;
 | 
			
		||||
    if (password != NULL)
 | 
			
		||||
      zi->ci.flag |= 1;
 | 
			
		||||
@@ -1710,7 +1711,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
 | 
			
		||||
        if (err==ZIP_OK)
 | 
			
		||||
            err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
 | 
			
		||||
 | 
			
		||||
        if(uncompressed_size >= 0xffffffff)
 | 
			
		||||
        if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff )
 | 
			
		||||
        {
 | 
			
		||||
          if(zi->ci.pos_zip64extrainfo > 0)
 | 
			
		||||
          {
 | 
			
		||||
@@ -1724,6 +1725,8 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
 | 
			
		||||
            if (err==ZIP_OK) /* uncompressed size, unknown */
 | 
			
		||||
              err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
 | 
			
		||||
          }
 | 
			
		||||
          else
 | 
			
		||||
              err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
@@ -1852,7 +1855,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
 | 
			
		||||
      err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
                  err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
 | 
			
		||||
      err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
   return err;
 | 
			
		||||
@@ -1919,7 +1922,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
 | 
			
		||||
    free_linkedlist(&(zi->central_dir));
 | 
			
		||||
 | 
			
		||||
    pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
 | 
			
		||||
    if(pos >= 0xffffffff)
 | 
			
		||||
    if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
 | 
			
		||||
    {
 | 
			
		||||
      ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
 | 
			
		||||
      Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user