mirror of https://github.com/madler/zlib.git
parent
7df877eccd
commit
e0ff940e1a
87 changed files with 4936 additions and 1455 deletions
@ -0,0 +1,196 @@ |
||||
/* ioapi.h -- IO base function header for compress/uncompress .zip
|
||||
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications for Zip64 support
|
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
|
||||
For more info read MiniZip_info.txt |
||||
|
||||
Changes |
||||
|
||||
Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this) |
||||
Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux. |
||||
More if/def section may be needed to support other platforms |
||||
Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows.
|
||||
(but you should use iowin32.c for windows instead) |
||||
|
||||
*/ |
||||
|
||||
#ifndef _ZLIBIOAPI64_H |
||||
#define _ZLIBIOAPI64_H |
||||
|
||||
#include "zlib.h" |
||||
|
||||
#ifndef _WIN32 |
||||
|
||||
// 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.
|
||||
|
||||
#ifndef __USE_FILE_OFFSET64 |
||||
#define __USE_FILE_OFFSET64 |
||||
#endif |
||||
#ifndef __USE_LARGEFILE64 |
||||
#define __USE_LARGEFILE64 |
||||
#endif |
||||
#ifndef _LARGEFILE64_SOURCE |
||||
#define _LARGEFILE64_SOURCE |
||||
#endif |
||||
#ifndef _FILE_OFFSET_BIT |
||||
#define _FILE_OFFSET_BIT 64 |
||||
#endif |
||||
#endif |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
|
||||
|
||||
#ifdef _MSC_VER |
||||
#define fopen64 fopen |
||||
#if _MSC_VER >= 1400 |
||||
#define ftello64 _ftelli64 |
||||
#define fseeko64 _fseeki64 |
||||
#else // old MSC
|
||||
#define ftello64 ftell |
||||
#define fseeko64 fseek |
||||
#endif |
||||
#endif |
||||
|
||||
/*
|
||||
#ifndef ZPOS64_T |
||||
#ifdef _WIN32 |
||||
#define ZPOS64_T fpos_t |
||||
#else |
||||
#include <stdint.h> |
||||
#define ZPOS64_T uint64_t |
||||
#endif |
||||
#endif |
||||
*/ |
||||
|
||||
#ifdef HAVE_MINIZIP64_CONF_H |
||||
#include "mz64conf.h" |
||||
#endif |
||||
|
||||
/* a type choosen by DEFINE */ |
||||
#ifdef HAVE_64BIT_INT_CUSTOM |
||||
typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; |
||||
#else |
||||
#ifdef HAS_STDINT_H |
||||
#include "stdint.h" |
||||
typedef uint64_t ZPOS64_T; |
||||
#else |
||||
|
||||
|
||||
#if defined(_MSC_VER) || defined(__BORLANDC__) |
||||
typedef unsigned __int64 ZPOS64_T; |
||||
#else |
||||
typedef unsigned long long int ZPOS64_T; |
||||
#endif |
||||
#endif |
||||
#endif |
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
|
||||
#define ZLIB_FILEFUNC_SEEK_CUR (1) |
||||
#define ZLIB_FILEFUNC_SEEK_END (2) |
||||
#define ZLIB_FILEFUNC_SEEK_SET (0) |
||||
|
||||
#define ZLIB_FILEFUNC_MODE_READ (1) |
||||
#define ZLIB_FILEFUNC_MODE_WRITE (2) |
||||
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) |
||||
|
||||
#define ZLIB_FILEFUNC_MODE_EXISTING (4) |
||||
#define ZLIB_FILEFUNC_MODE_CREATE (8) |
||||
|
||||
|
||||
#ifndef ZCALLBACK |
||||
#if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) |
||||
#define ZCALLBACK CALLBACK |
||||
#else |
||||
#define ZCALLBACK |
||||
#endif |
||||
#endif |
||||
|
||||
|
||||
|
||||
|
||||
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); |
||||
typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); |
||||
typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); |
||||
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); |
||||
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); |
||||
|
||||
typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); |
||||
typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); |
||||
|
||||
|
||||
/* here is the "old" 32 bits structure structure */ |
||||
typedef struct zlib_filefunc_def_s |
||||
{ |
||||
open_file_func zopen_file; |
||||
read_file_func zread_file; |
||||
write_file_func zwrite_file; |
||||
tell_file_func ztell_file; |
||||
seek_file_func zseek_file; |
||||
close_file_func zclose_file; |
||||
testerror_file_func zerror_file; |
||||
voidpf opaque; |
||||
} zlib_filefunc_def; |
||||
|
||||
typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); |
||||
typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); |
||||
typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); |
||||
|
||||
typedef struct zlib_filefunc64_def_s |
||||
{ |
||||
open64_file_func zopen64_file; |
||||
read_file_func zread_file; |
||||
write_file_func zwrite_file; |
||||
tell64_file_func ztell64_file; |
||||
seek64_file_func zseek64_file; |
||||
close_file_func zclose_file; |
||||
testerror_file_func zerror_file; |
||||
voidpf opaque; |
||||
} zlib_filefunc64_def; |
||||
|
||||
void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def)); |
||||
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); |
||||
|
||||
/* now internal definition, only for zip.c and unzip.h */ |
||||
typedef struct zlib_filefunc64_32_def_s |
||||
{ |
||||
zlib_filefunc64_def zfile_func64; |
||||
open_file_func zopen32_file; |
||||
tell_file_func ztell32_file; |
||||
seek_file_func zseek32_file; |
||||
} zlib_filefunc64_32_def; |
||||
|
||||
|
||||
#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) |
||||
#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) |
||||
//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))
|
||||
//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))
|
||||
#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) |
||||
#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) |
||||
|
||||
voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); |
||||
long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); |
||||
ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); |
||||
|
||||
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32); |
||||
|
||||
#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) |
||||
#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) |
||||
#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif |
@ -0,0 +1,389 @@ |
||||
/* iowin32.c -- IO base function header for compress/uncompress .zip
|
||||
Version 1.1, January 7th, 2010 |
||||
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications for Zip64 support
|
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
|
||||
For more info read MiniZip_info.txt |
||||
|
||||
*/ |
||||
|
||||
#include <stdlib.h> |
||||
|
||||
#include "zlib.h" |
||||
#include "ioapi.h" |
||||
#include "iowin32.h" |
||||
|
||||
#ifndef INVALID_HANDLE_VALUE |
||||
#define INVALID_HANDLE_VALUE (0xFFFFFFFF) |
||||
#endif |
||||
|
||||
#ifndef INVALID_SET_FILE_POINTER |
||||
#define INVALID_SET_FILE_POINTER ((DWORD)-1) |
||||
#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)); |
||||
ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); |
||||
long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); |
||||
int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); |
||||
int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); |
||||
|
||||
typedef struct |
||||
{ |
||||
HANDLE hf; |
||||
int error; |
||||
} WIN32FILE_IOWIN; |
||||
|
||||
|
||||
static void win32_translate_open_mode(int mode, |
||||
DWORD* lpdwDesiredAccess, |
||||
DWORD* lpdwCreationDisposition, |
||||
DWORD* lpdwShareMode, |
||||
DWORD* lpdwFlagsAndAttributes) |
||||
{ |
||||
*lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0; |
||||
|
||||
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) |
||||
{ |
||||
*lpdwDesiredAccess = GENERIC_READ; |
||||
*lpdwCreationDisposition = OPEN_EXISTING; |
||||
*lpdwShareMode = FILE_SHARE_READ; |
||||
} |
||||
else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) |
||||
{ |
||||
*lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; |
||||
*lpdwCreationDisposition = OPEN_EXISTING; |
||||
} |
||||
else if (mode & ZLIB_FILEFUNC_MODE_CREATE) |
||||
{ |
||||
*lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; |
||||
*lpdwCreationDisposition = CREATE_ALWAYS; |
||||
} |
||||
} |
||||
|
||||
static voidpf win32_build_iowin(HANDLE hFile) |
||||
{ |
||||
voidpf ret=NULL; |
||||
|
||||
if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE)) |
||||
{ |
||||
WIN32FILE_IOWIN w32fiow; |
||||
w32fiow.hf = hFile; |
||||
w32fiow.error = 0; |
||||
ret = malloc(sizeof(WIN32FILE_IOWIN)); |
||||
|
||||
if (ret==NULL) |
||||
CloseHandle(hFile); |
||||
else |
||||
*((WIN32FILE_IOWIN*)ret) = w32fiow; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode) |
||||
{ |
||||
const char* mode_fopen = NULL; |
||||
DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; |
||||
HANDLE hFile = NULL; |
||||
|
||||
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); |
||||
|
||||
if ((filename!=NULL) && (dwDesiredAccess != 0)) |
||||
hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
||||
|
||||
return win32_build_iowin(hFile); |
||||
} |
||||
|
||||
|
||||
voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode) |
||||
{ |
||||
const char* mode_fopen = NULL; |
||||
DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; |
||||
HANDLE hFile = NULL; |
||||
|
||||
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); |
||||
|
||||
if ((filename!=NULL) && (dwDesiredAccess != 0)) |
||||
hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
||||
|
||||
return win32_build_iowin(hFile); |
||||
} |
||||
|
||||
|
||||
voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode) |
||||
{ |
||||
const char* mode_fopen = NULL; |
||||
DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; |
||||
HANDLE hFile = NULL; |
||||
|
||||
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); |
||||
|
||||
if ((filename!=NULL) && (dwDesiredAccess != 0)) |
||||
hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
||||
|
||||
return win32_build_iowin(hFile); |
||||
} |
||||
|
||||
|
||||
voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode) |
||||
{ |
||||
const char* mode_fopen = NULL; |
||||
DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; |
||||
HANDLE hFile = NULL; |
||||
|
||||
win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); |
||||
|
||||
if ((filename!=NULL) && (dwDesiredAccess != 0)) |
||||
hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
||||
|
||||
return win32_build_iowin(hFile); |
||||
} |
||||
|
||||
|
||||
uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size) |
||||
{ |
||||
uLong ret=0; |
||||
HANDLE hFile = NULL; |
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
||||
|
||||
if (hFile != NULL) |
||||
{ |
||||
if (!ReadFile(hFile, buf, size, &ret, NULL)) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
if (dwErr == ERROR_HANDLE_EOF) |
||||
dwErr = 0; |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
} |
||||
} |
||||
|
||||
return ret; |
||||
} |
||||
|
||||
|
||||
uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size) |
||||
{ |
||||
uLong ret=0; |
||||
HANDLE hFile = NULL; |
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
||||
|
||||
if (hFile != NULL) |
||||
{ |
||||
if (!WriteFile(hFile, buf, size, &ret, NULL)) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
if (dwErr == ERROR_HANDLE_EOF) |
||||
dwErr = 0; |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
} |
||||
} |
||||
|
||||
return ret; |
||||
} |
||||
|
||||
long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) |
||||
{ |
||||
long ret=-1; |
||||
HANDLE hFile = NULL; |
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
||||
if (hFile != NULL) |
||||
{ |
||||
DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT); |
||||
if (dwSet == INVALID_SET_FILE_POINTER) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
ret = -1; |
||||
} |
||||
else |
||||
ret=(long)dwSet; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) |
||||
{ |
||||
ZPOS64_T ret= (ZPOS64_T)-1; |
||||
HANDLE hFile = NULL; |
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream)->hf; |
||||
|
||||
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)) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
ret = (ZPOS64_T)-1; |
||||
} |
||||
else |
||||
ret=li.QuadPart; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
|
||||
long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin) |
||||
{ |
||||
DWORD dwMoveMethod=0xFFFFFFFF; |
||||
HANDLE hFile = NULL; |
||||
|
||||
long ret=-1; |
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
||||
switch (origin) |
||||
{ |
||||
case ZLIB_FILEFUNC_SEEK_CUR : |
||||
dwMoveMethod = FILE_CURRENT; |
||||
break; |
||||
case ZLIB_FILEFUNC_SEEK_END : |
||||
dwMoveMethod = FILE_END; |
||||
break; |
||||
case ZLIB_FILEFUNC_SEEK_SET : |
||||
dwMoveMethod = FILE_BEGIN; |
||||
break; |
||||
default: return -1; |
||||
} |
||||
|
||||
if (hFile != NULL) |
||||
{ |
||||
DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod); |
||||
if (dwSet == INVALID_SET_FILE_POINTER) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
ret = -1; |
||||
} |
||||
else |
||||
ret=0; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin) |
||||
{ |
||||
DWORD dwMoveMethod=0xFFFFFFFF; |
||||
HANDLE hFile = NULL; |
||||
long ret=-1; |
||||
|
||||
if (stream!=NULL) |
||||
hFile = ((WIN32FILE_IOWIN*)stream)->hf; |
||||
|
||||
switch (origin) |
||||
{ |
||||
case ZLIB_FILEFUNC_SEEK_CUR : |
||||
dwMoveMethod = FILE_CURRENT; |
||||
break; |
||||
case ZLIB_FILEFUNC_SEEK_END : |
||||
dwMoveMethod = FILE_END; |
||||
break; |
||||
case ZLIB_FILEFUNC_SEEK_SET : |
||||
dwMoveMethod = FILE_BEGIN; |
||||
break; |
||||
default: return -1; |
||||
} |
||||
|
||||
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) |
||||
{ |
||||
DWORD dwErr = GetLastError(); |
||||
((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
||||
ret = -1; |
||||
} |
||||
else |
||||
ret=0; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream) |
||||
{ |
||||
int ret=-1; |
||||
|
||||
if (stream!=NULL) |
||||
{ |
||||
HANDLE hFile; |
||||
hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
||||
if (hFile != NULL) |
||||
{ |
||||
CloseHandle(hFile); |
||||
ret=0; |
||||
} |
||||
free(stream); |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream) |
||||
{ |
||||
int ret=-1; |
||||
if (stream!=NULL) |
||||
{ |
||||
ret = ((WIN32FILE_IOWIN*)stream) -> error; |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
extern void ZEXPORT fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def) |
||||
{ |
||||
pzlib_filefunc_def->zopen_file = win32_open_file_func; |
||||
pzlib_filefunc_def->zread_file = win32_read_file_func; |
||||
pzlib_filefunc_def->zwrite_file = win32_write_file_func; |
||||
pzlib_filefunc_def->ztell_file = win32_tell_file_func; |
||||
pzlib_filefunc_def->zseek_file = win32_seek_file_func; |
||||
pzlib_filefunc_def->zclose_file = win32_close_file_func; |
||||
pzlib_filefunc_def->zerror_file = win32_error_file_func; |
||||
pzlib_filefunc_def->opaque = NULL; |
||||
} |
||||
|
||||
extern void ZEXPORT fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) |
||||
{ |
||||
pzlib_filefunc_def->zopen64_file = win32_open64_file_func; |
||||
pzlib_filefunc_def->zread_file = win32_read_file_func; |
||||
pzlib_filefunc_def->zwrite_file = win32_write_file_func; |
||||
pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; |
||||
pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; |
||||
pzlib_filefunc_def->zclose_file = win32_close_file_func; |
||||
pzlib_filefunc_def->zerror_file = win32_error_file_func; |
||||
pzlib_filefunc_def->opaque = NULL; |
||||
} |
||||
|
||||
|
||||
extern void ZEXPORT fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) |
||||
{ |
||||
pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA; |
||||
pzlib_filefunc_def->zread_file = win32_read_file_func; |
||||
pzlib_filefunc_def->zwrite_file = win32_write_file_func; |
||||
pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; |
||||
pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; |
||||
pzlib_filefunc_def->zclose_file = win32_close_file_func; |
||||
pzlib_filefunc_def->zerror_file = win32_error_file_func; |
||||
pzlib_filefunc_def->opaque = NULL; |
||||
} |
||||
|
||||
|
||||
extern void ZEXPORT fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) |
||||
{ |
||||
pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; |
||||
pzlib_filefunc_def->zread_file = win32_read_file_func; |
||||
pzlib_filefunc_def->zwrite_file = win32_write_file_func; |
||||
pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; |
||||
pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; |
||||
pzlib_filefunc_def->zclose_file = win32_close_file_func; |
||||
pzlib_filefunc_def->zerror_file = win32_error_file_func; |
||||
pzlib_filefunc_def->opaque = NULL; |
||||
} |
@ -0,0 +1,28 @@ |
||||
/* iowin32.h -- IO base function header for compress/uncompress .zip
|
||||
Version 1.1, January 7th, 2010 |
||||
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications for Zip64 support
|
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
|
||||
For more info read MiniZip_info.txt |
||||
|
||||
*/ |
||||
|
||||
#include <windows.h> |
||||
|
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
extern void ZEXPORT fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); |
||||
extern void ZEXPORT fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); |
||||
extern void ZEXPORT fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); |
||||
extern void ZEXPORT fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
@ -0,0 +1,649 @@ |
||||
/*
|
||||
miniunz.c |
||||
Version 1.1, January 7th, 2010 |
||||
sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications of Unzip for Zip64 |
||||
Copyright (C) 2007-2008 Even Rouault |
||||
|
||||
Modifications for Zip64 support on both zip and unzip |
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
*/ |
||||
|
||||
#include "unzip.h" |
||||
|
||||
#ifndef _WIN32 |
||||
#ifndef __USE_FILE_OFFSET64 |
||||
#define __USE_FILE_OFFSET64 |
||||
#endif |
||||
#ifndef __USE_LARGEFILE64 |
||||
#define __USE_LARGEFILE64 |
||||
#endif |
||||
#ifndef _LARGEFILE64_SOURCE |
||||
#define _LARGEFILE64_SOURCE |
||||
#endif |
||||
#ifndef _FILE_OFFSET_BIT |
||||
#define _FILE_OFFSET_BIT 64 |
||||
#endif |
||||
#endif |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include <time.h> |
||||
#include <errno.h> |
||||
#include <fcntl.h> |
||||
|
||||
#ifdef unix |
||||
# include <unistd.h> |
||||
# include <utime.h> |
||||
#else |
||||
# include <direct.h> |
||||
# include <io.h> |
||||
#endif |
||||
|
||||
|
||||
#define CASESENSITIVITY (0) |
||||
#define WRITEBUFFERSIZE (8192) |
||||
#define MAXFILENAME (256) |
||||
|
||||
#ifdef _WIN32 |
||||
#define USEWIN32IOAPI |
||||
#include "iowin32.h" |
||||
#endif |
||||
/*
|
||||
mini unzip, demo of unzip package |
||||
|
||||
usage : |
||||
Usage : miniunz [-exvlo] file.zip [file_to_extract] [-d extractdir] |
||||
|
||||
list the file in the zipfile, and print the content of FILE_ID.ZIP or README.TXT |
||||
if it exists |
||||
*/ |
||||
|
||||
|
||||
/* change_file_date : change the date/time of a file
|
||||
filename : the filename of the file where date/time must be modified |
||||
dosdate : the new date at the MSDos format (4 bytes) |
||||
tmu_date : the SAME new date at the tm_unz format */ |
||||
void change_file_date(filename,dosdate,tmu_date) |
||||
const char *filename; |
||||
uLong dosdate; |
||||
tm_unz tmu_date; |
||||
{ |
||||
#ifdef _WIN32 |
||||
HANDLE hFile; |
||||
FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite; |
||||
|
||||
hFile = CreateFileA(filename,GENERIC_READ | GENERIC_WRITE, |
||||
0,NULL,OPEN_EXISTING,0,NULL); |
||||
GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite); |
||||
DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal); |
||||
LocalFileTimeToFileTime(&ftLocal,&ftm); |
||||
SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); |
||||
CloseHandle(hFile); |
||||
#else |
||||
#ifdef unix |
||||
struct utimbuf ut; |
||||
struct tm newdate; |
||||
newdate.tm_sec = tmu_date.tm_sec; |
||||
newdate.tm_min=tmu_date.tm_min; |
||||
newdate.tm_hour=tmu_date.tm_hour; |
||||
newdate.tm_mday=tmu_date.tm_mday; |
||||
newdate.tm_mon=tmu_date.tm_mon; |
||||
if (tmu_date.tm_year > 1900) |
||||
newdate.tm_year=tmu_date.tm_year - 1900; |
||||
else |
||||
newdate.tm_year=tmu_date.tm_year ; |
||||
newdate.tm_isdst=-1; |
||||
|
||||
ut.actime=ut.modtime=mktime(&newdate); |
||||
utime(filename,&ut); |
||||
#endif |
||||
#endif |
||||
} |
||||
|
||||
|
||||
/* mymkdir and change_file_date are not 100 % portable
|
||||
As I don't know well Unix, I wait feedback for the unix portion */ |
||||
|
||||
int mymkdir(dirname) |
||||
const char* dirname; |
||||
{ |
||||
int ret=0; |
||||
#ifdef _WIN32 |
||||
ret = _mkdir(dirname); |
||||
#else |
||||
#ifdef unix |
||||
ret = mkdir (dirname,0775); |
||||
#endif |
||||
#endif |
||||
return ret; |
||||
} |
||||
|
||||
int makedir (newdir) |
||||
char *newdir; |
||||
{ |
||||
char *buffer ; |
||||
char *p; |
||||
int len = (int)strlen(newdir); |
||||
|
||||
if (len <= 0) |
||||
return 0; |
||||
|
||||
buffer = (char*)malloc(len+1); |
||||
if (buffer==NULL) |
||||
{ |
||||
printf("Error allocating memory\n"); |
||||
return UNZ_INTERNALERROR; |
||||
} |
||||
strcpy(buffer,newdir); |
||||
|
||||
if (buffer[len-1] == '/') { |
||||
buffer[len-1] = '\0'; |
||||
} |
||||
if (mymkdir(buffer) == 0) |
||||
{ |
||||
free(buffer); |
||||
return 1; |
||||
} |
||||
|
||||
p = buffer+1; |
||||
while (1) |
||||
{ |
||||
char hold; |
||||
|
||||
while(*p && *p != '\\' && *p != '/') |
||||
p++; |
||||
hold = *p; |
||||
*p = 0; |
||||
if ((mymkdir(buffer) == -1) && (errno == ENOENT)) |
||||
{ |
||||
printf("couldn't create directory %s\n",buffer); |
||||
free(buffer); |
||||
return 0; |
||||
} |
||||
if (hold == 0) |
||||
break; |
||||
*p++ = hold; |
||||
} |
||||
free(buffer); |
||||
return 1; |
||||
} |
||||
|
||||
void do_banner() |
||||
{ |
||||
printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n"); |
||||
printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); |
||||
} |
||||
|
||||
void do_help() |
||||
{ |
||||
printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \
|
||||
" -e Extract without pathname (junk paths)\n" \
|
||||
" -x Extract with pathname\n" \
|
||||
" -v list files\n" \
|
||||
" -l list files\n" \
|
||||
" -d directory to extract into\n" \
|
||||
" -o overwrite files without prompting\n" \
|
||||
" -p extract crypted file using password\n\n"); |
||||
} |
||||
|
||||
void Display64BitsSize(ZPOS64_T n, int size_char) |
||||
{ |
||||
/* to avoid compatibility problem , we do here the conversion */ |
||||
char number[21]; |
||||
int offset=19; |
||||
int pos_string = 19; |
||||
number[20]=0; |
||||
for (;;) { |
||||
number[offset]=(char)((n%10)+'0'); |
||||
if (number[offset] != '0') |
||||
pos_string=offset; |
||||
n/=10; |
||||
if (offset==0) |
||||
break; |
||||
offset--; |
||||
} |
||||
{ |
||||
int size_display_string = 19-pos_string; |
||||
while (size_char > size_display_string) |
||||
{ |
||||
size_char--; |
||||
printf(" "); |
||||
} |
||||
} |
||||
|
||||
printf("%s",&number[pos_string]); |
||||
} |
||||
|
||||
int do_list(uf) |
||||
unzFile uf; |
||||
{ |
||||
uLong i; |
||||
unz_global_info64 gi; |
||||
int err; |
||||
|
||||
err = unzGetGlobalInfo64(uf,&gi); |
||||
if (err!=UNZ_OK) |
||||
printf("error %d with zipfile in unzGetGlobalInfo \n",err); |
||||
printf(" Length Method Size Ratio Date Time CRC-32 Name\n"); |
||||
printf(" ------ ------ ---- ----- ---- ---- ------ ----\n"); |
||||
for (i=0;i<gi.number_entry;i++) |
||||
{ |
||||
char filename_inzip[256]; |
||||
unz_file_info64 file_info; |
||||
uLong ratio=0; |
||||
const char *string_method; |
||||
char charCrypt=' '; |
||||
err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0); |
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); |
||||
break; |
||||
} |
||||
if (file_info.uncompressed_size>0) |
||||
ratio = (uLong)((file_info.compressed_size*100)/file_info.uncompressed_size); |
||||
|
||||
/* display a '*' if the file is crypted */ |
||||
if ((file_info.flag & 1) != 0) |
||||
charCrypt='*'; |
||||
|
||||
if (file_info.compression_method==0) |
||||
string_method="Stored"; |
||||
else |
||||
if (file_info.compression_method==Z_DEFLATED) |
||||
{ |
||||
uInt iLevel=(uInt)((file_info.flag & 0x6)/2); |
||||
if (iLevel==0) |
||||
string_method="Defl:N"; |
||||
else if (iLevel==1) |
||||
string_method="Defl:X"; |
||||
else if ((iLevel==2) || (iLevel==3)) |
||||
string_method="Defl:F"; /* 2:fast , 3 : extra fast*/ |
||||
} |
||||
else |
||||
if (file_info.compression_method==Z_BZIP2ED) |
||||
{ |
||||
string_method="BZip2 "; |
||||
} |
||||
else |
||||
string_method="Unkn. "; |
||||
|
||||
Display64BitsSize(file_info.uncompressed_size,7); |
||||
printf(" %6s%c",string_method,charCrypt); |
||||
Display64BitsSize(file_info.compressed_size,7); |
||||
printf(" %3lu%% %2.2lu-%2.2lu-%2.2lu %2.2lu:%2.2lu %8.8lx %s\n", |
||||
ratio, |
||||
(uLong)file_info.tmu_date.tm_mon + 1, |
||||
(uLong)file_info.tmu_date.tm_mday, |
||||
(uLong)file_info.tmu_date.tm_year % 100, |
||||
(uLong)file_info.tmu_date.tm_hour,(uLong)file_info.tmu_date.tm_min, |
||||
(uLong)file_info.crc,filename_inzip); |
||||
if ((i+1)<gi.number_entry) |
||||
{ |
||||
err = unzGoToNextFile(uf); |
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzGoToNextFile\n",err); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
|
||||
int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password) |
||||
unzFile uf; |
||||
const int* popt_extract_without_path; |
||||
int* popt_overwrite; |
||||
const char* password; |
||||
{ |
||||
char filename_inzip[256]; |
||||
char* filename_withoutpath; |
||||
char* p; |
||||
int err=UNZ_OK; |
||||
FILE *fout=NULL; |
||||
void* buf; |
||||
uInt size_buf; |
||||
|
||||
unz_file_info64 file_info; |
||||
uLong ratio=0; |
||||
err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0); |
||||
|
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); |
||||
return err; |
||||
} |
||||
|
||||
size_buf = WRITEBUFFERSIZE; |
||||
buf = (void*)malloc(size_buf); |
||||
if (buf==NULL) |
||||
{ |
||||
printf("Error allocating memory\n"); |
||||
return UNZ_INTERNALERROR; |
||||
} |
||||
|
||||
p = filename_withoutpath = filename_inzip; |
||||
while ((*p) != '\0') |
||||
{ |
||||
if (((*p)=='/') || ((*p)=='\\')) |
||||
filename_withoutpath = p+1; |
||||
p++; |
||||
} |
||||
|
||||
if ((*filename_withoutpath)=='\0') |
||||
{ |
||||
if ((*popt_extract_without_path)==0) |
||||
{ |
||||
printf("creating directory: %s\n",filename_inzip); |
||||
mymkdir(filename_inzip); |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
const char* write_filename; |
||||
int skip=0; |
||||
|
||||
if ((*popt_extract_without_path)==0) |
||||
write_filename = filename_inzip; |
||||
else |
||||
write_filename = filename_withoutpath; |
||||
|
||||
err = unzOpenCurrentFilePassword(uf,password); |
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzOpenCurrentFilePassword\n",err); |
||||
} |
||||
|
||||
if (((*popt_overwrite)==0) && (err==UNZ_OK)) |
||||
{ |
||||
char rep=0; |
||||
FILE* ftestexist; |
||||
ftestexist = fopen64(write_filename,"rb"); |
||||
if (ftestexist!=NULL) |
||||
{ |
||||
fclose(ftestexist); |
||||
do |
||||
{ |
||||
char answer[128]; |
||||
int ret; |
||||
|
||||
printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ",write_filename); |
||||
ret = scanf("%1s",answer); |
||||
if (ret != 1)
|
||||
{ |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
rep = answer[0] ; |
||||
if ((rep>='a') && (rep<='z')) |
||||
rep -= 0x20; |
||||
} |
||||
while ((rep!='Y') && (rep!='N') && (rep!='A')); |
||||
} |
||||
|
||||
if (rep == 'N') |
||||
skip = 1; |
||||
|
||||
if (rep == 'A') |
||||
*popt_overwrite=1; |
||||
} |
||||
|
||||
if ((skip==0) && (err==UNZ_OK)) |
||||
{ |
||||
fout=fopen64(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)) |
||||
{ |
||||
char c=*(filename_withoutpath-1); |
||||
*(filename_withoutpath-1)='\0'; |
||||
makedir(write_filename); |
||||
*(filename_withoutpath-1)=c; |
||||
fout=fopen64(write_filename,"wb"); |
||||
} |
||||
|
||||
if (fout==NULL) |
||||
{ |
||||
printf("error opening %s\n",write_filename); |
||||
} |
||||
} |
||||
|
||||
if (fout!=NULL) |
||||
{ |
||||
printf(" extracting: %s\n",write_filename); |
||||
|
||||
do |
||||
{ |
||||
err = unzReadCurrentFile(uf,buf,size_buf); |
||||
if (err<0) |
||||
{ |
||||
printf("error %d with zipfile in unzReadCurrentFile\n",err); |
||||
break; |
||||
} |
||||
if (err>0) |
||||
if (fwrite(buf,err,1,fout)!=1) |
||||
{ |
||||
printf("error in writing extracted file\n"); |
||||
err=UNZ_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
while (err>0); |
||||
if (fout) |
||||
fclose(fout); |
||||
|
||||
if (err==0) |
||||
change_file_date(write_filename,file_info.dosDate, |
||||
file_info.tmu_date); |
||||
} |
||||
|
||||
if (err==UNZ_OK) |
||||
{ |
||||
err = unzCloseCurrentFile (uf); |
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzCloseCurrentFile\n",err); |
||||
} |
||||
} |
||||
else |
||||
unzCloseCurrentFile(uf); /* don't lose the error */ |
||||
} |
||||
|
||||
free(buf); |
||||
return err; |
||||
} |
||||
|
||||
|
||||
int do_extract(uf,opt_extract_without_path,opt_overwrite,password) |
||||
unzFile uf; |
||||
int opt_extract_without_path; |
||||
int opt_overwrite; |
||||
const char* password; |
||||
{ |
||||
uLong i; |
||||
unz_global_info64 gi; |
||||
int err; |
||||
FILE* fout=NULL; |
||||
|
||||
err = unzGetGlobalInfo64(uf,&gi); |
||||
if (err!=UNZ_OK) |
||||
printf("error %d with zipfile in unzGetGlobalInfo \n",err); |
||||
|
||||
for (i=0;i<gi.number_entry;i++) |
||||
{ |
||||
if (do_extract_currentfile(uf,&opt_extract_without_path, |
||||
&opt_overwrite, |
||||
password) != UNZ_OK) |
||||
break; |
||||
|
||||
if ((i+1)<gi.number_entry) |
||||
{ |
||||
err = unzGoToNextFile(uf); |
||||
if (err!=UNZ_OK) |
||||
{ |
||||
printf("error %d with zipfile in unzGoToNextFile\n",err); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,password) |
||||
unzFile uf; |
||||
const char* filename; |
||||
int opt_extract_without_path; |
||||
int opt_overwrite; |
||||
const char* password; |
||||
{ |
||||
int err = UNZ_OK; |
||||
if (unzLocateFile(uf,filename,CASESENSITIVITY)!=UNZ_OK) |
||||
{ |
||||
printf("file %s not found in the zipfile\n",filename); |
||||
return 2; |
||||
} |
||||
|
||||
if (do_extract_currentfile(uf,&opt_extract_without_path, |
||||
&opt_overwrite, |
||||
password) == UNZ_OK) |
||||
return 0; |
||||
else |
||||
return 1; |
||||
} |
||||
|
||||
|
||||
int main(argc,argv) |
||||
int argc; |
||||
char *argv[]; |
||||
{ |
||||
const char *zipfilename=NULL; |
||||
const char *filename_to_extract=NULL; |
||||
const char *password=NULL; |
||||
char filename_try[MAXFILENAME+16] = ""; |
||||
int i; |
||||
int ret_value=0; |
||||
int opt_do_list=0; |
||||
int opt_do_extract=1; |
||||
int opt_do_extract_withoutpath=0; |
||||
int opt_overwrite=0; |
||||
int opt_extractdir=0; |
||||
const char *dirname=NULL; |
||||
unzFile uf=NULL; |
||||
|
||||
do_banner(); |
||||
if (argc==1) |
||||
{ |
||||
do_help(); |
||||
return 0; |
||||
} |
||||
else |
||||
{ |
||||
for (i=1;i<argc;i++) |
||||
{ |
||||
if ((*argv[i])=='-') |
||||
{ |
||||
const char *p=argv[i]+1; |
||||
|
||||
while ((*p)!='\0') |
||||
{ |
||||
char c=*(p++);; |
||||
if ((c=='l') || (c=='L')) |
||||
opt_do_list = 1; |
||||
if ((c=='v') || (c=='V')) |
||||
opt_do_list = 1; |
||||
if ((c=='x') || (c=='X')) |
||||
opt_do_extract = 1; |
||||
if ((c=='e') || (c=='E')) |
||||
opt_do_extract = opt_do_extract_withoutpath = 1; |
||||
if ((c=='o') || (c=='O')) |
||||
opt_overwrite=1; |
||||
if ((c=='d') || (c=='D')) |
||||
{ |
||||
opt_extractdir=1; |
||||
dirname=argv[i+1]; |
||||
} |
||||
|
||||
if (((c=='p') || (c=='P')) && (i+1<argc)) |
||||
{ |
||||
password=argv[i+1]; |
||||
i++; |
||||
} |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (zipfilename == NULL) |
||||
zipfilename = argv[i]; |
||||
else if ((filename_to_extract==NULL) && (!opt_extractdir)) |
||||
filename_to_extract = argv[i] ; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (zipfilename!=NULL) |
||||
{ |
||||
|
||||
# ifdef USEWIN32IOAPI |
||||
zlib_filefunc64_def ffunc; |
||||
# endif |
||||
|
||||
strncpy(filename_try, zipfilename,MAXFILENAME-1); |
||||
/* strncpy doesnt append the trailing NULL, of the string is too long. */ |
||||
filename_try[ MAXFILENAME ] = '\0'; |
||||
|
||||
# ifdef USEWIN32IOAPI |
||||
fill_win32_filefunc64A(&ffunc); |
||||
uf = unzOpen2_64(zipfilename,&ffunc); |
||||
# else |
||||
uf = unzOpen64(zipfilename); |
||||
# endif |
||||
if (uf==NULL) |
||||
{ |
||||
strcat(filename_try,".zip"); |
||||
# ifdef USEWIN32IOAPI |
||||
uf = unzOpen2_64(filename_try,&ffunc); |
||||
# else |
||||
uf = unzOpen64(filename_try); |
||||
# endif |
||||
} |
||||
} |
||||
|
||||
if (uf==NULL) |
||||
{ |
||||
printf("Cannot open %s or %s.zip\n",zipfilename,zipfilename); |
||||
return 1; |
||||
} |
||||
printf("%s opened\n",filename_try); |
||||
|
||||
if (opt_do_list==1) |
||||
ret_value = do_list(uf); |
||||
else if (opt_do_extract==1) |
||||
{ |
||||
#ifdef _WIN32 |
||||
if (opt_extractdir && _chdir(dirname))
|
||||
#else |
||||
if (opt_extractdir && chdir(dirname))
|
||||
#endif |
||||
{ |
||||
printf("Error changing into %s, aborting\n", dirname); |
||||
exit(-1); |
||||
} |
||||
|
||||
if (filename_to_extract == NULL) |
||||
ret_value = do_extract(uf, opt_do_extract_withoutpath, opt_overwrite, password); |
||||
else |
||||
ret_value = do_extract_onefile(uf, filename_to_extract, opt_do_extract_withoutpath, opt_overwrite, password); |
||||
} |
||||
|
||||
unzClose(uf); |
||||
|
||||
return ret_value; |
||||
} |
@ -0,0 +1,508 @@ |
||||
/*
|
||||
minizip.c |
||||
Version 1.1, January 7th, 2010 |
||||
sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications of Unzip for Zip64 |
||||
Copyright (C) 2007-2008 Even Rouault |
||||
|
||||
Modifications for Zip64 support on both zip and unzip |
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
*/ |
||||
|
||||
#include "zip.h" |
||||
|
||||
#ifndef _WIN32 |
||||
#ifndef __USE_FILE_OFFSET64 |
||||
#define __USE_FILE_OFFSET64 |
||||
#endif |
||||
#ifndef __USE_LARGEFILE64 |
||||
#define __USE_LARGEFILE64 |
||||
#endif |
||||
#ifndef _LARGEFILE64_SOURCE |
||||
#define _LARGEFILE64_SOURCE |
||||
#endif |
||||
#ifndef _FILE_OFFSET_BIT |
||||
#define _FILE_OFFSET_BIT 64 |
||||
#endif |
||||
#endif |
||||
|
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include <time.h> |
||||
#include <errno.h> |
||||
#include <fcntl.h> |
||||
|
||||
#ifdef unix |
||||
# include <unistd.h> |
||||
# include <utime.h> |
||||
# include <sys/types.h> |
||||
# include <sys/stat.h> |
||||
#else |
||||
# include <direct.h> |
||||
# include <io.h> |
||||
#endif |
||||
|
||||
|
||||
#ifdef _WIN32 |
||||
#define USEWIN32IOAPI |
||||
#include "iowin32.h" |
||||
#endif |
||||
|
||||
|
||||
|
||||
#define WRITEBUFFERSIZE (16384) |
||||
#define MAXFILENAME (256) |
||||
|
||||
#ifdef _WIN32 |
||||
uLong filetime(f, tmzip, dt) |
||||
char *f; /* name of file to get info on */ |
||||
tm_zip *tmzip; /* return value: access, modific. and creation times */ |
||||
uLong *dt; /* dostime */ |
||||
{ |
||||
int ret = 0; |
||||
{ |
||||
FILETIME ftLocal; |
||||
HANDLE hFind; |
||||
WIN32_FIND_DATAA ff32; |
||||
|
||||
hFind = FindFirstFileA(f,&ff32); |
||||
if (hFind != INVALID_HANDLE_VALUE) |
||||
{ |
||||
FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); |
||||
FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); |
||||
FindClose(hFind); |
||||
ret = 1; |
||||
} |
||||
} |
||||
return ret; |
||||
} |
||||
#else |
||||
#ifdef unix |
||||
uLong filetime(f, tmzip, dt) |
||||
char *f; /* name of file to get info on */ |
||||
tm_zip *tmzip; /* return value: access, modific. and creation times */ |
||||
uLong *dt; /* dostime */ |
||||
{ |
||||
int ret=0; |
||||
struct stat s; /* results of stat() */ |
||||
struct tm* filedate; |
||||
time_t tm_t=0; |
||||
|
||||
if (strcmp(f,"-")!=0) |
||||
{ |
||||
char name[MAXFILENAME+1]; |
||||
int len = strlen(f); |
||||
if (len > MAXFILENAME) |
||||
len = MAXFILENAME; |
||||
|
||||
strncpy(name, f,MAXFILENAME-1); |
||||
/* strncpy doesnt append the trailing NULL, of the string is too long. */ |
||||
name[ MAXFILENAME ] = '\0'; |
||||
|
||||
if (name[len - 1] == '/') |
||||
name[len - 1] = '\0'; |
||||
/* not all systems allow stat'ing a file with / appended */ |
||||
if (stat(name,&s)==0) |
||||
{ |
||||
tm_t = s.st_mtime; |
||||
ret = 1; |
||||
} |
||||
} |
||||
filedate = localtime(&tm_t); |
||||
|
||||
tmzip->tm_sec = filedate->tm_sec; |
||||
tmzip->tm_min = filedate->tm_min; |
||||
tmzip->tm_hour = filedate->tm_hour; |
||||
tmzip->tm_mday = filedate->tm_mday; |
||||
tmzip->tm_mon = filedate->tm_mon ; |
||||
tmzip->tm_year = filedate->tm_year; |
||||
|
||||
return ret; |
||||
} |
||||
#else |
||||
uLong filetime(f, tmzip, dt) |
||||
char *f; /* name of file to get info on */ |
||||
tm_zip *tmzip; /* return value: access, modific. and creation times */ |
||||
uLong *dt; /* dostime */ |
||||
{ |
||||
return 0; |
||||
} |
||||
#endif |
||||
#endif |
||||
|
||||
|
||||
|
||||
|
||||
int check_exist_file(filename) |
||||
const char* filename; |
||||
{ |
||||
FILE* ftestexist; |
||||
int ret = 1; |
||||
ftestexist = fopen64(filename,"rb"); |
||||
if (ftestexist==NULL) |
||||
ret = 0; |
||||
else |
||||
fclose(ftestexist); |
||||
return ret; |
||||
} |
||||
|
||||
void do_banner() |
||||
{ |
||||
printf("MiniZip64 1.0, demo of zLib + MiniZip64 package, written by Gilles Vollant\n"); |
||||
printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n"); |
||||
printf("more info on MiniZip64 at http://result42.com/projects/MiniZip64\n\n"); |
||||
} |
||||
|
||||
void do_help() |
||||
{ |
||||
printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \
|
||||
" -o Overwrite existing file.zip\n" \
|
||||
" -a Append to existing file.zip\n" \
|
||||
" -0 Store only\n" \
|
||||
" -1 Compress faster\n" \
|
||||
" -9 Compress better\n\n" \
|
||||
" -j exclude path. store only the file name.\n\n"); |
||||
} |
||||
|
||||
/* calculate the CRC32 of a file,
|
||||
because to encrypt a file, we need known the CRC32 of the file before */ |
||||
int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) |
||||
{ |
||||
unsigned long calculate_crc=0; |
||||
int err=ZIP_OK; |
||||
FILE * fin = fopen64(filenameinzip,"rb"); |
||||
unsigned long size_read = 0; |
||||
unsigned long total_read = 0; |
||||
if (fin==NULL) |
||||
{ |
||||
err = ZIP_ERRNO; |
||||
} |
||||
|
||||
if (err == ZIP_OK) |
||||
do |
||||
{ |
||||
err = ZIP_OK; |
||||
size_read = (int)fread(buf,1,size_buf,fin); |
||||
if (size_read < size_buf) |
||||
if (feof(fin)==0) |
||||
{ |
||||
printf("error in reading %s\n",filenameinzip); |
||||
err = ZIP_ERRNO; |
||||
} |
||||
|
||||
if (size_read>0) |
||||
calculate_crc = crc32(calculate_crc,buf,size_read); |
||||
total_read += size_read; |
||||
|
||||
} while ((err == ZIP_OK) && (size_read>0)); |
||||
|
||||
if (fin) |
||||
fclose(fin); |
||||
|
||||
*result_crc=calculate_crc; |
||||
printf("file %s crc %lx\n", filenameinzip, calculate_crc); |
||||
return err; |
||||
} |
||||
|
||||
int isLargeFile(const char* filename) |
||||
{ |
||||
int largeFile = 0; |
||||
ZPOS64_T pos = 0; |
||||
FILE* pFile = fopen64(filename, "rb"); |
||||
|
||||
if(pFile != NULL) |
||||
{ |
||||
int n = fseeko64(pFile, 0, SEEK_END); |
||||
|
||||
pos = ftello64(pFile); |
||||
|
||||
printf("File : %s is %lld bytes\n", filename, pos); |
||||
|
||||
if(pos >= 0xffffffff) |
||||
largeFile = 1; |
||||
|
||||
fclose(pFile); |
||||
} |
||||
|
||||
return largeFile; |
||||
} |
||||
|
||||
int main(argc,argv) |
||||
int argc; |
||||
char *argv[]; |
||||
{ |
||||
int i; |
||||
int opt_overwrite=0; |
||||
int opt_compress_level=Z_DEFAULT_COMPRESSION; |
||||
int opt_exclude_path=0; |
||||
int zipfilenamearg = 0; |
||||
char filename_try[MAXFILENAME+16]; |
||||
int zipok; |
||||
int err=0; |
||||
int size_buf=0; |
||||
void* buf=NULL; |
||||
const char* password=NULL; |
||||
|
||||
|
||||
do_banner(); |
||||
if (argc==1) |
||||
{ |
||||
do_help(); |
||||
return 0; |
||||
} |
||||
else |
||||
{ |
||||
for (i=1;i<argc;i++) |
||||
{ |
||||
if ((*argv[i])=='-') |
||||
{ |
||||
const char *p=argv[i]+1; |
||||
|
||||
while ((*p)!='\0') |
||||
{ |
||||
char c=*(p++);; |
||||
if ((c=='o') || (c=='O')) |
||||
opt_overwrite = 1; |
||||
if ((c=='a') || (c=='A')) |
||||
opt_overwrite = 2; |
||||
if ((c>='0') && (c<='9')) |
||||
opt_compress_level = c-'0'; |
||||
if ((c=='j') || (c=='J')) |
||||
opt_exclude_path = 1; |
||||
|
||||
if (((c=='p') || (c=='P')) && (i+1<argc)) |
||||
{ |
||||
password=argv[i+1]; |
||||
i++; |
||||
} |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (zipfilenamearg == 0) |
||||
{ |
||||
zipfilenamearg = i ; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
size_buf = WRITEBUFFERSIZE; |
||||
buf = (void*)malloc(size_buf); |
||||
if (buf==NULL) |
||||
{ |
||||
printf("Error allocating memory\n"); |
||||
return ZIP_INTERNALERROR; |
||||
} |
||||
|
||||
if (zipfilenamearg==0) |
||||
{ |
||||
zipok=0; |
||||
} |
||||
else |
||||
{ |
||||
int i,len; |
||||
int dot_found=0; |
||||
|
||||
zipok = 1 ; |
||||
strncpy(filename_try, argv[zipfilenamearg],MAXFILENAME-1); |
||||
/* strncpy doesnt append the trailing NULL, of the string is too long. */ |
||||
filename_try[ MAXFILENAME ] = '\0'; |
||||
|
||||
len=(int)strlen(filename_try); |
||||
for (i=0;i<len;i++) |
||||
if (filename_try[i]=='.') |
||||
dot_found=1; |
||||
|
||||
if (dot_found==0) |
||||
strcat(filename_try,".zip"); |
||||
|
||||
if (opt_overwrite==2) |
||||
{ |
||||
/* if the file don't exist, we not append file */ |
||||
if (check_exist_file(filename_try)==0) |
||||
opt_overwrite=1; |
||||
} |
||||
else |
||||
if (opt_overwrite==0) |
||||
if (check_exist_file(filename_try)!=0) |
||||
{ |
||||
char rep=0; |
||||
do |
||||
{ |
||||
char answer[128]; |
||||
int ret; |
||||
printf("The file %s exists. Overwrite ? [y]es, [n]o, [a]ppend : ",filename_try); |
||||
ret = scanf("%1s",answer); |
||||
if (ret != 1) |
||||
{ |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
rep = answer[0] ; |
||||
if ((rep>='a') && (rep<='z')) |
||||
rep -= 0x20; |
||||
} |
||||
while ((rep!='Y') && (rep!='N') && (rep!='A')); |
||||
if (rep=='N') |
||||
zipok = 0; |
||||
if (rep=='A') |
||||
opt_overwrite = 2; |
||||
} |
||||
} |
||||
|
||||
if (zipok==1) |
||||
{ |
||||
zipFile zf; |
||||
int errclose; |
||||
# ifdef USEWIN32IOAPI |
||||
zlib_filefunc64_def ffunc; |
||||
fill_win32_filefunc64A(&ffunc); |
||||
zf = zipOpen2_64(filename_try,(opt_overwrite==2) ? 2 : 0,NULL,&ffunc); |
||||
# else |
||||
zf = zipOpen64(filename_try,(opt_overwrite==2) ? 2 : 0); |
||||
# endif |
||||
|
||||
if (zf == NULL) |
||||
{ |
||||
printf("error opening %s\n",filename_try); |
||||
err= ZIP_ERRNO; |
||||
} |
||||
else |
||||
printf("creating %s\n",filename_try); |
||||
|
||||
for (i=zipfilenamearg+1;(i<argc) && (err==ZIP_OK);i++) |
||||
{ |
||||
if (!((((*(argv[i]))=='-') || ((*(argv[i]))=='/')) && |
||||
((argv[i][1]=='o') || (argv[i][1]=='O') || |
||||
(argv[i][1]=='a') || (argv[i][1]=='A') || |
||||
(argv[i][1]=='p') || (argv[i][1]=='P') || |
||||
((argv[i][1]>='0') || (argv[i][1]<='9'))) && |
||||
(strlen(argv[i]) == 2))) |
||||
{ |
||||
FILE * fin; |
||||
int size_read; |
||||
const char* filenameinzip = argv[i]; |
||||
const char *savefilenameinzip; |
||||
zip_fileinfo zi; |
||||
unsigned long crcFile=0; |
||||
int zip64 = 0; |
||||
|
||||
zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = |
||||
zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; |
||||
zi.dosDate = 0; |
||||
zi.internal_fa = 0; |
||||
zi.external_fa = 0; |
||||
filetime(filenameinzip,&zi.tmz_date,&zi.dosDate); |
||||
|
||||
/*
|
||||
err = zipOpenNewFileInZip(zf,filenameinzip,&zi, |
||||
NULL,0,NULL,0,NULL / * comment * /, |
||||
(opt_compress_level != 0) ? Z_DEFLATED : 0, |
||||
opt_compress_level); |
||||
*/ |
||||
if ((password != NULL) && (err==ZIP_OK)) |
||||
err = getFileCrc(filenameinzip,buf,size_buf,&crcFile); |
||||
|
||||
zip64 = isLargeFile(filenameinzip); |
||||
|
||||
/* The path name saved, should not include a leading slash. */ |
||||
/*if it did, windows/xp and dynazip couldn't read the zip file. */ |
||||
savefilenameinzip = filenameinzip; |
||||
while( savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/' ) |
||||
{ |
||||
savefilenameinzip++; |
||||
} |
||||
|
||||
/*should the zip file contain any path at all?*/ |
||||
if( opt_exclude_path ) |
||||
{ |
||||
const char *tmpptr; |
||||
const char *lastslash = 0; |
||||
for( tmpptr = savefilenameinzip; *tmpptr; tmpptr++) |
||||
{ |
||||
if( *tmpptr == '\\' || *tmpptr == '/') |
||||
{ |
||||
lastslash = tmpptr; |
||||
} |
||||
} |
||||
if( lastslash != NULL ) |
||||
{ |
||||
savefilenameinzip = lastslash+1; // base filename follows last slash.
|
||||
} |
||||
} |
||||
|
||||
/**/ |
||||
err = zipOpenNewFileInZip3_64(zf,savefilenameinzip,&zi, |
||||
NULL,0,NULL,0,NULL /* comment*/, |
||||
(opt_compress_level != 0) ? Z_DEFLATED : 0, |
||||
opt_compress_level,0, |
||||
/* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ |
||||
-MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, |
||||
password,crcFile, zip64); |
||||
|
||||
if (err != ZIP_OK) |
||||
printf("error in opening %s in zipfile\n",filenameinzip); |
||||
else |
||||
{ |
||||
fin = fopen64(filenameinzip,"rb"); |
||||
if (fin==NULL) |
||||
{ |
||||
err=ZIP_ERRNO; |
||||
printf("error in opening %s for reading\n",filenameinzip); |
||||
} |
||||
} |
||||
|
||||
if (err == ZIP_OK) |
||||
do |
||||
{ |
||||
err = ZIP_OK; |
||||
size_read = (int)fread(buf,1,size_buf,fin); |
||||
if (size_read < size_buf) |
||||
if (feof(fin)==0) |
||||
{ |
||||
printf("error in reading %s\n",filenameinzip); |
||||
err = ZIP_ERRNO; |
||||
} |
||||
|
||||
if (size_read>0) |
||||
{ |
||||
err = zipWriteInFileInZip (zf,buf,size_read); |
||||
if (err<0) |
||||
{ |
||||
printf("error in writing %s in the zipfile\n", |
||||
filenameinzip); |
||||
} |
||||
|
||||
} |
||||
} while ((err == ZIP_OK) && (size_read>0)); |
||||
|
||||
if (fin) |
||||
fclose(fin); |
||||
|
||||
if (err<0) |
||||
err=ZIP_ERRNO; |
||||
else |
||||
{ |
||||
err = zipCloseFileInZip(zf); |
||||
if (err!=ZIP_OK) |
||||
printf("error in closing %s in the zipfile\n", |
||||
filenameinzip); |
||||
} |
||||
} |
||||
} |
||||
errclose = zipClose(zf,NULL); |
||||
if (errclose != ZIP_OK) |
||||
printf("error in closing %s\n",filename_try); |
||||
} |
||||
else |
||||
{ |
||||
do_help(); |
||||
} |
||||
|
||||
free(buf); |
||||
return 0; |
||||
} |
@ -0,0 +1,95 @@ |
||||
|
||||
VERSION 1.23 |
||||
|
||||
HEAPSIZE 1048576,8192 |
||||
|
||||
EXPORTS |
||||
adler32 @1 |
||||
compress @2 |
||||
crc32 @3 |
||||
deflate @4 |
||||
deflateCopy @5 |
||||
deflateEnd @6 |
||||
deflateInit2_ @7 |
||||
deflateInit_ @8 |
||||
deflateParams @9 |
||||
deflateReset @10 |
||||
deflateSetDictionary @11 |
||||
gzclose @12 |
||||
gzdopen @13 |
||||
gzerror @14 |
||||
gzflush @15 |
||||
gzopen @16 |
||||
gzread @17 |
||||
gzwrite @18 |
||||
inflate @19 |
||||
inflateEnd @20 |
||||
inflateInit2_ @21 |
||||
inflateInit_ @22 |
||||
inflateReset @23 |
||||
inflateSetDictionary @24 |
||||
inflateSync @25 |
||||
uncompress @26 |
||||
zlibVersion @27 |
||||
gzprintf @28 |
||||
gzputc @29 |
||||
gzgetc @30 |
||||
gzseek @31 |
||||
gzrewind @32 |
||||
gztell @33 |
||||
gzeof @34 |
||||
gzsetparams @35 |
||||
zError @36 |
||||
inflateSyncPoint @37 |
||||
get_crc_table @38 |
||||
compress2 @39 |
||||
gzputs @40 |
||||
gzgets @41 |
||||
inflateCopy @42 |
||||
inflateBackInit_ @43 |
||||
inflateBack @44 |
||||
inflateBackEnd @45 |
||||
compressBound @46 |
||||
deflateBound @47 |
||||
gzclearerr @48 |
||||
gzungetc @49 |
||||
zlibCompileFlags @50 |
||||
deflatePrime @51 |
||||
|
||||
unzOpen @61 |
||||
unzClose @62 |
||||
unzGetGlobalInfo @63 |
||||
unzGetCurrentFileInfo @64 |
||||
unzGoToFirstFile @65 |
||||
unzGoToNextFile @66 |
||||
unzOpenCurrentFile @67 |
||||
unzReadCurrentFile @68 |
||||
unzOpenCurrentFile3 @69 |
||||
unztell @70 |
||||
unzeof @71 |
||||
unzCloseCurrentFile @72 |
||||
unzGetGlobalComment @73 |
||||
unzStringFileNameCompare @74 |
||||
unzLocateFile @75 |
||||
unzGetLocalExtrafield @76 |
||||
unzOpen2 @77 |
||||
unzOpenCurrentFile2 @78 |
||||
unzOpenCurrentFilePassword @79 |
||||
|
||||
zipOpen @80 |
||||
zipOpenNewFileInZip @81 |
||||
zipWriteInFileInZip @82 |
||||
zipCloseFileInZip @83 |
||||
zipClose @84 |
||||
zipOpenNewFileInZip2 @86 |
||||
zipCloseFileInZipRaw @87 |
||||
zipOpen2 @88 |
||||
zipOpenNewFileInZip3 @89 |
||||
|
||||
unzGetFilePos @100 |
||||
unzGoToFilePos @101 |
||||
|
||||
fill_win32_filefunc @110 |
||||
fill_win32_filefunc64 @111 |
||||
fill_win32_filefunc64A @112 |
||||
fill_win32_filefunc64W @113 |
@ -0,0 +1,881 @@ |
||||
<?xml version="1.0" encoding="Windows-1252"?> |
||||
<VisualStudioProject |
||||
ProjectType="Visual C++" |
||||
Version="8,00" |
||||
Name="zlibstat" |
||||
ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" |
||||
> |
||||
<Platforms> |
||||
<Platform |
||||
Name="Win32" |
||||
/> |
||||
<Platform |
||||
Name="x64" |
||||
/> |
||||
<Platform |
||||
Name="Itanium" |
||||
/> |
||||
</Platforms> |
||||
<ToolFiles> |
||||
</ToolFiles> |
||||
<Configurations> |
||||
<Configuration |
||||
Name="Debug|Win32" |
||||
OutputDirectory="x86\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="0" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="1" |
||||
BufferSecurityCheck="false" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
Detect64BitPortabilityProblems="true" |
||||
DebugInformationFormat="1" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Debug|x64" |
||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="3" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="0" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="3" |
||||
BufferSecurityCheck="false" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
Detect64BitPortabilityProblems="true" |
||||
DebugInformationFormat="1" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Debug|Itanium" |
||||
OutputDirectory="ia64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="2" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="0" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="3" |
||||
BufferSecurityCheck="false" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
Detect64BitPortabilityProblems="true" |
||||
DebugInformationFormat="1" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Release|Win32" |
||||
OutputDirectory="x86\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="0" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" |
||||
AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj " |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Release|x64" |
||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="3" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF;WIN64" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="2" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" |
||||
AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj " |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Release|Itanium" |
||||
OutputDirectory="ia64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="2" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="2" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="ReleaseWithoutAsm|Win32" |
||||
OutputDirectory="x86\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="0" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="ReleaseWithoutAsm|x64" |
||||
OutputDirectory="x64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="3" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="2" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="ReleaseWithoutAsm|Itanium" |
||||
OutputDirectory="ia64\ZlibStat$(ConfigurationName)" |
||||
IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp" |
||||
ConfigurationType="4" |
||||
InheritedPropertySheets="UpgradeFromVC70.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="2" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="..\..\..;..\..\masmx86" |
||||
PreprocessorDefinitions="ZLIB_WINAPI;NO_snprintf;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64" |
||||
StringPooling="true" |
||||
ExceptionHandling="0" |
||||
RuntimeLibrary="2" |
||||
BufferSecurityCheck="false" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile="$(IntDir)/zlibstat.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(OutDir)\" |
||||
WarningLevel="3" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
Culture="1036" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLibrarianTool" |
||||
AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB" |
||||
OutputFile="$(OutDir)\zlibstat.lib" |
||||
SuppressStartupBanner="true" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
</Configurations> |
||||
<References> |
||||
</References> |
||||
<Files> |
||||
<Filter |
||||
Name="Source Files" |
||||
> |
||||
<File |
||||
RelativePath="..\..\..\adler32.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\compress.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\crc32.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\deflate.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\masmx86\gvmat32c.c" |
||||
> |
||||
<FileConfiguration |
||||
Name="Debug|x64" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Debug|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Release|x64" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Release|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="ReleaseWithoutAsm|x64" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="ReleaseWithoutAsm|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\gzclose.c"> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\gzio.c"> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\gzlib.c"> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\gzread.c"> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\gzwrite.c"> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\infback.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\masmx64\inffas8664.c" |
||||
> |
||||
<FileConfiguration |
||||
Name="Debug|Win32" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Debug|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Release|Win32" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="Release|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="ReleaseWithoutAsm|Win32" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
<FileConfiguration |
||||
Name="ReleaseWithoutAsm|Itanium" |
||||
ExcludedFromBuild="true" |
||||
> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
/> |
||||
</FileConfiguration> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\inffast.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\inflate.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\inftrees.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\minizip\ioapi.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\trees.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\uncompr.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\minizip\unzip.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\minizip\zip.c" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath=".\zlib.rc" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath=".\zlibvc.def" |
||||
> |
||||
</File> |
||||
<File |
||||
RelativePath="..\..\..\zutil.c" |
||||
> |
||||
</File> |
||||
</Filter> |
||||
</Files> |
||||
<Globals> |
||||
</Globals> |
||||
</VisualStudioProject> |
@ -0,0 +1,95 @@ |
||||
|
||||
VERSION 1.23 |
||||
|
||||
HEAPSIZE 1048576,8192 |
||||
|
||||
EXPORTS |
||||
adler32 @1 |
||||
compress @2 |
||||
crc32 @3 |
||||
deflate @4 |
||||
deflateCopy @5 |
||||
deflateEnd @6 |
||||
deflateInit2_ @7 |
||||
deflateInit_ @8 |
||||
deflateParams @9 |
||||
deflateReset @10 |
||||
deflateSetDictionary @11 |
||||
gzclose @12 |
||||
gzdopen @13 |
||||
gzerror @14 |
||||
gzflush @15 |
||||
gzopen @16 |
||||
gzread @17 |
||||
gzwrite @18 |
||||
inflate @19 |
||||
inflateEnd @20 |
||||
inflateInit2_ @21 |
||||
inflateInit_ @22 |
||||
inflateReset @23 |
||||
inflateSetDictionary @24 |
||||
inflateSync @25 |
||||
uncompress @26 |
||||
zlibVersion @27 |
||||
gzprintf @28 |
||||
gzputc @29 |
||||
gzgetc @30 |
||||
gzseek @31 |
||||
gzrewind @32 |
||||
gztell @33 |
||||
gzeof @34 |
||||
gzsetparams @35 |
||||
zError @36 |
||||
inflateSyncPoint @37 |
||||
get_crc_table @38 |
||||
compress2 @39 |
||||
gzputs @40 |
||||
gzgets @41 |
||||
inflateCopy @42 |
||||
inflateBackInit_ @43 |
||||
inflateBack @44 |
||||
inflateBackEnd @45 |
||||
compressBound @46 |
||||
deflateBound @47 |
||||
gzclearerr @48 |
||||
gzungetc @49 |
||||
zlibCompileFlags @50 |
||||
deflatePrime @51 |
||||
|
||||
unzOpen @61 |
||||
unzClose @62 |
||||
unzGetGlobalInfo @63 |
||||
unzGetCurrentFileInfo @64 |
||||
unzGoToFirstFile @65 |
||||
unzGoToNextFile @66 |
||||
unzOpenCurrentFile @67 |
||||
unzReadCurrentFile @68 |
||||
unzOpenCurrentFile3 @69 |
||||
unztell @70 |
||||
unzeof @71 |
||||
unzCloseCurrentFile @72 |
||||
unzGetGlobalComment @73 |
||||
unzStringFileNameCompare @74 |
||||
unzLocateFile @75 |
||||
unzGetLocalExtrafield @76 |
||||
unzOpen2 @77 |
||||
unzOpenCurrentFile2 @78 |
||||
unzOpenCurrentFilePassword @79 |
||||
|
||||
zipOpen @80 |
||||
zipOpenNewFileInZip @81 |
||||
zipWriteInFileInZip @82 |
||||
zipCloseFileInZip @83 |
||||
zipClose @84 |
||||
zipOpenNewFileInZip2 @86 |
||||
zipCloseFileInZipRaw @87 |
||||
zipOpen2 @88 |
||||
zipOpenNewFileInZip3 @89 |
||||
|
||||
unzGetFilePos @100 |
||||
unzGoToFilePos @101 |
||||
|
||||
fill_win32_filefunc @110 |
||||
fill_win32_filefunc64 @111 |
||||
fill_win32_filefunc64A @112 |
||||
fill_win32_filefunc64W @113 |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +1,2 @@ |
||||
ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm |
||||
ml /coff /Zi /c /Flinffas32.lst inffas32.asm |
||||
ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm |
||||
ml /coff /Zi /c /Flinffas32.lst inffas32.asm |
||||
|
Binary file not shown.
Binary file not shown.
@ -1,25 +1,25 @@ |
||||
CC=cc
|
||||
CFLAGS=-O -I../..
|
||||
|
||||
UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
|
||||
ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a
|
||||
|
||||
.c.o: |
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: miniunz minizip |
||||
|
||||
miniunz: $(UNZ_OBJS) |
||||
$(CC) $(CFLAGS) -o $@ $(UNZ_OBJS)
|
||||
|
||||
minizip: $(ZIP_OBJS) |
||||
$(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
|
||||
|
||||
test: miniunz minizip |
||||
./minizip test readme.txt
|
||||
./miniunz -l test.zip
|
||||
mv readme.txt readme.old
|
||||
./miniunz test.zip
|
||||
|
||||
clean: |
||||
/bin/rm -f *.o *~ minizip miniunz
|
||||
CC=cc
|
||||
CFLAGS=-O -I../..
|
||||
|
||||
UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
|
||||
ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a
|
||||
|
||||
.c.o: |
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: miniunz minizip |
||||
|
||||
miniunz: $(UNZ_OBJS) |
||||
$(CC) $(CFLAGS) -o $@ $(UNZ_OBJS)
|
||||
|
||||
minizip: $(ZIP_OBJS) |
||||
$(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
|
||||
|
||||
test: miniunz minizip |
||||
./minizip test readme.txt
|
||||
./miniunz -l test.zip
|
||||
mv readme.txt readme.old
|
||||
./miniunz test.zip
|
||||
|
||||
clean: |
||||
/bin/rm -f *.o *~ minizip miniunz
|
||||
|
@ -1,7 +1,6 @@ |
||||
|
||||
MiniZip64 was derrived from MiniZip at version 1.01f |
||||
|
||||
Change in 1.0 (Okt 2009) |
||||
- **TODO - Add history** |
||||
|
||||
|
||||
|
||||
MiniZip64 was derrived from MiniZip at version 1.01f |
||||
|
||||
Change in 1.0 (Okt 2009) |
||||
- **TODO - Add history** |
||||
|
||||
|
@ -1,79 +1,79 @@ |
||||
MiniZip64 - Copyright (c) 2009-2010 - Mathias Svensson - Built from MiniZip by Gilles Vollant |
||||
|
||||
Introduction |
||||
--------------------- |
||||
MiniZip64 is built from MiniZip by Gilles Vollant ( http://www.winimage.com/zLibDll/minizip.html ) |
||||
|
||||
When adding ZIP64 support into minizip it would result into breaking compatibility with current minizip. |
||||
And since breaking compatibility in minizip is not wanted. I decided to create a fork of minizip |
||||
and create minizip64. |
||||
|
||||
Even though MiniZip64 is build from MiniZip, all functions and struct's have changed name so that it |
||||
would not collide with each other. |
||||
|
||||
|
||||
Background |
||||
--------------------- |
||||
When adding ZIP64 support I found that Even Rouault have added ZIP64 support for unzip.c into minizip |
||||
for a open source project called gdal ( http://www.gdal.org/ ) |
||||
|
||||
That was used as a starting point. And after that ZIP64 support was added to zip.c |
||||
some refactoring and code cleanup was also done. |
||||
|
||||
|
||||
Changed from MiniZip to MiniZip64 |
||||
------------------------------------- |
||||
* Filenames has got a '64' at the end of them . eg unzip.c is now called unzip64.c |
||||
* Added ZIP64 support for unzip ( by Even Rouault ) |
||||
* Added ZIP64 support for zip ( by Mathias Svensson ) |
||||
* Reverted some changed that Even Rouault did. |
||||
* Bunch of patches received from Gulles Vollant that he received for MiniZip from various users. |
||||
* Added unzip patch for BZIP Compression method (patch create by Daniel Borca) |
||||
* Added BZIP Compress method for zip |
||||
* Did some refactoring and code cleanup |
||||
|
||||
|
||||
Credits |
||||
|
||||
Gilles Vollant - Original MiniZip author |
||||
Even Rouault - ZIP64 unzip Support |
||||
Daniel Borca - BZip Compression method support in unzip |
||||
Mathias Svensson - ZIP64 zip support |
||||
Mathias Svensson - BZip Compression method support in zip |
||||
|
||||
Resources |
||||
|
||||
ZipLayout http://result42.com/projects/ZipFileLayout |
||||
Command line tool for Windows that shows the layout and information of the headers in a zip archive. |
||||
Used when debugging and validating the creation of zip files using MiniZip64 |
||||
|
||||
|
||||
ZIP App Note http://www.pkware.com/documents/casestudies/APPNOTE.TXT |
||||
Zip File specification |
||||
|
||||
|
||||
Notes. |
||||
* To be able to use BZip compression method in zip64.c or unzip64.c the BZIP2 lib is needed and HAVE_BZIP2 need to be defined. |
||||
|
||||
License |
||||
---------------------------------------------------------- |
||||
Condition of use and distribution are the same than zlib : |
||||
|
||||
This software is provided 'as-is', without any express or implied |
||||
warranty. In no event will the authors be held liable for any damages |
||||
arising from the use of this software. |
||||
|
||||
Permission is granted to anyone to use this software for any purpose, |
||||
including commercial applications, and to alter it and redistribute it |
||||
freely, subject to the following restrictions: |
||||
|
||||
1. The origin of this software must not be misrepresented; you must not |
||||
claim that you wrote the original software. If you use this software |
||||
in a product, an acknowledgment in the product documentation would be |
||||
appreciated but is not required. |
||||
2. Altered source versions must be plainly marked as such, and must not be |
||||
misrepresented as being the original software. |
||||
3. This notice may not be removed or altered from any source distribution. |
||||
|
||||
---------------------------------------------------------- |
||||
|
||||
MiniZip64 - Copyright (c) 2009-2010 - Mathias Svensson - Built from MiniZip by Gilles Vollant |
||||
|
||||
Introduction |
||||
--------------------- |
||||
MiniZip64 is built from MiniZip by Gilles Vollant ( http://www.winimage.com/zLibDll/minizip.html ) |
||||
|
||||
When adding ZIP64 support into minizip it would result into breaking compatibility with current minizip. |
||||
And since breaking compatibility in minizip is not wanted. I decided to create a fork of minizip |
||||
and create minizip64. |
||||
|
||||
Even though MiniZip64 is build from MiniZip, all functions and struct's have changed name so that it |
||||
would not collide with each other. |
||||
|
||||
|
||||
Background |
||||
--------------------- |
||||
When adding ZIP64 support I found that Even Rouault have added ZIP64 support for unzip.c into minizip |
||||
for a open source project called gdal ( http://www.gdal.org/ ) |
||||
|
||||
That was used as a starting point. And after that ZIP64 support was added to zip.c |
||||
some refactoring and code cleanup was also done. |
||||
|
||||
|
||||
Changed from MiniZip to MiniZip64 |
||||
------------------------------------- |
||||
* Filenames has got a '64' at the end of them . eg unzip.c is now called unzip64.c |
||||
* Added ZIP64 support for unzip ( by Even Rouault ) |
||||
* Added ZIP64 support for zip ( by Mathias Svensson ) |
||||
* Reverted some changed that Even Rouault did. |
||||
* Bunch of patches received from Gulles Vollant that he received for MiniZip from various users. |
||||
* Added unzip patch for BZIP Compression method (patch create by Daniel Borca) |
||||
* Added BZIP Compress method for zip |
||||
* Did some refactoring and code cleanup |
||||
|
||||
|
||||
Credits |
||||
|
||||
Gilles Vollant - Original MiniZip author |
||||
Even Rouault - ZIP64 unzip Support |
||||
Daniel Borca - BZip Compression method support in unzip |
||||
Mathias Svensson - ZIP64 zip support |
||||
Mathias Svensson - BZip Compression method support in zip |
||||
|
||||
Resources |
||||
|
||||
ZipLayout http://result42.com/projects/ZipFileLayout |
||||
Command line tool for Windows that shows the layout and information of the headers in a zip archive. |
||||
Used when debugging and validating the creation of zip files using MiniZip64 |
||||
|
||||
|
||||
ZIP App Note http://www.pkware.com/documents/casestudies/APPNOTE.TXT |
||||
Zip File specification |
||||
|
||||
|
||||
Notes. |
||||
* To be able to use BZip compression method in zip64.c or unzip64.c the BZIP2 lib is needed and HAVE_BZIP2 need to be defined. |
||||
|
||||
License |
||||
---------------------------------------------------------- |
||||
Condition of use and distribution are the same than zlib : |
||||
|
||||
This software is provided 'as-is', without any express or implied |
||||
warranty. In no event will the authors be held liable for any damages |
||||
arising from the use of this software. |
||||
|
||||
Permission is granted to anyone to use this software for any purpose, |
||||
including commercial applications, and to alter it and redistribute it |
||||
freely, subject to the following restrictions: |
||||
|
||||
1. The origin of this software must not be misrepresented; you must not |
||||
claim that you wrote the original software. If you use this software |
||||
in a product, an acknowledgment in the product documentation would be |
||||
appreciated but is not required. |
||||
2. Altered source versions must be plainly marked as such, and must not be |
||||
misrepresented as being the original software. |
||||
3. This notice may not be removed or altered from any source distribution. |
||||
|
||||
---------------------------------------------------------- |
||||
|
||||
|
@ -1,281 +1,281 @@ |
||||
/*
|
||||
Additional tools for Minizip |
||||
Code: Xavier Roche '2004 |
||||
License: Same as ZLIB (www.gzip.org) |
||||
*/ |
||||
|
||||
/* Code */ |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include "zlib.h" |
||||
#include "unzip.h" |
||||
|
||||
#define READ_8(adr) ((unsigned char)*(adr)) |
||||
#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) |
||||
#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) |
||||
|
||||
#define WRITE_8(buff, n) do { \ |
||||
*((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \
|
||||
} while(0) |
||||
#define WRITE_16(buff, n) do { \ |
||||
WRITE_8((unsigned char*)(buff), n); \
|
||||
WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \
|
||||
} while(0) |
||||
#define WRITE_32(buff, n) do { \ |
||||
WRITE_16((unsigned char*)(buff), (n) & 0xffff); \
|
||||
WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
|
||||
} while(0) |
||||
|
||||
extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) |
||||
const char* file; |
||||
const char* fileOut; |
||||
const char* fileOutTmp; |
||||
uLong* nRecovered; |
||||
uLong* bytesRecovered; |
||||
{ |
||||
int err = Z_OK; |
||||
FILE* fpZip = fopen(file, "rb"); |
||||
FILE* fpOut = fopen(fileOut, "wb"); |
||||
FILE* fpOutCD = fopen(fileOutTmp, "wb"); |
||||
if (fpZip != NULL && fpOut != NULL) { |
||||
int entries = 0; |
||||
uLong totalBytes = 0; |
||||
char header[30]; |
||||
char filename[256]; |
||||
char extra[1024]; |
||||
int offset = 0; |
||||
int offsetCD = 0; |
||||
while ( fread(header, 1, 30, fpZip) == 30 ) { |
||||
int currentOffset = offset; |
||||
|
||||
/* File entry */ |
||||
if (READ_32(header) == 0x04034b50) { |
||||
unsigned int version = READ_16(header + 4); |
||||
unsigned int gpflag = READ_16(header + 6); |
||||
unsigned int method = READ_16(header + 8); |
||||
unsigned int filetime = READ_16(header + 10); |
||||
unsigned int filedate = READ_16(header + 12); |
||||
unsigned int crc = READ_32(header + 14); /* crc */ |
||||
unsigned int cpsize = READ_32(header + 18); /* compressed size */ |
||||
unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ |
||||
unsigned int fnsize = READ_16(header + 26); /* file name length */ |
||||
unsigned int extsize = READ_16(header + 28); /* extra field length */ |
||||
filename[0] = extra[0] = '\0'; |
||||
|
||||
/* Header */ |
||||
if (fwrite(header, 1, 30, fpOut) == 30) { |
||||
offset += 30; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
|
||||
/* Filename */ |
||||
if (fnsize > 0) { |
||||
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; |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
break; |
||||
} |
||||
|
||||
/* Extra field */ |
||||
if (extsize > 0) { |
||||
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; |
||||
} |
||||
} |
||||
|
||||
/* Data */ |
||||
{ |
||||
int dataSize = cpsize; |
||||
if (dataSize == 0) { |
||||
dataSize = uncpsize; |
||||
} |
||||
if (dataSize > 0) { |
||||
char* data = malloc(dataSize); |
||||
if (data != NULL) { |
||||
if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { |
||||
if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { |
||||
offset += dataSize; |
||||
totalBytes += dataSize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
free(data); |
||||
if (err != Z_OK) { |
||||
break; |
||||
} |
||||
} else { |
||||
err = Z_MEM_ERROR; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* Central directory entry */ |
||||
{ |
||||
char header[46]; |
||||
char* comment = ""; |
||||
int comsize = (int) strlen(comment); |
||||
WRITE_32(header, 0x02014b50); |
||||
WRITE_16(header + 4, version); |
||||
WRITE_16(header + 6, version); |
||||
WRITE_16(header + 8, gpflag); |
||||
WRITE_16(header + 10, method); |
||||
WRITE_16(header + 12, filetime); |
||||
WRITE_16(header + 14, filedate); |
||||
WRITE_32(header + 16, crc); |
||||
WRITE_32(header + 20, cpsize); |
||||
WRITE_32(header + 24, uncpsize); |
||||
WRITE_16(header + 28, fnsize); |
||||
WRITE_16(header + 30, extsize); |
||||
WRITE_16(header + 32, comsize); |
||||
WRITE_16(header + 34, 0); /* disk # */ |
||||
WRITE_16(header + 36, 0); /* int attrb */ |
||||
WRITE_32(header + 38, 0); /* ext attrb */ |
||||
WRITE_32(header + 42, currentOffset); |
||||
/* Header */ |
||||
if (fwrite(header, 1, 46, fpOutCD) == 46) { |
||||
offsetCD += 46; |
||||
|
||||
/* Filename */ |
||||
if (fnsize > 0) { |
||||
if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { |
||||
offsetCD += fnsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
break; |
||||
} |
||||
|
||||
/* Extra field */ |
||||
if (extsize > 0) { |
||||
if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { |
||||
offsetCD += extsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Comment field */ |
||||
if (comsize > 0) { |
||||
if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { |
||||
offsetCD += comsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
|
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Success */ |
||||
entries++; |
||||
|
||||
} else { |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Final central directory */ |
||||
{ |
||||
int entriesZip = entries; |
||||
char header[22]; |
||||
char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
|
||||
int comsize = (int) strlen(comment); |
||||
if (entriesZip > 0xffff) { |
||||
entriesZip = 0xffff; |
||||
} |
||||
WRITE_32(header, 0x06054b50); |
||||
WRITE_16(header + 4, 0); /* disk # */ |
||||
WRITE_16(header + 6, 0); /* disk # */ |
||||
WRITE_16(header + 8, entriesZip); /* hack */ |
||||
WRITE_16(header + 10, entriesZip); /* hack */ |
||||
WRITE_32(header + 12, offsetCD); /* size of CD */ |
||||
WRITE_32(header + 16, offset); /* offset to CD */ |
||||
WRITE_16(header + 20, comsize); /* comment */ |
||||
|
||||
/* Header */ |
||||
if (fwrite(header, 1, 22, fpOutCD) == 22) { |
||||
|
||||
/* Comment field */ |
||||
if (comsize > 0) { |
||||
if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { |
||||
err = Z_ERRNO; |
||||
} |
||||
} |
||||
|
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
} |
||||
|
||||
/* Final merge (file + central directory) */ |
||||
fclose(fpOutCD); |
||||
if (err == Z_OK) { |
||||
fpOutCD = fopen(fileOutTmp, "rb"); |
||||
if (fpOutCD != NULL) { |
||||
int nRead; |
||||
char buffer[8192]; |
||||
while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { |
||||
if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
fclose(fpOutCD); |
||||
} |
||||
} |
||||
|
||||
/* Close */ |
||||
fclose(fpZip); |
||||
fclose(fpOut); |
||||
|
||||
/* Wipe temporary file */ |
||||
(void)remove(fileOutTmp); |
||||
|
||||
/* Number of recovered entries */ |
||||
if (err == Z_OK) { |
||||
if (nRecovered != NULL) { |
||||
*nRecovered = entries; |
||||
} |
||||
if (bytesRecovered != NULL) { |
||||
*bytesRecovered = totalBytes; |
||||
} |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
} |
||||
return err; |
||||
} |
||||
/*
|
||||
Additional tools for Minizip |
||||
Code: Xavier Roche '2004 |
||||
License: Same as ZLIB (www.gzip.org) |
||||
*/ |
||||
|
||||
/* Code */ |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include "zlib.h" |
||||
#include "unzip.h" |
||||
|
||||
#define READ_8(adr) ((unsigned char)*(adr)) |
||||
#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) |
||||
#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) |
||||
|
||||
#define WRITE_8(buff, n) do { \ |
||||
*((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \
|
||||
} while(0) |
||||
#define WRITE_16(buff, n) do { \ |
||||
WRITE_8((unsigned char*)(buff), n); \
|
||||
WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \
|
||||
} while(0) |
||||
#define WRITE_32(buff, n) do { \ |
||||
WRITE_16((unsigned char*)(buff), (n) & 0xffff); \
|
||||
WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
|
||||
} while(0) |
||||
|
||||
extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) |
||||
const char* file; |
||||
const char* fileOut; |
||||
const char* fileOutTmp; |
||||
uLong* nRecovered; |
||||
uLong* bytesRecovered; |
||||
{ |
||||
int err = Z_OK; |
||||
FILE* fpZip = fopen(file, "rb"); |
||||
FILE* fpOut = fopen(fileOut, "wb"); |
||||
FILE* fpOutCD = fopen(fileOutTmp, "wb"); |
||||
if (fpZip != NULL && fpOut != NULL) { |
||||
int entries = 0; |
||||
uLong totalBytes = 0; |
||||
char header[30]; |
||||
char filename[256]; |
||||
char extra[1024]; |
||||
int offset = 0; |
||||
int offsetCD = 0; |
||||
while ( fread(header, 1, 30, fpZip) == 30 ) { |
||||
int currentOffset = offset; |
||||
|
||||
/* File entry */ |
||||
if (READ_32(header) == 0x04034b50) { |
||||
unsigned int version = READ_16(header + 4); |
||||
unsigned int gpflag = READ_16(header + 6); |
||||
unsigned int method = READ_16(header + 8); |
||||
unsigned int filetime = READ_16(header + 10); |
||||
unsigned int filedate = READ_16(header + 12); |
||||
unsigned int crc = READ_32(header + 14); /* crc */ |
||||
unsigned int cpsize = READ_32(header + 18); /* compressed size */ |
||||
unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ |
||||
unsigned int fnsize = READ_16(header + 26); /* file name length */ |
||||
unsigned int extsize = READ_16(header + 28); /* extra field length */ |
||||
filename[0] = extra[0] = '\0'; |
||||
|
||||
/* Header */ |
||||
if (fwrite(header, 1, 30, fpOut) == 30) { |
||||
offset += 30; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
|
||||
/* Filename */ |
||||
if (fnsize > 0) { |
||||
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; |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
break; |
||||
} |
||||
|
||||
/* Extra field */ |
||||
if (extsize > 0) { |
||||
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; |
||||
} |
||||
} |
||||
|
||||
/* Data */ |
||||
{ |
||||
int dataSize = cpsize; |
||||
if (dataSize == 0) { |
||||
dataSize = uncpsize; |
||||
} |
||||
if (dataSize > 0) { |
||||
char* data = malloc(dataSize); |
||||
if (data != NULL) { |
||||
if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { |
||||
if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { |
||||
offset += dataSize; |
||||
totalBytes += dataSize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
free(data); |
||||
if (err != Z_OK) { |
||||
break; |
||||
} |
||||
} else { |
||||
err = Z_MEM_ERROR; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* Central directory entry */ |
||||
{ |
||||
char header[46]; |
||||
char* comment = ""; |
||||
int comsize = (int) strlen(comment); |
||||
WRITE_32(header, 0x02014b50); |
||||
WRITE_16(header + 4, version); |
||||
WRITE_16(header + 6, version); |
||||
WRITE_16(header + 8, gpflag); |
||||
WRITE_16(header + 10, method); |
||||
WRITE_16(header + 12, filetime); |
||||
WRITE_16(header + 14, filedate); |
||||
WRITE_32(header + 16, crc); |
||||
WRITE_32(header + 20, cpsize); |
||||
WRITE_32(header + 24, uncpsize); |
||||
WRITE_16(header + 28, fnsize); |
||||
WRITE_16(header + 30, extsize); |
||||
WRITE_16(header + 32, comsize); |
||||
WRITE_16(header + 34, 0); /* disk # */ |
||||
WRITE_16(header + 36, 0); /* int attrb */ |
||||
WRITE_32(header + 38, 0); /* ext attrb */ |
||||
WRITE_32(header + 42, currentOffset); |
||||
/* Header */ |
||||
if (fwrite(header, 1, 46, fpOutCD) == 46) { |
||||
offsetCD += 46; |
||||
|
||||
/* Filename */ |
||||
if (fnsize > 0) { |
||||
if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { |
||||
offsetCD += fnsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
break; |
||||
} |
||||
|
||||
/* Extra field */ |
||||
if (extsize > 0) { |
||||
if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { |
||||
offsetCD += extsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Comment field */ |
||||
if (comsize > 0) { |
||||
if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { |
||||
offsetCD += comsize; |
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
|
||||
} else { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Success */ |
||||
entries++; |
||||
|
||||
} else { |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/* Final central directory */ |
||||
{ |
||||
int entriesZip = entries; |
||||
char header[22]; |
||||
char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
|
||||
int comsize = (int) strlen(comment); |
||||
if (entriesZip > 0xffff) { |
||||
entriesZip = 0xffff; |
||||
} |
||||
WRITE_32(header, 0x06054b50); |
||||
WRITE_16(header + 4, 0); /* disk # */ |
||||
WRITE_16(header + 6, 0); /* disk # */ |
||||
WRITE_16(header + 8, entriesZip); /* hack */ |
||||
WRITE_16(header + 10, entriesZip); /* hack */ |
||||
WRITE_32(header + 12, offsetCD); /* size of CD */ |
||||
WRITE_32(header + 16, offset); /* offset to CD */ |
||||
WRITE_16(header + 20, comsize); /* comment */ |
||||
|
||||
/* Header */ |
||||
if (fwrite(header, 1, 22, fpOutCD) == 22) { |
||||
|
||||
/* Comment field */ |
||||
if (comsize > 0) { |
||||
if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { |
||||
err = Z_ERRNO; |
||||
} |
||||
} |
||||
|
||||
} else { |
||||
err = Z_ERRNO; |
||||
} |
||||
} |
||||
|
||||
/* Final merge (file + central directory) */ |
||||
fclose(fpOutCD); |
||||
if (err == Z_OK) { |
||||
fpOutCD = fopen(fileOutTmp, "rb"); |
||||
if (fpOutCD != NULL) { |
||||
int nRead; |
||||
char buffer[8192]; |
||||
while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { |
||||
if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { |
||||
err = Z_ERRNO; |
||||
break; |
||||
} |
||||
} |
||||
fclose(fpOutCD); |
||||
} |
||||
} |
||||
|
||||
/* Close */ |
||||
fclose(fpZip); |
||||
fclose(fpOut); |
||||
|
||||
/* Wipe temporary file */ |
||||
(void)remove(fileOutTmp); |
||||
|
||||
/* Number of recovered entries */ |
||||
if (err == Z_OK) { |
||||
if (nRecovered != NULL) { |
||||
*nRecovered = entries; |
||||
} |
||||
if (bytesRecovered != NULL) { |
||||
*bytesRecovered = totalBytes; |
||||
} |
||||
} |
||||
} else { |
||||
err = Z_STREAM_ERROR; |
||||
} |
||||
return err; |
||||
} |
||||
|
@ -1,31 +1,31 @@ |
||||
/*
|
||||
Additional tools for Minizip |
||||
Code: Xavier Roche '2004 |
||||
License: Same as ZLIB (www.gzip.org) |
||||
*/ |
||||
|
||||
#ifndef _zip_tools_H |
||||
#define _zip_tools_H |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
#ifndef _ZLIB_H |
||||
#include "zlib.h" |
||||
#endif |
||||
|
||||
#include "unzip.h" |
||||
|
||||
/* Repair a ZIP file (missing central directory)
|
||||
file: file to recover |
||||
fileOut: output file after recovery |
||||
fileOutTmp: temporary file name used for recovery |
||||
*/ |
||||
extern int ZEXPORT unzRepair(const char* file,
|
||||
const char* fileOut,
|
||||
const char* fileOutTmp,
|
||||
uLong* nRecovered, |
||||
uLong* bytesRecovered); |
||||
|
||||
#endif |
||||
/*
|
||||
Additional tools for Minizip |
||||
Code: Xavier Roche '2004 |
||||
License: Same as ZLIB (www.gzip.org) |
||||
*/ |
||||
|
||||
#ifndef _zip_tools_H |
||||
#define _zip_tools_H |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
#ifndef _ZLIB_H |
||||
#include "zlib.h" |
||||
#endif |
||||
|
||||
#include "unzip.h" |
||||
|
||||
/* Repair a ZIP file (missing central directory)
|
||||
file: file to recover |
||||
fileOut: output file after recovery |
||||
fileOutTmp: temporary file name used for recovery |
||||
*/ |
||||
extern int ZEXPORT unzRepair(const char* file, |
||||
const char* fileOut, |
||||
const char* fileOutTmp, |
||||
uLong* nRecovered, |
||||
uLong* bytesRecovered); |
||||
|
||||
#endif |
||||
|
@ -1,332 +0,0 @@ |
||||
/* zconf.h -- configuration of the zlib compression library
|
||||
* Copyright (C) 1995-2005 Jean-loup Gailly. |
||||
* For conditions of distribution and use, see copyright notice in zlib.h |
||||
*/ |
||||
|
||||
/* @(#) $Id$ */ |
||||
|
||||
#ifndef ZCONF_H |
||||
#define ZCONF_H |
||||
|
||||
/*
|
||||
* If you *really* need a unique prefix for all types and library functions, |
||||
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. |
||||
*/ |
||||
#ifdef Z_PREFIX |
||||
# define deflateInit_ z_deflateInit_ |
||||
# define deflate z_deflate |
||||
# define deflateEnd z_deflateEnd |
||||
# define inflateInit_ z_inflateInit_ |
||||
# define inflate z_inflate |
||||
# define inflateEnd z_inflateEnd |
||||
# define deflateInit2_ z_deflateInit2_ |
||||
# define deflateSetDictionary z_deflateSetDictionary |
||||
# define deflateCopy z_deflateCopy |
||||
# define deflateReset z_deflateReset |
||||
# define deflateParams z_deflateParams |
||||
# define deflateBound z_deflateBound |
||||
# define deflatePrime z_deflatePrime |
||||
# define inflateInit2_ z_inflateInit2_ |
||||
# define inflateSetDictionary z_inflateSetDictionary |
||||
# define inflateSync z_inflateSync |
||||
# define inflateSyncPoint z_inflateSyncPoint |
||||
# define inflateCopy z_inflateCopy |
||||
# define inflateReset z_inflateReset |
||||
# define inflateBack z_inflateBack |
||||
# define inflateBackEnd z_inflateBackEnd |
||||
# define compress z_compress |
||||
# define compress2 z_compress2 |
||||
# define compressBound z_compressBound |
||||
# define uncompress z_uncompress |
||||
# define adler32 z_adler32 |
||||
# define crc32 z_crc32 |
||||
# define get_crc_table z_get_crc_table |
||||
# define zError z_zError |
||||
|
||||
# define alloc_func z_alloc_func |
||||
# define free_func z_free_func |
||||
# define in_func z_in_func |
||||
# define out_func z_out_func |
||||
# define Byte z_Byte |
||||
# define uInt z_uInt |
||||
# define uLong z_uLong |
||||
# define Bytef z_Bytef |
||||
# define charf z_charf |
||||
# define intf z_intf |
||||
# define uIntf z_uIntf |
||||
# define uLongf z_uLongf |
||||
# define voidpf z_voidpf |
||||
# define voidp z_voidp |
||||
#endif |
||||
|
||||
#if defined(__MSDOS__) && !defined(MSDOS) |
||||
# define MSDOS |
||||
#endif |
||||
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) |
||||
# define OS2 |
||||
#endif |
||||
#if defined(_WINDOWS) && !defined(WINDOWS) |
||||
# define WINDOWS |
||||
#endif |
||||
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) |
||||
# ifndef WIN32 |
||||
# define WIN32 |
||||
# endif |
||||
#endif |
||||
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) |
||||
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) |
||||
# ifndef SYS16BIT |
||||
# define SYS16BIT |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
/*
|
||||
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more |
||||
* than 64k bytes at a time (needed on systems with 16-bit int). |
||||
*/ |
||||
#ifdef SYS16BIT |
||||
# define MAXSEG_64K |
||||
#endif |
||||
#ifdef MSDOS |
||||
# define UNALIGNED_OK |
||||
#endif |
||||
|
||||
#ifdef __STDC_VERSION__ |
||||
# ifndef STDC |
||||
# define STDC |
||||
# endif |
||||
# if __STDC_VERSION__ >= 199901L |
||||
# ifndef STDC99 |
||||
# define STDC99 |
||||
# endif |
||||
# endif |
||||
#endif |
||||
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) |
||||
# define STDC |
||||
#endif |
||||
|
||||
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ |
||||
# define STDC |
||||
#endif |
||||
|
||||
#ifndef STDC |
||||
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ |
||||
# define const /* note: need a more gentle solution here */ |
||||
# endif |
||||
#endif |
||||
|
||||
/* Some Mac compilers merge all .h files incorrectly: */ |
||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) |
||||
# define NO_DUMMY_DECL |
||||
#endif |
||||
|
||||
/* Maximum value for memLevel in deflateInit2 */ |
||||
#ifndef MAX_MEM_LEVEL |
||||
# ifdef MAXSEG_64K |
||||
# define MAX_MEM_LEVEL 8 |
||||
# else |
||||
# define MAX_MEM_LEVEL 9 |
||||
# endif |
||||
#endif |
||||
|
||||
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files |
||||
* created by gzip. (Files created by minigzip can still be extracted by |
||||
* gzip.) |
||||
*/ |
||||
#ifndef MAX_WBITS |
||||
# define MAX_WBITS 15 /* 32K LZ77 window */ |
||||
#endif |
||||
|
||||
/* The memory requirements for deflate are (in bytes):
|
||||
(1 << (windowBits+2)) + (1 << (memLevel+9)) |
||||
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) |
||||
plus a few kilobytes for small objects. For example, if you want to reduce |
||||
the default memory requirements from 256K to 128K, compile with |
||||
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" |
||||
Of course this will generally degrade compression (there's no free lunch). |
||||
|
||||
The memory requirements for inflate are (in bytes) 1 << windowBits |
||||
that is, 32K for windowBits=15 (default value) plus a few kilobytes |
||||
for small objects. |
||||
*/ |
||||
|
||||
/* Type declarations */ |
||||
|
||||
#ifndef OF /* function prototypes */ |
||||
# ifdef STDC |
||||
# define OF(args) args |
||||
# else |
||||
# define OF(args) () |
||||
# endif |
||||
#endif |
||||
|
||||
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||
* model programming (small or medium model with some far allocations). |
||||
* This was tested only with MSC; for other MSDOS compilers you may have |
||||
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model, |
||||
* just define FAR to be empty. |
||||
*/ |
||||
#ifdef SYS16BIT |
||||
# if defined(M_I86SM) || defined(M_I86MM) |
||||
/* MSC small or medium model */ |
||||
# define SMALL_MEDIUM |
||||
# ifdef _MSC_VER |
||||
# define FAR _far |
||||
# else |
||||
# define FAR far |
||||
# endif |
||||
# endif |
||||
# if (defined(__SMALL__) || defined(__MEDIUM__)) |
||||
/* Turbo C small or medium model */ |
||||
# define SMALL_MEDIUM |
||||
# ifdef __BORLANDC__ |
||||
# define FAR _far |
||||
# else |
||||
# define FAR far |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#if defined(WINDOWS) || defined(WIN32) |
||||
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
||||
* This is not mandatory, but it offers a little performance increase. |
||||
*/ |
||||
# ifdef ZLIB_DLL |
||||
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) |
||||
# ifdef ZLIB_INTERNAL |
||||
# define ZEXTERN extern __declspec(dllexport) |
||||
# else |
||||
# define ZEXTERN extern __declspec(dllimport) |
||||
# endif |
||||
# endif |
||||
# endif /* ZLIB_DLL */ |
||||
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
||||
* define ZLIB_WINAPI. |
||||
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. |
||||
*/ |
||||
# ifdef ZLIB_WINAPI |
||||
# ifdef FAR |
||||
# undef FAR |
||||
# endif |
||||
# include <windows.h> |
||||
/* No need for _export, use ZLIB.DEF instead. */ |
||||
/* For complete Windows compatibility, use WINAPI, not __stdcall. */ |
||||
# define ZEXPORT WINAPI |
||||
# ifdef WIN32 |
||||
# define ZEXPORTVA WINAPIV |
||||
# else |
||||
# define ZEXPORTVA FAR CDECL |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#if defined (__BEOS__) |
||||
# ifdef ZLIB_DLL |
||||
# ifdef ZLIB_INTERNAL |
||||
# define ZEXPORT __declspec(dllexport) |
||||
# define ZEXPORTVA __declspec(dllexport) |
||||
# else |
||||
# define ZEXPORT __declspec(dllimport) |
||||
# define ZEXPORTVA __declspec(dllimport) |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#ifndef ZEXTERN |
||||
# define ZEXTERN extern |
||||
#endif |
||||
#ifndef ZEXPORT |
||||
# define ZEXPORT |
||||
#endif |
||||
#ifndef ZEXPORTVA |
||||
# define ZEXPORTVA |
||||
#endif |
||||
|
||||
#ifndef FAR |
||||
# define FAR |
||||
#endif |
||||
|
||||
#if !defined(__MACTYPES__) |
||||
typedef unsigned char Byte; /* 8 bits */ |
||||
#endif |
||||
typedef unsigned int uInt; /* 16 bits or more */ |
||||
typedef unsigned long uLong; /* 32 bits or more */ |
||||
|
||||
#ifdef SMALL_MEDIUM |
||||
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ |
||||
# define Bytef Byte FAR |
||||
#else |
||||
typedef Byte FAR Bytef; |
||||
#endif |
||||
typedef char FAR charf; |
||||
typedef int FAR intf; |
||||
typedef uInt FAR uIntf; |
||||
typedef uLong FAR uLongf; |
||||
|
||||
#ifdef STDC |
||||
typedef void const *voidpc; |
||||
typedef void FAR *voidpf; |
||||
typedef void *voidp; |
||||
#else |
||||
typedef Byte const *voidpc; |
||||
typedef Byte FAR *voidpf; |
||||
typedef Byte *voidp; |
||||
#endif |
||||
|
||||
#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */
|
||||
# include <sys/types.h> /* for off_t */ |
||||
# include <unistd.h> /* for SEEK_* and off_t */ |
||||
# ifdef VMS |
||||
# include <unixio.h> /* for off_t */ |
||||
# endif |
||||
# define z_off_t off_t |
||||
#endif |
||||
#ifndef SEEK_SET |
||||
# define SEEK_SET 0 /* Seek from beginning of file. */ |
||||
# define SEEK_CUR 1 /* Seek from current position. */ |
||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ |
||||
#endif |
||||
#ifndef z_off_t |
||||
# define z_off_t long |
||||
#endif |
||||
|
||||
#if defined(__OS400__) |
||||
# define NO_vsnprintf |
||||
#endif |
||||
|
||||
#if defined(__MVS__) |
||||
# define NO_vsnprintf |
||||
# ifdef FAR |
||||
# undef FAR |
||||
# endif |
||||
#endif |
||||
|
||||
/* MVS linker does not support external names larger than 8 bytes */ |
||||
#if defined(__MVS__) |
||||
# pragma map(deflateInit_,"DEIN") |
||||
# pragma map(deflateInit2_,"DEIN2") |
||||
# pragma map(deflateEnd,"DEEND") |
||||
# pragma map(deflateBound,"DEBND") |
||||
# pragma map(inflateInit_,"ININ") |
||||
# pragma map(inflateInit2_,"ININ2") |
||||
# pragma map(inflateEnd,"INEND") |
||||
# pragma map(inflateSync,"INSY") |
||||
# pragma map(inflateSetDictionary,"INSEDI") |
||||
# pragma map(compressBound,"CMBND") |
||||
# pragma map(inflate_table,"INTABL") |
||||
# pragma map(inflate_fast,"INFA") |
||||
# pragma map(inflate_copyright,"INCOPY") |
||||
#endif |
||||
|
||||
#endif /* ZCONF_H */ |
@ -1,332 +0,0 @@ |
||||
/* zconf.h -- configuration of the zlib compression library
|
||||
* Copyright (C) 1995-2005 Jean-loup Gailly. |
||||
* For conditions of distribution and use, see copyright notice in zlib.h |
||||
*/ |
||||
|
||||
/* @(#) $Id$ */ |
||||
|
||||
#ifndef ZCONF_H |
||||
#define ZCONF_H |
||||
|
||||
/*
|
||||
* If you *really* need a unique prefix for all types and library functions, |
||||
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. |
||||
*/ |
||||
#ifdef Z_PREFIX |
||||
# define deflateInit_ z_deflateInit_ |
||||
# define deflate z_deflate |
||||
# define deflateEnd z_deflateEnd |
||||
# define inflateInit_ z_inflateInit_ |
||||
# define inflate z_inflate |
||||
# define inflateEnd z_inflateEnd |
||||
# define deflateInit2_ z_deflateInit2_ |
||||
# define deflateSetDictionary z_deflateSetDictionary |
||||
# define deflateCopy z_deflateCopy |
||||
# define deflateReset z_deflateReset |
||||
# define deflateParams z_deflateParams |
||||
# define deflateBound z_deflateBound |
||||
# define deflatePrime z_deflatePrime |
||||
# define inflateInit2_ z_inflateInit2_ |
||||
# define inflateSetDictionary z_inflateSetDictionary |
||||
# define inflateSync z_inflateSync |
||||
# define inflateSyncPoint z_inflateSyncPoint |
||||
# define inflateCopy z_inflateCopy |
||||
# define inflateReset z_inflateReset |
||||
# define inflateBack z_inflateBack |
||||
# define inflateBackEnd z_inflateBackEnd |
||||
# define compress z_compress |
||||
# define compress2 z_compress2 |
||||
# define compressBound z_compressBound |
||||
# define uncompress z_uncompress |
||||
# define adler32 z_adler32 |
||||
# define crc32 z_crc32 |
||||
# define get_crc_table z_get_crc_table |
||||
# define zError z_zError |
||||
|
||||
# define alloc_func z_alloc_func |
||||
# define free_func z_free_func |
||||
# define in_func z_in_func |
||||
# define out_func z_out_func |
||||
# define Byte z_Byte |
||||
# define uInt z_uInt |
||||
# define uLong z_uLong |
||||
# define Bytef z_Bytef |
||||
# define charf z_charf |
||||
# define intf z_intf |
||||
# define uIntf z_uIntf |
||||
# define uLongf z_uLongf |
||||
# define voidpf z_voidpf |
||||
# define voidp z_voidp |
||||
#endif |
||||
|
||||
#if defined(__MSDOS__) && !defined(MSDOS) |
||||
# define MSDOS |
||||
#endif |
||||
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) |
||||
# define OS2 |
||||
#endif |
||||
#if defined(_WINDOWS) && !defined(WINDOWS) |
||||
# define WINDOWS |
||||
#endif |
||||
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) |
||||
# ifndef WIN32 |
||||
# define WIN32 |
||||
# endif |
||||
#endif |
||||
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) |
||||
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) |
||||
# ifndef SYS16BIT |
||||
# define SYS16BIT |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
/*
|
||||
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more |
||||
* than 64k bytes at a time (needed on systems with 16-bit int). |
||||
*/ |
||||
#ifdef SYS16BIT |
||||
# define MAXSEG_64K |
||||
#endif |
||||
#ifdef MSDOS |
||||
# define UNALIGNED_OK |
||||
#endif |
||||
|
||||
#ifdef __STDC_VERSION__ |
||||
# ifndef STDC |
||||
# define STDC |
||||
# endif |
||||
# if __STDC_VERSION__ >= 199901L |
||||
# ifndef STDC99 |
||||
# define STDC99 |
||||
# endif |
||||
# endif |
||||
#endif |
||||
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) |
||||
# define STDC |
||||
#endif |
||||
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) |
||||
# define STDC |
||||
#endif |
||||
|
||||
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ |
||||
# define STDC |
||||
#endif |
||||
|
||||
#ifndef STDC |
||||
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ |
||||
# define const /* note: need a more gentle solution here */ |
||||
# endif |
||||
#endif |
||||
|
||||
/* Some Mac compilers merge all .h files incorrectly: */ |
||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) |
||||
# define NO_DUMMY_DECL |
||||
#endif |
||||
|
||||
/* Maximum value for memLevel in deflateInit2 */ |
||||
#ifndef MAX_MEM_LEVEL |
||||
# ifdef MAXSEG_64K |
||||
# define MAX_MEM_LEVEL 8 |
||||
# else |
||||
# define MAX_MEM_LEVEL 9 |
||||
# endif |
||||
#endif |
||||
|
||||
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
||||
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files |
||||
* created by gzip. (Files created by minigzip can still be extracted by |
||||
* gzip.) |
||||
*/ |
||||
#ifndef MAX_WBITS |
||||
# define MAX_WBITS 15 /* 32K LZ77 window */ |
||||
#endif |
||||
|
||||
/* The memory requirements for deflate are (in bytes):
|
||||
(1 << (windowBits+2)) + (1 << (memLevel+9)) |
||||
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) |
||||
plus a few kilobytes for small objects. For example, if you want to reduce |
||||
the default memory requirements from 256K to 128K, compile with |
||||
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" |
||||
Of course this will generally degrade compression (there's no free lunch). |
||||
|
||||
The memory requirements for inflate are (in bytes) 1 << windowBits |
||||
that is, 32K for windowBits=15 (default value) plus a few kilobytes |
||||
for small objects. |
||||
*/ |
||||
|
||||
/* Type declarations */ |
||||
|
||||
#ifndef OF /* function prototypes */ |
||||
# ifdef STDC |
||||
# define OF(args) args |
||||
# else |
||||
# define OF(args) () |
||||
# endif |
||||
#endif |
||||
|
||||
/* The following definitions for FAR are needed only for MSDOS mixed
|
||||
* model programming (small or medium model with some far allocations). |
||||
* This was tested only with MSC; for other MSDOS compilers you may have |
||||
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model, |
||||
* just define FAR to be empty. |
||||
*/ |
||||
#ifdef SYS16BIT |
||||
# if defined(M_I86SM) || defined(M_I86MM) |
||||
/* MSC small or medium model */ |
||||
# define SMALL_MEDIUM |
||||
# ifdef _MSC_VER |
||||
# define FAR _far |
||||
# else |
||||
# define FAR far |
||||
# endif |
||||
# endif |
||||
# if (defined(__SMALL__) || defined(__MEDIUM__)) |
||||
/* Turbo C small or medium model */ |
||||
# define SMALL_MEDIUM |
||||
# ifdef __BORLANDC__ |
||||
# define FAR _far |
||||
# else |
||||
# define FAR far |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#if defined(WINDOWS) || defined(WIN32) |
||||
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
||||
* This is not mandatory, but it offers a little performance increase. |
||||
*/ |
||||
# ifdef ZLIB_DLL |
||||
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) |
||||
# ifdef ZLIB_INTERNAL |
||||
# define ZEXTERN extern __declspec(dllexport) |
||||
# else |
||||
# define ZEXTERN extern __declspec(dllimport) |
||||
# endif |
||||
# endif |
||||
# endif /* ZLIB_DLL */ |
||||
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
||||
* define ZLIB_WINAPI. |
||||
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. |
||||
*/ |
||||
# ifdef ZLIB_WINAPI |
||||
# ifdef FAR |
||||
# undef FAR |
||||
# endif |
||||
# include <windows.h> |
||||
/* No need for _export, use ZLIB.DEF instead. */ |
||||
/* For complete Windows compatibility, use WINAPI, not __stdcall. */ |
||||
# define ZEXPORT WINAPI |
||||
# ifdef WIN32 |
||||
# define ZEXPORTVA WINAPIV |
||||
# else |
||||
# define ZEXPORTVA FAR CDECL |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#if defined (__BEOS__) |
||||
# ifdef ZLIB_DLL |
||||
# ifdef ZLIB_INTERNAL |
||||
# define ZEXPORT __declspec(dllexport) |
||||
# define ZEXPORTVA __declspec(dllexport) |
||||
# else |
||||
# define ZEXPORT __declspec(dllimport) |
||||
# define ZEXPORTVA __declspec(dllimport) |
||||
# endif |
||||
# endif |
||||
#endif |
||||
|
||||
#ifndef ZEXTERN |
||||
# define ZEXTERN extern |
||||
#endif |
||||
#ifndef ZEXPORT |
||||
# define ZEXPORT |
||||
#endif |
||||
#ifndef ZEXPORTVA |
||||
# define ZEXPORTVA |
||||
#endif |
||||
|
||||
#ifndef FAR |
||||
# define FAR |
||||
#endif |
||||
|
||||
#if !defined(__MACTYPES__) |
||||
typedef unsigned char Byte; /* 8 bits */ |
||||
#endif |
||||
typedef unsigned int uInt; /* 16 bits or more */ |
||||
typedef unsigned long uLong; /* 32 bits or more */ |
||||
|
||||
#ifdef SMALL_MEDIUM |
||||
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ |
||||
# define Bytef Byte FAR |
||||
#else |
||||
typedef Byte FAR Bytef; |
||||
#endif |
||||
typedef char FAR charf; |
||||
typedef int FAR intf; |
||||
typedef uInt FAR uIntf; |
||||
typedef uLong FAR uLongf; |
||||
|
||||
#ifdef STDC |
||||
typedef void const *voidpc; |
||||
typedef void FAR *voidpf; |
||||
typedef void *voidp; |
||||
#else |
||||
typedef Byte const *voidpc; |
||||
typedef Byte FAR *voidpf; |
||||
typedef Byte *voidp; |
||||
#endif |
||||
|
||||
#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */
|
||||
# include <sys/types.h> /* for off_t */ |
||||
# include <unistd.h> /* for SEEK_* and off_t */ |
||||
# ifdef VMS |
||||
# include <unixio.h> /* for off_t */ |
||||
# endif |
||||
# define z_off_t off_t |
||||
#endif |
||||
#ifndef SEEK_SET |
||||
# define SEEK_SET 0 /* Seek from beginning of file. */ |
||||
# define SEEK_CUR 1 /* Seek from current position. */ |
||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ |
||||
#endif |
||||
#ifndef z_off_t |
||||
# define z_off_t long |
||||
#endif |
||||
|
||||
#if defined(__OS400__) |
||||
# define NO_vsnprintf |
||||
#endif |
||||
|
||||
#if defined(__MVS__) |
||||
# define NO_vsnprintf |
||||
# ifdef FAR |
||||
# undef FAR |
||||
# endif |
||||
#endif |
||||
|
||||
/* MVS linker does not support external names larger than 8 bytes */ |
||||
#if defined(__MVS__) |
||||
# pragma map(deflateInit_,"DEIN") |
||||
# pragma map(deflateInit2_,"DEIN2") |
||||
# pragma map(deflateEnd,"DEEND") |
||||
# pragma map(deflateBound,"DEBND") |
||||
# pragma map(inflateInit_,"ININ") |
||||
# pragma map(inflateInit2_,"ININ2") |
||||
# pragma map(inflateEnd,"INEND") |
||||
# pragma map(inflateSync,"INSY") |
||||
# pragma map(inflateSetDictionary,"INSEDI") |
||||
# pragma map(compressBound,"CMBND") |
||||
# pragma map(inflate_table,"INTABL") |
||||
# pragma map(inflate_fast,"INFA") |
||||
# pragma map(inflate_copyright,"INCOPY") |
||||
#endif |
||||
|
||||
#endif /* ZCONF_H */ |
Binary file not shown.
Loading…
Reference in new issue