Browse Source
Remove minizip from kicad sources. Useless because now (and since a long time) wxWidgets supports full zip file read/write, and minizip build creates problems under Windows, due to zlib not always installed.
pull/1/head
Remove minizip from kicad sources. Useless because now (and since a long time) wxWidgets supports full zip file read/write, and minizip build creates problems under Windows, due to zlib not always installed.
pull/1/head
13 changed files with 52 additions and 2561 deletions
-
5CMakeLists.txt
-
0CMakeModules/FindZLIB.cmake.unused
-
4kicad/CMakeLists.txt
-
81kicad/files-io.cpp
-
43kicad/minizip/CMakeLists.txt
-
132kicad/minizip/crypt.h
-
177kicad/minizip/ioapi.c
-
75kicad/minizip/ioapi.h
-
270kicad/minizip/iowin32.c
-
21kicad/minizip/iowin32.h
-
400kicad/minizip/minizip.c
-
1170kicad/minizip/zip.c
-
235kicad/minizip/zip.h
@ -1,43 +0,0 @@ |
|||
find_package(ZLIB QUIET) |
|||
if(ZLIB_FOUND) |
|||
message(STATUS "Check for installed zlib -- found") |
|||
else(ZLIB_FOUND) |
|||
message(STATUS "Check for installed zlib -- not found") |
|||
message(STATUS "Use wxWidgets zlib") |
|||
|
|||
# zlib is not installed, and in this case wxWidgets creates its own zlib library |
|||
# include files are in ${wxWidgets_ROOT_DIR}/src/zlib |
|||
# and the corresponding library is libwxzlib-<version>.a (like libwxzlib-2.8.a) |
|||
# and we try to use it |
|||
# Unfortunately, we have no way to know exactly the path of zlib.h because this file |
|||
# is in wxWidgets sources, not in wxWidgets include path. |
|||
find_path(ZLIB_INCLUDE_DIR |
|||
zlib.h |
|||
PATHS ${wxWidgets_ROOT_DIR}/../src/zlib/ ${wxWidgets_ROOT_DIR}/src/zlib/ |
|||
DOC "location of zlib include files" |
|||
) |
|||
|
|||
find_file( |
|||
ZLIB_LIBRARIES NAMES ${wxWidgets_LIB_DIR}/libwxzlib-2.8.a |
|||
ZLIB_LIBRARIES NAMES ${wxWidgets_LIB_DIR}/libwxzlib-2.9.a libwxzlib.a |
|||
PATHS ${wxWidgets_ROOT_DIR}/lib/ |
|||
PATH_SUFFIXES gcc_lib gcc_dll |
|||
DOC "location of wxzlib library file" |
|||
) |
|||
endif(ZLIB_FOUND) |
|||
|
|||
include_directories(${CMAKE_CURRENT_SOURCE_DIR} |
|||
${ZLIB_INCLUDE_DIR}) |
|||
|
|||
set(MINIZIP_SRCS |
|||
ioapi.c |
|||
minizip.c |
|||
zip.c) |
|||
|
|||
add_executable(minizip ${MINIZIP_SRCS}) |
|||
|
|||
target_link_libraries(minizip ${ZLIB_LIBRARIES}) |
|||
|
|||
install(TARGETS minizip |
|||
DESTINATION ${KICAD_BIN} |
|||
COMPONENT binary) |
|||
@ -1,132 +0,0 @@ |
|||
/* crypt.h -- base code for crypt/uncrypt ZIPfile |
|||
|
|||
|
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
|
|||
This code is a modified version of crypting code in Infozip distribution |
|||
|
|||
The encryption/decryption parts of this source code (as opposed to the |
|||
non-echoing password parts) were originally written in Europe. The |
|||
whole source package can be freely distributed, including from the USA. |
|||
(Prior to January 2000, re-export from the US was a violation of US law.) |
|||
|
|||
This encryption code is a direct transcription of the algorithm from |
|||
Roger Schlafly, described by Phil Katz in the file appnote.txt. This |
|||
file (appnote.txt) is distributed with the PKZIP program (even in the |
|||
version without encryption capabilities). |
|||
|
|||
If you don't need crypting in your application, just define symbols |
|||
NOCRYPT and NOUNCRYPT. |
|||
|
|||
This code support the "Traditional PKWARE Encryption". |
|||
|
|||
The new AES encryption added on Zip format by Winzip (see the page |
|||
http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong |
|||
Encryption is not supported. |
|||
*/ |
|||
|
|||
#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) |
|||
|
|||
/*********************************************************************** |
|||
* Return the next byte in the pseudo-random sequence |
|||
*/ |
|||
static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) |
|||
{ |
|||
unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an |
|||
* unpredictable manner on 16-bit systems; not a problem |
|||
* with any known compiler so far, though */ |
|||
|
|||
temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; |
|||
return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); |
|||
} |
|||
|
|||
/*********************************************************************** |
|||
* Update the encryption keys with the next byte of plain text |
|||
*/ |
|||
static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) |
|||
{ |
|||
(*(pkeys+0)) = CRC32((*(pkeys+0)), c); |
|||
(*(pkeys+1)) += (*(pkeys+0)) & 0xff; |
|||
(*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; |
|||
{ |
|||
register int keyshift = (int)((*(pkeys+1)) >> 24); |
|||
(*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); |
|||
} |
|||
return c; |
|||
} |
|||
|
|||
|
|||
/*********************************************************************** |
|||
* Initialize the encryption keys and the random header according to |
|||
* the given password. |
|||
*/ |
|||
static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) |
|||
{ |
|||
*(pkeys+0) = 305419896L; |
|||
*(pkeys+1) = 591751049L; |
|||
*(pkeys+2) = 878082192L; |
|||
while (*passwd != '\0') { |
|||
update_keys(pkeys,pcrc_32_tab,(int)*passwd); |
|||
passwd++; |
|||
} |
|||
} |
|||
|
|||
#define zdecode(pkeys,pcrc_32_tab,c) \ |
|||
(update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) |
|||
|
|||
#define zencode(pkeys,pcrc_32_tab,c,t) \ |
|||
(t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) |
|||
|
|||
#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED |
|||
|
|||
#define RAND_HEAD_LEN 12 |
|||
/* "last resort" source for second part of crypt seed pattern */ |
|||
# ifndef ZCR_SEED2 |
|||
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ |
|||
# endif |
|||
|
|||
static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) |
|||
const char *passwd; /* password string */ |
|||
unsigned char *buf; /* where to write header */ |
|||
int bufSize; |
|||
unsigned long* pkeys; |
|||
const unsigned long* pcrc_32_tab; |
|||
unsigned long crcForCrypting; |
|||
{ |
|||
int n; /* index in random header */ |
|||
int t; /* temporary */ |
|||
int c; /* random byte */ |
|||
unsigned char header[RAND_HEAD_LEN-2]; /* random header */ |
|||
static unsigned calls = 0; /* ensure different random header each time */ |
|||
|
|||
if (bufSize<RAND_HEAD_LEN) |
|||
return 0; |
|||
|
|||
/* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the |
|||
* output of rand() to get less predictability, since rand() is |
|||
* often poorly implemented. |
|||
*/ |
|||
if (++calls == 1) |
|||
{ |
|||
srand((unsigned)(time(NULL) ^ ZCR_SEED2)); |
|||
} |
|||
init_keys(passwd, pkeys, pcrc_32_tab); |
|||
for (n = 0; n < RAND_HEAD_LEN-2; n++) |
|||
{ |
|||
c = (rand() >> 7) & 0xff; |
|||
header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); |
|||
} |
|||
/* Encrypt random header (last two bytes is high word of crc) */ |
|||
init_keys(passwd, pkeys, pcrc_32_tab); |
|||
for (n = 0; n < RAND_HEAD_LEN-2; n++) |
|||
{ |
|||
buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); |
|||
} |
|||
buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); |
|||
buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); |
|||
return n; |
|||
} |
|||
|
|||
#endif |
|||
@ -1,177 +0,0 @@ |
|||
/* ioapi.c -- IO base function header for compress/uncompress .zip |
|||
files using zlib + zip or unzip API |
|||
|
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
*/ |
|||
|
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
|
|||
#include "zlib.h" |
|||
#include "ioapi.h" |
|||
|
|||
|
|||
|
|||
/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ |
|||
|
|||
#ifndef SEEK_CUR |
|||
#define SEEK_CUR 1 |
|||
#endif |
|||
|
|||
#ifndef SEEK_END |
|||
#define SEEK_END 2 |
|||
#endif |
|||
|
|||
#ifndef SEEK_SET |
|||
#define SEEK_SET 0 |
|||
#endif |
|||
|
|||
voidpf ZCALLBACK fopen_file_func OF(( |
|||
voidpf opaque, |
|||
const char* filename, |
|||
int mode)); |
|||
|
|||
uLong ZCALLBACK fread_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream, |
|||
void* buf, |
|||
uLong size)); |
|||
|
|||
uLong ZCALLBACK fwrite_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream, |
|||
const void* buf, |
|||
uLong size)); |
|||
|
|||
long ZCALLBACK ftell_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream)); |
|||
|
|||
long ZCALLBACK fseek_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream, |
|||
uLong offset, |
|||
int origin)); |
|||
|
|||
int ZCALLBACK fclose_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream)); |
|||
|
|||
int ZCALLBACK ferror_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream)); |
|||
|
|||
|
|||
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) |
|||
voidpf opaque; |
|||
const char* filename; |
|||
int mode; |
|||
{ |
|||
FILE* file = NULL; |
|||
const char* mode_fopen = NULL; |
|||
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) |
|||
mode_fopen = "rb"; |
|||
else |
|||
if (mode & ZLIB_FILEFUNC_MODE_EXISTING) |
|||
mode_fopen = "r+b"; |
|||
else |
|||
if (mode & ZLIB_FILEFUNC_MODE_CREATE) |
|||
mode_fopen = "wb"; |
|||
|
|||
if ((filename!=NULL) && (mode_fopen != NULL)) |
|||
file = fopen(filename, mode_fopen); |
|||
return file; |
|||
} |
|||
|
|||
|
|||
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
void* buf; |
|||
uLong size; |
|||
{ |
|||
uLong ret; |
|||
ret = fread(buf, 1, (size_t)size, (FILE *)stream); |
|||
return ret; |
|||
} |
|||
|
|||
|
|||
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
const void* buf; |
|||
uLong size; |
|||
{ |
|||
uLong ret; |
|||
ret = fwrite(buf, 1, (size_t)size, (FILE *)stream); |
|||
return ret; |
|||
} |
|||
|
|||
long ZCALLBACK ftell_file_func (opaque, stream) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
{ |
|||
long ret; |
|||
ret = ftell((FILE *)stream); |
|||
return ret; |
|||
} |
|||
|
|||
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
uLong offset; |
|||
int origin; |
|||
{ |
|||
int fseek_origin=0; |
|||
long ret; |
|||
switch (origin) |
|||
{ |
|||
case ZLIB_FILEFUNC_SEEK_CUR : |
|||
fseek_origin = SEEK_CUR; |
|||
break; |
|||
case ZLIB_FILEFUNC_SEEK_END : |
|||
fseek_origin = SEEK_END; |
|||
break; |
|||
case ZLIB_FILEFUNC_SEEK_SET : |
|||
fseek_origin = SEEK_SET; |
|||
break; |
|||
default: return -1; |
|||
} |
|||
ret = 0; |
|||
fseek((FILE *)stream, offset, fseek_origin); |
|||
return ret; |
|||
} |
|||
|
|||
int ZCALLBACK fclose_file_func (opaque, stream) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
{ |
|||
int ret; |
|||
ret = fclose((FILE *)stream); |
|||
return ret; |
|||
} |
|||
|
|||
int ZCALLBACK ferror_file_func (opaque, stream) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
{ |
|||
int ret; |
|||
ret = ferror((FILE *)stream); |
|||
return ret; |
|||
} |
|||
|
|||
void fill_fopen_filefunc (pzlib_filefunc_def) |
|||
zlib_filefunc_def* pzlib_filefunc_def; |
|||
{ |
|||
pzlib_filefunc_def->zopen_file = fopen_file_func; |
|||
pzlib_filefunc_def->zread_file = fread_file_func; |
|||
pzlib_filefunc_def->zwrite_file = fwrite_file_func; |
|||
pzlib_filefunc_def->ztell_file = ftell_file_func; |
|||
pzlib_filefunc_def->zseek_file = fseek_file_func; |
|||
pzlib_filefunc_def->zclose_file = fclose_file_func; |
|||
pzlib_filefunc_def->zerror_file = ferror_file_func; |
|||
pzlib_filefunc_def->opaque = NULL; |
|||
} |
|||
@ -1,75 +0,0 @@ |
|||
/* ioapi.h -- IO base function header for compress/uncompress .zip |
|||
files using zlib + zip or unzip API |
|||
|
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
*/ |
|||
|
|||
#ifndef _ZLIBIOAPI_H |
|||
#define _ZLIBIOAPI_H |
|||
|
|||
|
|||
#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 (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) |
|||
#define ZCALLBACK CALLBACK |
|||
#else |
|||
#define ZCALLBACK |
|||
#endif |
|||
#endif |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#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 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)); |
|||
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); |
|||
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); |
|||
|
|||
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; |
|||
|
|||
|
|||
|
|||
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); |
|||
|
|||
#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) |
|||
#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) |
|||
#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) |
|||
#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) |
|||
#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) |
|||
#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) |
|||
|
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
|
|||
#endif |
|||
|
|||
@ -1,270 +0,0 @@ |
|||
/* iowin32.c -- IO base function header for compress/uncompress .zip |
|||
files using zlib + zip or unzip API |
|||
This IO API version uses the Win32 API (for Microsoft Windows) |
|||
|
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
*/ |
|||
|
|||
#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)); |
|||
|
|||
long ZCALLBACK win32_tell_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream)); |
|||
|
|||
long ZCALLBACK win32_seek_file_func OF(( |
|||
voidpf opaque, |
|||
voidpf stream, |
|||
uLong 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; |
|||
|
|||
voidpf ZCALLBACK win32_open_file_func (opaque, filename, mode) |
|||
voidpf opaque; |
|||
const char* filename; |
|||
int mode; |
|||
{ |
|||
const char* mode_fopen = NULL; |
|||
DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; |
|||
HANDLE hFile = 0; |
|||
voidpf ret=NULL; |
|||
|
|||
dwDesiredAccess = dwShareMode = dwFlagsAndAttributes = 0; |
|||
|
|||
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) |
|||
{ |
|||
dwDesiredAccess = GENERIC_READ; |
|||
dwCreationDisposition = OPEN_EXISTING; |
|||
dwShareMode = FILE_SHARE_READ; |
|||
} |
|||
else |
|||
if (mode & ZLIB_FILEFUNC_MODE_EXISTING) |
|||
{ |
|||
dwDesiredAccess = GENERIC_WRITE | GENERIC_READ; |
|||
dwCreationDisposition = OPEN_EXISTING; |
|||
} |
|||
else |
|||
if (mode & ZLIB_FILEFUNC_MODE_CREATE) |
|||
{ |
|||
dwDesiredAccess = GENERIC_WRITE | GENERIC_READ; |
|||
dwCreationDisposition = CREATE_ALWAYS; |
|||
} |
|||
|
|||
if ((filename!=NULL) && (dwDesiredAccess != 0)) |
|||
hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, |
|||
dwCreationDisposition, dwFlagsAndAttributes, NULL); |
|||
|
|||
if (hFile == INVALID_HANDLE_VALUE) |
|||
hFile = NULL; |
|||
|
|||
if (hFile != NULL) |
|||
{ |
|||
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; |
|||
} |
|||
|
|||
|
|||
uLong ZCALLBACK win32_read_file_func (opaque, stream, buf, size) |
|||
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 (opaque, stream, buf, size) |
|||
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 (opaque, stream) |
|||
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; |
|||
} |
|||
|
|||
long ZCALLBACK win32_seek_file_func (opaque, stream, offset, origin) |
|||
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; |
|||
} |
|||
|
|||
int ZCALLBACK win32_close_file_func (opaque, stream) |
|||
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 (opaque, stream) |
|||
voidpf opaque; |
|||
voidpf stream; |
|||
{ |
|||
int ret=-1; |
|||
if (stream!=NULL) |
|||
{ |
|||
ret = ((WIN32FILE_IOWIN*)stream) -> error; |
|||
} |
|||
return ret; |
|||
} |
|||
|
|||
void fill_win32_filefunc (pzlib_filefunc_def) |
|||
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; |
|||
} |
|||
@ -1,21 +0,0 @@ |
|||
/* iowin32.h -- IO base function header for compress/uncompress .zip |
|||
files using zlib + zip or unzip API |
|||
This IO API version uses the Win32 API (for Microsoft Windows) |
|||
|
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
*/ |
|||
|
|||
#include <windows.h> |
|||
|
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif |
|||
|
|||
void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
@ -1,400 +0,0 @@ |
|||
/* MiniZip 1.00, demo of zLib + Zip package written by Gilles Vollant |
|||
* Modifie le 2 juin 2004 JPC |
|||
*/ |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <time.h> |
|||
#include <errno.h> |
|||
#include <fcntl.h> |
|||
|
|||
#ifndef WIN32 |
|||
# include <unistd.h> |
|||
# include <utime.h> |
|||
# include <sys/types.h> |
|||
# include <sys/stat.h> |
|||
#else |
|||
# include <direct.h> |
|||
# include <io.h> |
|||
#endif |
|||
|
|||
#include "zip.h" |
|||
|
|||
#ifdef WIN32 |
|||
|
|||
//#define USEWIN32IOAPI |
|||
#include "iowin32.h" |
|||
#endif |
|||
|
|||
|
|||
#define WRITEBUFFERSIZE (16384) |
|||
#define MAXFILENAME (1024) |
|||
|
|||
int g_Verbose = 1; |
|||
|
|||
|
|||
/*****************************/ |
|||
uLong filetime( |
|||
const char* filename, /* name of file to get info on */ |
|||
tm_zip* tmzip, /* return value: access, modific. and creation times */ |
|||
uLong* dt ) /* dostime */ |
|||
/*****************************/ |
|||
#ifdef WIN32 |
|||
{ |
|||
int ret = 0; |
|||
|
|||
{ |
|||
FILETIME ftLocal; |
|||
HANDLE hFind; |
|||
WIN32_FIND_DATA ff32; |
|||
|
|||
hFind = FindFirstFile( filename, &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 |
|||
{ |
|||
int ret = 0; |
|||
struct stat s; /* results of stat() */ |
|||
struct tm* filedate; |
|||
time_t tm_t = 0; |
|||
|
|||
if( strcmp( filename, "-" )!=0 ) |
|||
{ |
|||
char name[MAXFILENAME + 10]; |
|||
int len = strlen( filename ); |
|||
|
|||
strncpy( name, filename, MAXFILENAME ); |
|||
/* 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 |
|||
{ |
|||
return 0; |
|||
} |
|||
#endif |
|||
#endif |
|||
|
|||
|
|||
/*******************************************/ |
|||
int check_exist_file( const char* filename ) |
|||
{ |
|||
/*******************************************/ |
|||
FILE* ftestexist; |
|||
int ret = 1; |
|||
|
|||
ftestexist = fopen( filename, "rb" ); |
|||
if( ftestexist == NULL ) |
|||
ret = 0; |
|||
else |
|||
fclose( ftestexist ); |
|||
return ret; |
|||
} |
|||
|
|||
|
|||
/* 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 = fopen( 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; |
|||
if( g_Verbose ) |
|||
printf( "file %s crc %lx\n", filenameinzip, calculate_crc ); |
|||
return err; |
|||
} |
|||
|
|||
|
|||
/********************************/ |
|||
int main( int argc, char* argv[] ) |
|||
{ |
|||
/********************************/ |
|||
int i; |
|||
int opt_overwrite = 0; |
|||
int opt_compress_level = Z_DEFAULT_COMPRESSION; |
|||
int zipfilenamearg = 0; |
|||
char filename_try[MAXFILENAME + 16]; |
|||
int zipok; |
|||
int err = 0; |
|||
int size_buf = 0; |
|||
void* buf = NULL; |
|||
const char* password = NULL; |
|||
|
|||
if( argc <= 1 ) |
|||
{ |
|||
printf( "Usage : minizip [-o] [-a] [-0 to -9] [-p password] file.zip [files_to_add]\n\n" \ |
|||
" -o Overwrite existing file.zip\n" \ |
|||
" -a Append to existing file.zip\n" \ |
|||
" -0 Store only, -1 Compress faster, -9 Compress better [5]\n\n" ); |
|||
return 0; |
|||
} |
|||
|
|||
for( i = 1; i < argc; i++ ) |
|||
{ |
|||
if( (*argv[i])=='-' ) /* Find options */ |
|||
{ |
|||
const char* p = argv[i] + 1; |
|||
|
|||
while( (*p)!='\0' ) |
|||
{ |
|||
char c = *(p++); |
|||
if( (c=='o') || (c=='O') ) |
|||
opt_overwrite = 1; |
|||
else if( (c=='a') || (c=='A') ) |
|||
opt_overwrite = 2; |
|||
else if( (c>='0') && (c<='9') ) |
|||
opt_compress_level = c - '0'; |
|||
|
|||
else if( ( (c=='p') || (c=='P') ) && (i + 1<argc) ) |
|||
{ |
|||
password = argv[i + 1]; |
|||
i++; |
|||
} |
|||
else |
|||
{ |
|||
printf( "Unknown option %c\n", c ); |
|||
err = 1; |
|||
} |
|||
} |
|||
} |
|||
else if( zipfilenamearg == 0 ) |
|||
zipfilenamearg = i; |
|||
} |
|||
|
|||
if( err ) |
|||
return 0; |
|||
|
|||
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 len; |
|||
int dot_found = 0; |
|||
int ret; |
|||
|
|||
zipok = 1; |
|||
strncpy( filename_try, argv[zipfilenamearg], MAXFILENAME ); |
|||
/* 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]; |
|||
printf( "The file %s exist. Overwrite ? [y]es, [n]o, [a]ppend : ", |
|||
filename_try ); |
|||
ret = scanf( "%1s", answer ); |
|||
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_filefunc_def ffunc; |
|||
fill_win32_filefunc( &ffunc ); |
|||
zf = zipOpen2( filename_try, (opt_overwrite==2) ? 2 : 0, NULL, &ffunc ); |
|||
#else |
|||
zf = zipOpen( filename_try, (opt_overwrite==2) ? 2 : 0 ); |
|||
#endif |
|||
|
|||
if( zf == NULL ) |
|||
{ |
|||
printf( "error opening %s\n", filename_try ); |
|||
err = ZIP_ERRNO; |
|||
} |
|||
else |
|||
if( g_Verbose ) |
|||
printf( "creating %s\n", filename_try ); |
|||
|
|||
for( i = zipfilenamearg + 1; (i<argc) && (err==ZIP_OK); i++ ) |
|||
{ |
|||
if( ( ( *(argv[i]) )!='-' ) && ( ( *(argv[i]) )!='/' ) ) |
|||
{ |
|||
FILE* fin = NULL; |
|||
int size_read; |
|||
const char* filenameinzip = argv[i]; |
|||
zip_fileinfo zi; |
|||
unsigned long crcFile = 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 ); |
|||
|
|||
err = zipOpenNewFileInZip3( zf, filenameinzip, &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, |
|||
password, crcFile ); |
|||
|
|||
if( err != ZIP_OK ) |
|||
printf( "error in opening %s in zipfile\n", filenameinzip ); |
|||
else |
|||
{ |
|||
fin = fopen( 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 ); |
|||
} |
|||
|
|||
free( buf ); |
|||
return 0; |
|||
} |
|||
1170
kicad/minizip/zip.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,235 +0,0 @@ |
|||
/* zip.h -- IO for compress .zip files using zlib |
|||
Version 1.00, September 10th, 2003 |
|||
|
|||
Copyright (C) 1998-2003 Gilles Vollant |
|||
|
|||
This unzip package allow creates .ZIP file, compatible with PKZip 2.04g |
|||
WinZip, InfoZip tools and compatible. |
|||
Encryption and multi volume ZipFile (span) are not supported. |
|||
Old compressions used by old PKZip 1.x are not supported |
|||
|
|||
For uncompress .zip file, look at unzip.h |
|||
|
|||
|
|||
I WAIT FEEDBACK at mail info@winimage.com |
|||
Visit also http://www.winimage.com/zLibDll/unzip.html for evolution |
|||
|
|||
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. |
|||
|
|||
|
|||
*/ |
|||
|
|||
/* for more info about .ZIP format, see |
|||
http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip |
|||
http://www.info-zip.org/pub/infozip/doc/ |
|||
PkWare has also a specification at : |
|||
ftp://ftp.pkware.com/probdesc.zip |
|||
*/ |
|||
|
|||
#ifndef _zip_H |
|||
#define _zip_H |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif |
|||
|
|||
#ifndef _ZLIB_H |
|||
#include "zlib.h" |
|||
#endif |
|||
|
|||
#ifndef _ZLIBIOAPI_H |
|||
#include "ioapi.h" |
|||
#endif |
|||
|
|||
#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) |
|||
/* like the STRICT of WIN32, we define a pointer that cannot be converted |
|||
from (void*) without cast */ |
|||
typedef struct TagzipFile__ { int unused; } zipFile__; |
|||
typedef zipFile__ *zipFile; |
|||
#else |
|||
typedef voidp zipFile; |
|||
#endif |
|||
|
|||
#define ZIP_OK (0) |
|||
#define ZIP_EOF (0) |
|||
#define ZIP_ERRNO (Z_ERRNO) |
|||
#define ZIP_PARAMERROR (-102) |
|||
#define ZIP_BADZIPFILE (-103) |
|||
#define ZIP_INTERNALERROR (-104) |
|||
|
|||
#ifndef DEF_MEM_LEVEL |
|||
# if MAX_MEM_LEVEL >= 8 |
|||
# define DEF_MEM_LEVEL 8 |
|||
# else |
|||
# define DEF_MEM_LEVEL MAX_MEM_LEVEL |
|||
# endif |
|||
#endif |
|||
/* default memLevel */ |
|||
|
|||
/* tm_zip contain date/time info */ |
|||
typedef struct tm_zip_s |
|||
{ |
|||
uInt tm_sec; /* seconds after the minute - [0,59] */ |
|||
uInt tm_min; /* minutes after the hour - [0,59] */ |
|||
uInt tm_hour; /* hours since midnight - [0,23] */ |
|||
uInt tm_mday; /* day of the month - [1,31] */ |
|||
uInt tm_mon; /* months since January - [0,11] */ |
|||
uInt tm_year; /* years - [1980..2044] */ |
|||
} tm_zip; |
|||
|
|||
typedef struct |
|||
{ |
|||
tm_zip tmz_date; /* date in understandable format */ |
|||
uLong dosDate; /* if dos_date == 0, tmu_date is used */ |
|||
/* uLong flag; */ /* general purpose bit flag 2 bytes */ |
|||
|
|||
uLong internal_fa; /* internal file attributes 2 bytes */ |
|||
uLong external_fa; /* external file attributes 4 bytes */ |
|||
} zip_fileinfo; |
|||
|
|||
typedef const char* zipcharpc; |
|||
|
|||
|
|||
#define APPEND_STATUS_CREATE (0) |
|||
#define APPEND_STATUS_CREATEAFTER (1) |
|||
#define APPEND_STATUS_ADDINZIP (2) |
|||
|
|||
extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); |
|||
/* |
|||
Create a zipfile. |
|||
pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on |
|||
an Unix computer "zlib/zlib113.zip". |
|||
if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip |
|||
will be created at the end of the file. |
|||
(useful if the file contain a self extractor code) |
|||
if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will |
|||
add files in existing zip (be sure you don't add file that doesn't exist) |
|||
If the zipfile cannot be opened, the return value is NULL. |
|||
Else, the return value is a zipFile Handle, usable with other function |
|||
of this zip package. |
|||
*/ |
|||
|
|||
/* Note : there is no delete function into a zipfile. |
|||
If you want delete file into a zipfile, you must open a zipfile, and create another |
|||
Of couse, you can use RAW reading and writing to copy the file you did not want delte |
|||
*/ |
|||
|
|||
extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, |
|||
int append, |
|||
zipcharpc* globalcomment, |
|||
zlib_filefunc_def* pzlib_filefunc_def)); |
|||
|
|||
extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, |
|||
const char* filename, |
|||
const zip_fileinfo* zipfi, |
|||
const void* extrafield_local, |
|||
uInt size_extrafield_local, |
|||
const void* extrafield_global, |
|||
uInt size_extrafield_global, |
|||
const char* comment, |
|||
int method, |
|||
int level)); |
|||
/* |
|||
Open a file in the ZIP for writing. |
|||
filename : the filename in zip (if NULL, '-' without quote will be used |
|||
*zipfi contain supplemental information |
|||
if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local |
|||
contains the extrafield data the the local header |
|||
if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global |
|||
contains the extrafield data the the local header |
|||
if comment != NULL, comment contain the comment string |
|||
method contain the compression method (0 for store, Z_DEFLATED for deflate) |
|||
level contain the level of compression (can be Z_DEFAULT_COMPRESSION) |
|||
*/ |
|||
|
|||
|
|||
extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, |
|||
const char* filename, |
|||
const zip_fileinfo* zipfi, |
|||
const void* extrafield_local, |
|||
uInt size_extrafield_local, |
|||
const void* extrafield_global, |
|||
uInt size_extrafield_global, |
|||
const char* comment, |
|||
int method, |
|||
int level, |
|||
int raw)); |
|||
|
|||
/* |
|||
Same than zipOpenNewFileInZip, except if raw=1, we write raw file |
|||
*/ |
|||
|
|||
extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, |
|||
const char* filename, |
|||
const zip_fileinfo* zipfi, |
|||
const void* extrafield_local, |
|||
uInt size_extrafield_local, |
|||
const void* extrafield_global, |
|||
uInt size_extrafield_global, |
|||
const char* comment, |
|||
int method, |
|||
int level, |
|||
int raw, |
|||
int windowBits, |
|||
int memLevel, |
|||
int strategy, |
|||
const char* password, |
|||
uLong crcForCtypting)); |
|||
|
|||
/* |
|||
Same than zipOpenNewFileInZip2, except |
|||
windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 |
|||
password : crypting password (NULL for no crypting) |
|||
crcForCtypting : crc of file to compress (needed for crypting) |
|||
*/ |
|||
|
|||
|
|||
extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, |
|||
const void* buf, |
|||
unsigned len)); |
|||
/* |
|||
Write data in the zipfile |
|||
*/ |
|||
|
|||
extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); |
|||
/* |
|||
Close the current file in the zipfile |
|||
*/ |
|||
|
|||
|
|||
extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, |
|||
uLong uncompressed_size, |
|||
uLong crc32)); |
|||
/* |
|||
Close the current file in the zipfile, for fiel opened with |
|||
parameter raw=1 in zipOpenNewFileInZip2 |
|||
uncompressed_size and crc32 are value for the uncompressed size |
|||
*/ |
|||
|
|||
extern int ZEXPORT zipClose OF((zipFile file, |
|||
const char* global_comment)); |
|||
/* |
|||
Close the zipfile |
|||
*/ |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
|
|||
#endif /* _zip_H */ |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue