Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
zip.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <zlib.h>
#include "zip.h"
#include <errno.h>
#include "crypt.h"

Go to the source code of this file.

Classes

struct  linkedlist_datablock_internal_s
 
struct  linkedlist_data_s
 
struct  curfile64_info
 
struct  zip64_internal
 

Macros

#define local   static
 
#define VERSIONMADEBY   (0x0) /* platform depedent */
 
#define Z_BUFSIZE   (64*1024)
 
#define Z_MAXFILENAMEINZIP   (256)
 
#define ALLOC(size)   (malloc(size))
 
#define TRYFREE(p)   {if (p) free(p);}
 
#define MAKEULONG64(a, b)   ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32))
 
#define SEEK_CUR   1
 
#define SEEK_END   2
 
#define SEEK_SET   0
 
#define SIZEDATA_INDATABLOCK   (4096-(4*4))
 
#define LOCALHEADERMAGIC   (0x04034b50)
 
#define CENTRALHEADERMAGIC   (0x02014b50)
 
#define ENDHEADERMAGIC   (0x06054b50)
 
#define ZIP64ENDHEADERMAGIC   (0x6064b50)
 
#define ZIP64ENDLOCHEADERMAGIC   (0x7064b50)
 
#define FLAG_LOCALHEADER_OFFSET   (0x06)
 
#define CRC_LOCALHEADER_OFFSET   (0x0e)
 
#define SIZECENTRALHEADER   (0x2e) /* 46 */
 
#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED
 
#define BUFREADCOMMENT   (0x400)
 

Typedefs

typedef struct linkedlist_datablock_internal_s linkedlist_datablock_internal
 
typedef struct linkedlist_data_s linkedlist_data
 

Functions

static linkedlist_datablock_internalallocate_new_datablock ()
 
static void free_datablock (linkedlist_datablock_internal *ldi)
 
static void init_linkedlist (linkedlist_data *ll)
 
static void free_linkedlist (linkedlist_data *ll)
 
static int add_data_in_datablock (linkedlist_data *ll, const void *buf, uLong len)
 
static int zip64local_putValue OF ((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte))
 
static int zip64local_putValue (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)
 
static void zip64local_putValue_inmemory OF ((void *dest, ZPOS64_T x, int nbByte))
 
static void zip64local_putValue_inmemory (void *dest, ZPOS64_T x, int nbByte)
 
static uLong zip64local_TmzDateToDosDate (const tm_zip *ptm)
 
static int zip64local_getByte OF ((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, int *pi))
 
static int zip64local_getByte (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, int *pi)
 
static int zip64local_getShort OF ((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX))
 
static int zip64local_getShort (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)
 
static int zip64local_getLong (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)
 
static int zip64local_getLong64 OF ((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX))
 
static int zip64local_getLong64 (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)
 
static ZPOS64_T zip64local_SearchCentralDir OF ((const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream))
 
static ZPOS64_T zip64local_SearchCentralDir (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream)
 
static ZPOS64_T zip64local_SearchCentralDir64 (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream)
 
int LoadCentralDirectoryRecord (zip64_internal *pziinit)
 
zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc *globalcomment, zlib_filefunc64_32_def *pzlib_filefunc64_32_def)
 
zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc *globalcomment, zlib_filefunc_def *pzlib_filefunc32_def)
 
zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc *globalcomment, zlib_filefunc64_def *pzlib_filefunc_def)
 
zipFile ZEXPORT zipOpen (const char *pathname, int append)
 
zipFile ZEXPORT zipOpen64 (const void *pathname, int append)
 
int Write_LocalFileHeader (zip64_internal *zi, const char *filename, uInt size_extrafield_local, const void *extrafield_local)
 
int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64)
 
int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase)
 
int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting)
 
int ZEXPORT zipOpenNewFileInZip3_64 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char *password, uLong crcForCrypting, int zip64)
 
int ZEXPORT zipOpenNewFileInZip2 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw)
 
int ZEXPORT zipOpenNewFileInZip2_64 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int raw, int zip64)
 
int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level, int zip64)
 
int ZEXPORT zipOpenNewFileInZip (zipFile file, const char *filename, const zip_fileinfo *zipfi, const void *extrafield_local, uInt size_extrafield_local, const void *extrafield_global, uInt size_extrafield_global, const char *comment, int method, int level)
 
static int zip64FlushWriteBuffer (zip64_internal *zi)
 
int ZEXPORT zipWriteInFileInZip (zipFile file, const void *buf, unsigned int len)
 
int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32)
 
int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32)
 
int ZEXPORT zipCloseFileInZip (zipFile file)
 
int Write_Zip64EndOfCentralDirectoryLocator (zip64_internal *zi, ZPOS64_T zip64eocd_pos_inzip)
 
int Write_Zip64EndOfCentralDirectoryRecord (zip64_internal *zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
 
int Write_EndOfCentralDirectoryRecord (zip64_internal *zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
 
int Write_GlobalComment (zip64_internal *zi, const char *global_comment)
 
int ZEXPORT zipClose (zipFile file, const char *global_comment)
 
int ZEXPORT zipRemoveExtraInfoBlock (char *pData, int *dataLen, short sHeader)
 

Variables

const char zip_copyright [] =" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"
 

Macro Definition Documentation

◆ ALLOC

#define ALLOC (   size)    (malloc(size))

Definition at line 62 of file zip.c.

◆ BUFREADCOMMENT

#define BUFREADCOMMENT   (0x400)

Definition at line 472 of file zip.c.

◆ CENTRALHEADERMAGIC

#define CENTRALHEADERMAGIC   (0x02014b50)

Definition at line 104 of file zip.c.

◆ CRC_LOCALHEADER_OFFSET

#define CRC_LOCALHEADER_OFFSET   (0x0e)

Definition at line 110 of file zip.c.

◆ ENDHEADERMAGIC

#define ENDHEADERMAGIC   (0x06054b50)

Definition at line 105 of file zip.c.

◆ FLAG_LOCALHEADER_OFFSET

#define FLAG_LOCALHEADER_OFFSET   (0x06)

Definition at line 109 of file zip.c.

◆ INCLUDECRYPTINGCODE_IFCRYPTALLOWED

#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED

Definition at line 185 of file zip.c.

◆ local

#define local   static

Definition at line 45 of file zip.c.

◆ LOCALHEADERMAGIC

#define LOCALHEADERMAGIC   (0x04034b50)

Definition at line 103 of file zip.c.

◆ MAKEULONG64

#define MAKEULONG64 (   a,
 
)    ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32))

Definition at line 77 of file zip.c.

◆ SEEK_CUR

#define SEEK_CUR   1

Definition at line 80 of file zip.c.

◆ SEEK_END

#define SEEK_END   2

Definition at line 84 of file zip.c.

◆ SEEK_SET

#define SEEK_SET   0

Definition at line 88 of file zip.c.

◆ SIZECENTRALHEADER

#define SIZECENTRALHEADER   (0x2e) /* 46 */

Definition at line 112 of file zip.c.

◆ SIZEDATA_INDATABLOCK

#define SIZEDATA_INDATABLOCK   (4096-(4*4))

Definition at line 101 of file zip.c.

◆ TRYFREE

#define TRYFREE (   p)    {if (p) free(p);}

Definition at line 65 of file zip.c.

◆ VERSIONMADEBY

#define VERSIONMADEBY   (0x0) /* platform depedent */

Definition at line 50 of file zip.c.

◆ Z_BUFSIZE

#define Z_BUFSIZE   (64*1024)

Definition at line 54 of file zip.c.

◆ Z_MAXFILENAMEINZIP

#define Z_MAXFILENAMEINZIP   (256)

Definition at line 58 of file zip.c.

◆ ZIP64ENDHEADERMAGIC

#define ZIP64ENDHEADERMAGIC   (0x6064b50)

Definition at line 106 of file zip.c.

◆ ZIP64ENDLOCHEADERMAGIC

#define ZIP64ENDLOCHEADERMAGIC   (0x7064b50)

Definition at line 107 of file zip.c.

Typedef Documentation

◆ linkedlist_data

◆ linkedlist_datablock_internal

Function Documentation

◆ add_data_in_datablock()

static int add_data_in_datablock ( linkedlist_data ll,
const void *  buf,
uLong  len 
)
static

Definition at line 225 of file zip.c.

◆ allocate_new_datablock()

static linkedlist_datablock_internal * allocate_new_datablock ( )
static

Definition at line 189 of file zip.c.

◆ free_datablock()

static void free_datablock ( linkedlist_datablock_internal ldi)
static

Definition at line 203 of file zip.c.

◆ free_linkedlist()

static void free_linkedlist ( linkedlist_data ll)
static

Definition at line 218 of file zip.c.

◆ init_linkedlist()

static void init_linkedlist ( linkedlist_data ll)
static

Definition at line 213 of file zip.c.

◆ LoadCentralDirectoryRecord()

int LoadCentralDirectoryRecord ( zip64_internal pziinit)

Definition at line 640 of file zip.c.

◆ OF() [1/6]

static ZPOS64_T zip64local_SearchCentralDir OF ( (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream)  )
static

◆ OF() [2/6]

static int zip64local_getByte OF ( (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, int *pi)  )
static

◆ OF() [3/6]

static int zip64local_getShort OF ( (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)  )
static

◆ OF() [4/6]

static int zip64local_getLong64 OF ( (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)  )
static

◆ OF() [5/6]

static int zip64local_putValue OF ( (const zlib_filefunc64_32_def *pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)  )
static

◆ OF() [6/6]

static void zip64local_putValue_inmemory OF ( (void *dest, ZPOS64_T x, int nbByte)  )
static

◆ Write_EndOfCentralDirectoryRecord()

int Write_EndOfCentralDirectoryRecord ( zip64_internal zi,
uLong  size_centraldir,
ZPOS64_T  centraldir_pos_inzip 
)

Definition at line 1813 of file zip.c.

◆ Write_GlobalComment()

int Write_GlobalComment ( zip64_internal zi,
const char *  global_comment 
)

Definition at line 1861 of file zip.c.

◆ Write_LocalFileHeader()

int Write_LocalFileHeader ( zip64_internal zi,
const char *  filename,
uInt  size_extrafield_local,
const void *  extrafield_local 
)

Definition at line 958 of file zip.c.

◆ Write_Zip64EndOfCentralDirectoryLocator()

int Write_Zip64EndOfCentralDirectoryLocator ( zip64_internal zi,
ZPOS64_T  zip64eocd_pos_inzip 
)

Definition at line 1752 of file zip.c.

◆ Write_Zip64EndOfCentralDirectoryRecord()

int Write_Zip64EndOfCentralDirectoryRecord ( zip64_internal zi,
uLong  size_centraldir,
ZPOS64_T  centraldir_pos_inzip 
)

Definition at line 1774 of file zip.c.

◆ zip64FlushWriteBuffer()

static int zip64FlushWriteBuffer ( zip64_internal zi)
static

Definition at line 1362 of file zip.c.

◆ zip64local_getByte()

static int zip64local_getByte ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream,
int *  pi 
)
static

Definition at line 349 of file zip.c.

◆ zip64local_getLong()

static int zip64local_getLong ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream,
uLong *  pX 
)
static

Definition at line 395 of file zip.c.

◆ zip64local_getLong64()

static int zip64local_getLong64 ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream,
ZPOS64_T pX 
)
static

Definition at line 426 of file zip.c.

◆ zip64local_getShort()

static int zip64local_getShort ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream,
uLong *  pX 
)
static

Definition at line 373 of file zip.c.

◆ zip64local_putValue()

static int zip64local_putValue ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream,
ZPOS64_T  x,
int  nbByte 
)
static

Definition at line 287 of file zip.c.

◆ zip64local_putValue_inmemory()

static void zip64local_putValue_inmemory ( void *  dest,
ZPOS64_T  x,
int  nbByte 
)
static

Definition at line 311 of file zip.c.

◆ zip64local_SearchCentralDir()

static ZPOS64_T zip64local_SearchCentralDir ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream 
)
static

Definition at line 480 of file zip.c.

◆ zip64local_SearchCentralDir64()

static ZPOS64_T zip64local_SearchCentralDir64 ( const zlib_filefunc64_32_def pzlib_filefunc_def,
voidpf  filestream 
)
static

Definition at line 542 of file zip.c.

◆ zip64local_TmzDateToDosDate()

static uLong zip64local_TmzDateToDosDate ( const tm_zip ptm)
static

Definition at line 332 of file zip.c.

◆ zipClose()

int ZEXPORT zipClose ( zipFile  file,
const char *  global_comment 
)

Definition at line 1879 of file zip.c.

◆ zipCloseFileInZip()

int ZEXPORT zipCloseFileInZip ( zipFile  file)

Definition at line 1747 of file zip.c.

◆ zipCloseFileInZipRaw()

int ZEXPORT zipCloseFileInZipRaw ( zipFile  file,
uLong  uncompressed_size,
uLong  crc32 
)

Definition at line 1508 of file zip.c.

◆ zipCloseFileInZipRaw64()

int ZEXPORT zipCloseFileInZipRaw64 ( zipFile  file,
ZPOS64_T  uncompressed_size,
uLong  crc32 
)

set internal file attributes field

Definition at line 1513 of file zip.c.

◆ zipOpen()

zipFile ZEXPORT zipOpen ( const char *  pathname,
int  append 
)

Definition at line 948 of file zip.c.

◆ zipOpen2()

zipFile ZEXPORT zipOpen2 ( const char *  pathname,
int  append,
zipcharpc globalcomment,
zlib_filefunc_def pzlib_filefunc32_def 
)

Definition at line 920 of file zip.c.

◆ zipOpen2_64()

zipFile ZEXPORT zipOpen2_64 ( const void *  pathname,
int  append,
zipcharpc globalcomment,
zlib_filefunc64_def pzlib_filefunc_def 
)

Definition at line 932 of file zip.c.

◆ zipOpen3()

zipFile ZEXPORT zipOpen3 ( const void *  pathname,
int  append,
zipcharpc globalcomment,
zlib_filefunc64_32_def pzlib_filefunc64_32_def 
)

Definition at line 849 of file zip.c.

◆ zipOpen64()

zipFile ZEXPORT zipOpen64 ( const void *  pathname,
int  append 
)

Definition at line 953 of file zip.c.

◆ zipOpenNewFileInZip()

int ZEXPORT zipOpenNewFileInZip ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level 
)

Definition at line 1349 of file zip.c.

◆ zipOpenNewFileInZip2()

int ZEXPORT zipOpenNewFileInZip2 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw 
)

Definition at line 1310 of file zip.c.

◆ zipOpenNewFileInZip2_64()

int ZEXPORT zipOpenNewFileInZip2_64 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw,
int  zip64 
)

Definition at line 1323 of file zip.c.

◆ zipOpenNewFileInZip3()

int ZEXPORT zipOpenNewFileInZip3 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw,
int  windowBits,
int  memLevel,
int  strategy,
const char *  password,
uLong  crcForCrypting 
)

Definition at line 1280 of file zip.c.

◆ zipOpenNewFileInZip3_64()

int ZEXPORT zipOpenNewFileInZip3_64 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw,
int  windowBits,
int  memLevel,
int  strategy,
const char *  password,
uLong  crcForCrypting,
int  zip64 
)

Definition at line 1295 of file zip.c.

◆ zipOpenNewFileInZip4()

int ZEXPORT zipOpenNewFileInZip4 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw,
int  windowBits,
int  memLevel,
int  strategy,
const char *  password,
uLong  crcForCrypting,
uLong  versionMadeBy,
uLong  flagBase 
)

Definition at line 1264 of file zip.c.

◆ zipOpenNewFileInZip4_64()

int ZEXPORT zipOpenNewFileInZip4_64 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  raw,
int  windowBits,
int  memLevel,
int  strategy,
const char *  password,
uLong  crcForCrypting,
uLong  versionMadeBy,
uLong  flagBase,
int  zip64 
)

Definition at line 1055 of file zip.c.

◆ zipOpenNewFileInZip64()

int ZEXPORT zipOpenNewFileInZip64 ( zipFile  file,
const char *  filename,
const zip_fileinfo zipfi,
const void *  extrafield_local,
uInt  size_extrafield_local,
const void *  extrafield_global,
uInt  size_extrafield_global,
const char *  comment,
int  method,
int  level,
int  zip64 
)

Definition at line 1336 of file zip.c.

◆ zipRemoveExtraInfoBlock()

int ZEXPORT zipRemoveExtraInfoBlock ( char *  pData,
int *  dataLen,
short  sHeader 
)

Definition at line 1948 of file zip.c.

◆ zipWriteInFileInZip()

int ZEXPORT zipWriteInFileInZip ( zipFile  file,
const void *  buf,
unsigned int  len 
)

Definition at line 1401 of file zip.c.

Variable Documentation

◆ zip_copyright

const char zip_copyright[] =" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"

Definition at line 98 of file zip.c.