From 779626d42122e00ba345dc1f49c44236971e04c2 Mon Sep 17 00:00:00 2001 From: MELERIX Date: Thu, 7 May 2015 23:25:02 -0300 Subject: [PATCH] zlib cleanup - Removed the old zlib files. - PJ64 now uses the new zlib 1.2.8 files. --- Source/3rd Party/zlib/contrib/minizip/ioapi.h | 2 +- Source/3rd Party/zlib/contrib/minizip/unzip.c | 2 +- Source/3rd Party/zlib/contrib/minizip/unzip.h | 2 +- Source/3rd Party/zlib/contrib/minizip/zip.c | 2 +- Source/3rd Party/zlib/contrib/minizip/zip.h | 2 +- Source/3rd Party/zlib/zlib.vcxproj | 3 +- Source/Project64/3rd Party/zip.h | 6 +- Source/Project64/3rd Party/zlib/UNZIP.C | 1259 --------------- Source/Project64/3rd Party/zlib/UNZIP.H | 275 ---- Source/Project64/3rd Party/zlib/ZCONF.H | 332 ---- Source/Project64/3rd Party/zlib/ZLIB.H | 1357 ----------------- Source/Project64/3rd Party/zlib/ZLIB113.LIB | Bin 87702 -> 0 bytes Source/Project64/3rd Party/zlib/zdll.exp | Bin 6109 -> 0 bytes Source/Project64/3rd Party/zlib/zdll.lib | Bin 10590 -> 0 bytes Source/Project64/3rd Party/zlib/zip.c | 694 --------- Source/Project64/3rd Party/zlib/zip.h | 150 -- Source/Project64/3rd Party/zlib/zlib.def | 60 - Source/Project64/Project64.vcproj | 12 +- Source/Project64/Project64.vcxproj | 14 +- Source/Project64/Project64.vcxproj.filters | 12 +- 20 files changed, 29 insertions(+), 4155 deletions(-) delete mode 100644 Source/Project64/3rd Party/zlib/UNZIP.C delete mode 100644 Source/Project64/3rd Party/zlib/UNZIP.H delete mode 100644 Source/Project64/3rd Party/zlib/ZCONF.H delete mode 100644 Source/Project64/3rd Party/zlib/ZLIB.H delete mode 100644 Source/Project64/3rd Party/zlib/ZLIB113.LIB delete mode 100644 Source/Project64/3rd Party/zlib/zdll.exp delete mode 100644 Source/Project64/3rd Party/zlib/zdll.lib delete mode 100644 Source/Project64/3rd Party/zlib/zip.c delete mode 100644 Source/Project64/3rd Party/zlib/zip.h delete mode 100644 Source/Project64/3rd Party/zlib/zlib.def diff --git a/Source/3rd Party/zlib/contrib/minizip/ioapi.h b/Source/3rd Party/zlib/contrib/minizip/ioapi.h index 8dcbdb06e..f2138cc77 100644 --- a/Source/3rd Party/zlib/contrib/minizip/ioapi.h +++ b/Source/3rd Party/zlib/contrib/minizip/ioapi.h @@ -43,7 +43,7 @@ #include #include -#include "zlib.h" +#include "../../zlib.h" #if defined(USE_FILE32API) #define fopen64 fopen diff --git a/Source/3rd Party/zlib/contrib/minizip/unzip.c b/Source/3rd Party/zlib/contrib/minizip/unzip.c index 909350435..b63c0c39e 100644 --- a/Source/3rd Party/zlib/contrib/minizip/unzip.c +++ b/Source/3rd Party/zlib/contrib/minizip/unzip.c @@ -72,7 +72,7 @@ #define NOUNCRYPT #endif -#include "zlib.h" +#include "../../zlib.h" #include "unzip.h" #ifdef STDC diff --git a/Source/3rd Party/zlib/contrib/minizip/unzip.h b/Source/3rd Party/zlib/contrib/minizip/unzip.h index 2104e3915..e563428f8 100644 --- a/Source/3rd Party/zlib/contrib/minizip/unzip.h +++ b/Source/3rd Party/zlib/contrib/minizip/unzip.h @@ -48,7 +48,7 @@ extern "C" { #endif #ifndef _ZLIB_H -#include "zlib.h" +#include "../../zlib.h" #endif #ifndef _ZLIBIOAPI_H diff --git a/Source/3rd Party/zlib/contrib/minizip/zip.c b/Source/3rd Party/zlib/contrib/minizip/zip.c index ea54853e8..63ad73cae 100644 --- a/Source/3rd Party/zlib/contrib/minizip/zip.c +++ b/Source/3rd Party/zlib/contrib/minizip/zip.c @@ -26,7 +26,7 @@ #include #include #include -#include "zlib.h" +#include "../../zlib.h" #include "zip.h" #ifdef STDC diff --git a/Source/3rd Party/zlib/contrib/minizip/zip.h b/Source/3rd Party/zlib/contrib/minizip/zip.h index 8aaebb623..1664dc08d 100644 --- a/Source/3rd Party/zlib/contrib/minizip/zip.h +++ b/Source/3rd Party/zlib/contrib/minizip/zip.h @@ -47,7 +47,7 @@ extern "C" { //#define HAVE_BZIP2 #ifndef _ZLIB_H -#include "zlib.h" +#include "../../zlib.h" #endif #ifndef _ZLIBIOAPI_H diff --git a/Source/3rd Party/zlib/zlib.vcxproj b/Source/3rd Party/zlib/zlib.vcxproj index 442b18364..8e5a6ef46 100644 --- a/Source/3rd Party/zlib/zlib.vcxproj +++ b/Source/3rd Party/zlib/zlib.vcxproj @@ -32,7 +32,8 @@ - Level3 + Level4 + 4100;4127;4131;4189;4244;4701;4703;4996 diff --git a/Source/Project64/3rd Party/zip.h b/Source/Project64/3rd Party/zip.h index 1f6b0950a..90bab3205 100644 --- a/Source/Project64/3rd Party/zip.h +++ b/Source/Project64/3rd Party/zip.h @@ -1,4 +1,4 @@ -#pragma comment(lib, "3rd Party\\zlib\\zdll.lib") +#pragma once -#include "Zlib\\unzip.h" -#include "Zlib\\zip.h" +#include "../3rd Party/zlib/contrib/minizip/unzip.h" +#include "../3rd Party/zlib/contrib/minizip/zip.h" diff --git a/Source/Project64/3rd Party/zlib/UNZIP.C b/Source/Project64/3rd Party/zlib/UNZIP.C deleted file mode 100644 index ccf805204..000000000 --- a/Source/Project64/3rd Party/zlib/UNZIP.C +++ /dev/null @@ -1,1259 +0,0 @@ -/* unzip.c -- IO on .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Read unzip.h for more info -*/ - - -#include -#include -#include -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - - -#if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) && \ - !defined(CASESENSITIVITYDEFAULT_NO) -#define CASESENSITIVITYDEFAULT_NO -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - - -/* 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 - -const char unz_copyright[] = - " unzip 0.15 Copyright 1998 Gilles Vollant "; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info_internal_s -{ - uLong offset_curfile;/* relative offset of local header 4 bytes */ -} unz_file_info_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - - uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - uLong offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - uLong pos_local_extrafield; /* position in the local extra field in read*/ - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - uLong rest_read_compressed; /* number of byte to be decompressed */ - uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - FILE* file; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ -} file_in_zip_read_info_s; - - -/* unz_s contain internal information about the zipfile -*/ -typedef struct -{ - FILE* file; /* io structore of the zipfile */ - unz_global_info gi; /* public global information */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - uLong num_file; /* number of the current file in the zipfile*/ - uLong pos_in_central_dir; /* pos of the current file in the central dir*/ - uLong current_file_ok; /* flag about the usability of the current file*/ - uLong central_pos; /* position of the beginning of the central dir*/ - - uLong size_central_dir; /* size of the central directory */ - uLong offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info cur_file_info; /* public info about the current file in zip*/ - unz_file_info_internal cur_file_info_internal; /* private info about it*/ - file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ -} unz_s; - - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unzlocal_getByte(FILE *fin, int *pi) -{ - unsigned char c; - int err = fread(&c, 1, 1, fin); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ferror(fin)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unzlocal_getShort (FILE *fin, uLong *pX) -{ - uLong x ; - int i; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unzlocal_getLong (FILE *fin, uLong *pX) -{ - uLong x ; - int i; - int err; - - err = unzlocal_getByte(fin,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unzlocal_getByte(fin,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2) -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (const char* fileName1, const char* fileName2,int iCaseSensitivity) -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#define BUFREADCOMMENT (0x400) - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local uLong unzlocal_SearchCentralDir(FILE *fin) -{ - unsigned char* buf; - uLong uSizeFile; - uLong uBackRead; - uLong uMaxBack=0xffff; /* maximum size of global comment */ - uLong uPosFound=0; - - if (fseek(fin,0,SEEK_END) != 0) - return 0; - - - uSizeFile = ftell( fin ); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); - if (fseek(fin,uReadPos,SEEK_SET)!=0) - break; - - if (fread(buf,(uInt)uReadSize,1,fin)!=1) - break; - - for (i=0;i<(int)uReadSize-3;i++) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib109.zip" or on an Unix computer - "zlib/zlib109.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -extern unzFile ZEXPORT unzOpen (const char *path) -{ - unz_s us; - unz_s *s; - uLong central_pos,uL; - FILE * fin ; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - uLong number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - fin=fopen(path,"rb"); - if (fin==NULL) - return NULL; - - central_pos = unzlocal_SearchCentralDir(fin); - if (central_pos==0) - err=UNZ_ERRNO; - - if (fseek(fin,central_pos,SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unzlocal_getLong(fin,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir */ - if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* zipfile comment length */ - if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - fclose(s->file); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info * pglobal_info) -{ - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - - -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz* ptm) -{ - uLong uDate; - uDate = (uLong)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unzlocal_GetCurrentFileInfoInternal( - unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize ) -{ - unz_s* s; - unz_file_info file_info; - unz_file_info_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (fseek(s->file,s->pos_in_central_dir+s->byte_before_the_zipfile,SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - - if (unzlocal_getShort(s->file,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unzlocal_getLong(s->file,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (fread(szFileName,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - - if ((err==UNZ_OK) && (extraField!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_extrafile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek += file_info.size_file_extra - uSizeRead; - } - else - lSeek+=file_info.size_file_extra; - - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentfile,lSeek,SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo( - unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize ) -{ - return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (unzFile file) -{ - int err=UNZ_OK; - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (unzFile file) -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile( - unzFile file, - const char *szFileName, - int iCaseSensitivity ) -{ - unz_s* s; - int err; - - - uLong num_fileSaved; - uLong pos_in_central_dirSaved; - - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - unzGetCurrentFileInfo(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - return err; -} - - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unzlocal_CheckCurrentFileCoherencyHeader( - unz_s* s, - uInt* piSizeVar, - uLong *poffset_local_extrafield, - uInt *psize_local_extrafield ) -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (fseek(s->file,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unzlocal_getShort(s->file,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(s->file,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(s->file,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - - if (unzlocal_getShort(s->file,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unzlocal_getShort(s->file,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile (unzFile file) -{ - int err=UNZ_OK; - int Store; - uInt iSizeVar; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uLong offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, - &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip_read_info_s*) - ALLOC(sizeof(file_in_zip_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - Store = s->cur_file_info.compression_method==0; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->compression_method = - s->cur_file_info.compression_method; - pfile_in_zip_read_info->file=s->file; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if (!Store) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=1; - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - - s->pfile_in_zip_read = pfile_in_zip_read_info; - return UNZ_OK; -} - - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile( - unzFile file, - voidp buf, - unsigned len ) -{ - int err=UNZ_OK; - uInt iRead = 0; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->read_buffer == NULL)) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if (len>pfile_in_zip_read_info->rest_read_uncompressed) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0) - return UNZ_ERRNO; - if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1, - pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if (pfile_in_zip_read_info->compression_method==0) - { - uInt uDoCopy,i ; - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else - { - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (unzFile file) -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (unzFile file) -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - - - -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield( - unzFile file, - voidp buf, - unsigned len ) -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uInt read_now; - uLong size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (fseek(pfile_in_zip_read_info->file, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (unzFile file) -{ - int err=UNZ_OK; - - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised) - inflateEnd(&pfile_in_zip_read_info->stream); - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment( - unzFile file, - char *szComment, - uLong uSizeBuf ) -{ - unz_s* s; - uLong uReadThis ; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (fseek(s->file,s->central_pos+22,SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (fread(szComment,(uInt)uReadThis,1,s->file)!=1) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} - diff --git a/Source/Project64/3rd Party/zlib/UNZIP.H b/Source/Project64/3rd Party/zlib/UNZIP.H deleted file mode 100644 index 5692cc8d0..000000000 --- a/Source/Project64/3rd Party/zlib/UNZIP.H +++ /dev/null @@ -1,275 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 0.15 beta, Mar 19th, 1998, - - Copyright (C) 1998 Gilles Vollant - - This unzip package allow extract file from .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 - - THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE - CAN CHANGE IN FUTURE VERSION !! - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm 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 - ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip */ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_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_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\zlib\\zlib111.zip" or on an Unix computer - "zlib/zlib111.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ diff --git a/Source/Project64/3rd Party/zlib/ZCONF.H b/Source/Project64/3rd Party/zlib/ZCONF.H deleted file mode 100644 index e3b0c962e..000000000 --- a/Source/Project64/3rd Party/zlib/ZCONF.H +++ /dev/null @@ -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 - /* 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 /* for off_t */ -# include /* for SEEK_* and off_t */ -# ifdef VMS -# include /* 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 */ diff --git a/Source/Project64/3rd Party/zlib/ZLIB.H b/Source/Project64/3rd Party/zlib/ZLIB.H deleted file mode 100644 index 62d0e4675..000000000 --- a/Source/Project64/3rd Party/zlib/ZLIB.H +++ /dev/null @@ -1,1357 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.3, July 18th, 2005 - - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler - - 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. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.3" -#define ZLIB_VERNUM 0x1230 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms will be added later and will have the same - stream interface. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never - crash even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce some - output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumualte before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In particular - avail_in is zero after the call if enough output space has been provided - before the call.) Flushing may degrade compression for some compression - algorithms and so it should be used only when necessary. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - the value returned by deflateBound (see below). If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the exact - value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller. msg is set to null if there is no error - message. inflateInit does not perform any decompression apart from reading - the zlib header if present: this will be done by inflate(). (So next_in and - avail_in may be modified, but next_out and avail_out are unchanged.) -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, - Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() stop - if and when it gets to the next deflate block boundary. When decoding the - zlib or gzip format, this will cause inflate() to return immediately after - the header and before the first block. When doing a raw inflate, inflate() - will go ahead and process the first block, and will return when it gets to - the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 - if inflate() is currently decoding the last block in the deflate stream, - plus 128 if inflate() returned immediately after decoding an end-of-block - code or decoding the complete header up to just before the first byte of the - deflate stream. The end-of-block will not be indicated until all of the - uncompressed data from that block has been written to strm->next_out. The - number of unused bits may in general be greater than seven, except when - bit 7 of data_type is set, in which case the number of unused bits will be - less than eight. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster approach - may be used for the single inflate() call. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the only effect of the flush parameter in this implementation - is on the return value of inflate(), as noted below, or when it returns early - because Z_BLOCK is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the adler32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the adler32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() will decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically. Any information - contained in the gzip header is not retained, so applications that need that - information should instead use raw inflate, see inflateInit2() below, or - inflateBack() and perform their own processing of the gzip header and - trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may then - call inflateSync() to look for a good compression block if a partial recovery - of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), - no header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as - Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy - parameter only affects the compression ratio but not the correctness of the - compressed output even if it is not set appropriately. Z_FIXED prevents the - use of dynamic Huffman codes, allowing for a simpler decoder for special - applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid - method). msg is set to null if there is no error message. deflateInit2 does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit, deflateInit2 or deflateReset, before any - call of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size in - deflate or deflate2. Thus the strings most likely to be useful should be - put at the end of the dictionary, not at the front. In addition, the - current implementation of deflate will use at most the window size minus - 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different - strategy. If the compression level is changed, the input available so far - is compressed with the old level (and may be flushed); the new level will - take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() - or deflateInit2(). This would be used to allocate an output buffer - for deflation in a single pass, and so would be called before deflate(). -*/ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the - bits leftover from a previous deflate stream when appending to it. As such, - this function can only be used for raw deflate, and must be used before the - first deflate() call after a deflateInit2() or deflateReset(). bits must be - less than or equal to 16, and that many of the least significant bits of - value will be inserted in the output. - - deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is - a crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg - is set to null if there is no error message. inflateInit2 does not perform - any decompression apart from reading the zlib header if present: this will - be done by inflate(). (So next_in and avail_in may be modified, but next_out - and avail_out are unchanged.) -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called - immediately after inflateInit2() or inflateReset() and before any call of - inflate() to set the dictionary. The application must insure that the - dictionary that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been found, - or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which - indicates where valid compressed data was found. In the error case, the - application may repeatedly call inflateSync, providing more input each time, - until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. - The stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK can be used to - force inflate() to return immediately after header processing is complete - and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When - any of extra, name, or comment are not Z_NULL and the respective field is - not present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the paramaters are invalid, Z_MEM_ERROR if the internal state could not - be allocated, or Z_VERSION_ERROR if the version of the library does not - match the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is more efficient than inflate() for - file i/o applications in that it avoids copying between the output and the - sliding window by simply making the window itself the output buffer. This - function trusts the application to not change the output buffer passed by - the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free - the allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects - only the raw deflate stream to decompress. This is different from the - normal behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format - error in the deflate stream (in which case strm->msg is set to indicate the - nature of the error), or Z_STREAM_ERROR if the stream was not properly - initialized. In the case of Z_BUF_ERROR, an input or output error can be - distinguished using strm->next_in which will be Z_NULL only if in() returned - an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to - out() returning non-zero. (in() will always be called before out(), so - strm->next_in is assured to be defined if out() returns non-zero.) Note - that inflateBack() cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - - - /* utility functions */ - -/* - The following utility functions are implemented on top of the - basic stream-oriented functions. To simplify the interface, some - default options are assumed (compression level and memory usage, - standard memory allocation functions). The source code of these - utility functions can easily be modified if you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be at least the value returned - by compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - This function can be used to compress a whole file at once if the - input file is mmap'ed. - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before - a compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. -*/ - - -typedef voidp gzFile; - -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); -/* - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb") but can also include a compression level - ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for - Huffman only compression as in "wb1h", or 'R' for run-length encoding - as in "wb1R". (See the description of deflateInit2 for more information - about the strategy parameter.) - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. - - gzopen returns NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). */ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen() associates a gzFile with the file descriptor fd. File - descriptors are obtained from calls like open, dup, creat, pipe or - fileno (in the file has been previously opened with fopen). - The mode parameter is as in gzopen. - The next call of gzclose on the returned gzFile will also close the - file descriptor fd, just like fclose(fdopen(fd), mode) closes the file - descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). - gzdopen returns NULL if there was insufficient memory to allocate - the (de)compression state. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. - If the input file was not in gzip format, gzread copies the given number - of bytes into the buffer. - gzread returns the number of uncompressed bytes actually read (0 for - end of file, -1 for error). */ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes actually written - (0 in case of error). -*/ - -ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). The number of - uncompressed bytes written is limited to 4095. The caller should assure that - this limit is not exceeded. If it is exceeded, then gzprintf() will return - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() - because the secure snprintf() or vsnprintf() functions were not available. -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or - a newline character is read and transferred to buf, or an end-of-file - condition is encountered. The string is then terminated with a null - character. - gzgets returns buf, or Z_NULL in case of error. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read again later. - Only one character of push-back is allowed. gzungetc() returns the - character pushed, or -1 on failure. gzungetc() will fail if a - character has been pushed but not read yet, or if c is -1. The pushed - character will be discarded if the stream is repositioned with gzseek() - or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. The return value is the zlib - error number (see function gzerror below). gzflush returns Z_OK if - the flush parameter is Z_FINISH and all output could be flushed. - gzflush should be called only when strictly necessary because it can - degrade compression. -*/ - -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); -/* - Sets the starting position for the next gzread or gzwrite on the - given compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); -/* - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns 1 if file is being read directly without decompression, otherwise - zero. -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. The return value is the zlib - error number (see function gzerror below). -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the - given compressed file. errnum is set to zlib error number. If an - error occurred in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the - compression library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is NULL, this function returns - the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); -/* - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is NULL, this function returns the required initial - value for the for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - -/* - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, sizeof(z_stream)) - - -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; /* hack for buggy compilers */ -#endif - -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); -ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/Source/Project64/3rd Party/zlib/ZLIB113.LIB b/Source/Project64/3rd Party/zlib/ZLIB113.LIB deleted file mode 100644 index 14bc50f8beae9070765144078e70dbfa8719f1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87702 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 ACjbBd diff --git a/Source/Project64/3rd Party/zlib/zdll.exp b/Source/Project64/3rd Party/zlib/zdll.exp deleted file mode 100644 index 2ca08c591a977ad1b7505b3b909a662817230ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6109 zcmeI0Uu+!39ml_M95#R<&Ob;(0wy@YA;H|8&-R(p)=8WYH;!W*hXM_3E_dt8H5cEp zcWx33wQ0ozRZ#^J5>%p69uVRom3YVlm8b-W2awvT52&hC9;y~qRfR+=A@z?U(eM0b zW^ZQ}^|=on*}whHXJ&S1fAeSOcQdPc@Q)9Fe_+>*Km(Fi4M){-r>rx|KG_RYd3}#p zmA=jYN&XF2qch93!4rz9^mYFKd9BFAOrrmQ%BW{pxQb%L{9E?_>;JL`R-p&0(Tg>> z0Rh(HM%;v((T7`bE7qYO>#+eFu?d@T8*axIY{fR*f$i9VJ8>5Va5r}19t>g^cH>?Q zVGr)ZUhKpD7{&w0A&&x98uc^z;cBCSaR5^7N=WN*Sw`Aj21ZKcwP%5fCOBAac6s?Aok#B0=CR5p&As&uij+&;@IZ&1;f zHZP`XE3PkfRPENXl=7lV-124 zNqfp%50oqCEK^!JC{?7K6j~sTG=-^p#*wDLX`#JkN?dPQcxkC(?|*`NuF2QM@=`MH zD~H5OYGxedT&Opq!;NySEmP&uC~njF;4B1ZCpa&+)2#qDo}9 zi)zsx74;C=7Ev8q^)3M>$+n8RNPA4w6xlXW&(O|_Izo1bsLQm+Ma__H7xgTy@MCq+F=cAu!XX`d4H9NAt`@6d*#o+sNU>V4YNqFx}oU(^S*Wl=AY z4U76E?HN(8kUb#kH?$Q|uaf0NeMDOob%iW1>UXq}sMp8}qCTcw6!iv~Is*jw18q&z zRkEU}PiW7IdXsEa)L&@pqOOsRiTadQokjw@MK&(#Z?xw`y-ijU)kC{Z)-6}`3coSK z(Z$vfHueWBSj~Tx0xse;eH)I|D{-^kTkQnVvn0Nwp&l*Q;y#PT`9$REzWx ziBBPEugsSDslaYNOOv?P`i{D<8bV8StKQbNZg6S(Y>d=5YINFG1&NCB^VWCYhdQpCF+8O5(XGKN2S zWE_9@ND0?HGJ#$WZOW^K9Qr(x#|DoSu+1YQ*y)iX_IP9zIggBC+#}1u#12t>lR95IJpkiBfa^edGl0)_KCOBS&(#j@ox^l0NHWxl&=M}4=>E~kzvQ+ujS zJs9BUTLlL;7BEXG6`!PHJ~ssUlK9XG@7yrZi79nVXk!>B474y6*rWp|CnWl^=qnTH z*iguid{aS^ivPNSUlMqxBHbjm{V&m)TcrBt1asZ+j0-Il>4vt0NK~OKwcG3t=jOyO zwnz<=)ut!uY?u_9VX=jJC~Qu<*XG>u4!wS-LUgt2b)ZcZM-o(1b-l`r38d|Ul(9=^ z8kc!O_6rFZDn4^&M9Z2**a=ml5L_pNMUMzgqcYt#IBhzteg>sxnJ`m~@2Lmnb?L&9le0&| Jsr?K4@gEyoqICcO diff --git a/Source/Project64/3rd Party/zlib/zdll.lib b/Source/Project64/3rd Party/zlib/zdll.lib deleted file mode 100644 index 01f4e10e6ef05b1198d2e5b3410437611826e61a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10590 zcmcgy&2L*b68||Ln?!Y6*G~NXAv;d2^uw_wImrTxz;&F(26a=zNrPUtiXy+r!YY;_ z$t@}r-FvYpiXM9^iaq7fbB;l7TlBDpoVq}fzo3VrXp0`&ogs&O#ycM||gK;H(?Uk3&r0;!)g z4gLr)4W~5CJO!9$ztc4OIlwgZSkq{lc%qTJnugvXInl`1n$CX&DEgjCqS^N}ogXBg z=ooVt@P2*Pqrs)+;$x(o5W=GTH52Qyl^+?m? zJn=+RcQj3W12E0>YMR(0o+$ZD=tC-rrpZQ3<6mkT`xaoDIHqZ=PCU`+Uo{PWM(;~B z{EN^hR1%&0N@$fzqS=I|IeH(aG2)q0G}crqm%H)i`db^fbF0^HUE8>^e*3MBT%%mN zw}@Qs=G$v)&CU3`YS*o||MK?DH*%}5-+rC+OAmH(>ft*b580JdO2yHUFSyRSfIttW7+a=u7LY?kQ$3ZzvHYNQd? z{FZdsL{+~{3~nCv?7zEh#K^gI-9xca*$K$KO=+Z?Ml2O0Cui9ae<(H_#17Dn?!?2l*<=xGAjb*8FBUsAkA9Y(>ip)dEYU&@$OeZfuw8IlHWd zYtl&jD$HsfSvB&U&oycAV~$EwFT8I2o*aqS+bvq=>lJbv+o2=Tnl!^a;9Na_ugv!K zS*_E!u8k~Z=lMa#<_DJmZ1e&3e&FE%@DoL&9|tKS4FgYSfbV93&ne129s<%--W>tn zq59WUesmuAp6ET&8Km;cS>OwzkExG$&j3$|Qqe<0bT zDPW$;J5+u%0rZl5i^^xD^C8hg(*Kg4`*sXCM)Eq9zn%s@qkey(cl?Ctt8>6AQG(v% z4q+uohodSbKIp*_yoNyxVHoo`j^~lUAFzOn=*0_o4yUk$SMf5&Z~?F29L{1IqnN@B zl9<38&SM-Y%wiHJFo4s@;3b?y8jI-1i|9iZBe;Y!IQD-+IZ7Vfai$3Vyl!O5~^D+I}tYR zRJ?boea|RFB8<01Ms~o+*6eTX#8JpFz3TX7xEA5X2^D^j@k3X1d-uaYiwNlN`_U-l z1wh#m%}Wa#muBekIEvo3EppdUMC3S%Nch3fQ5>Ol6p?xJFS3^NZ`zvku%;clIS(=W zu^!-FSrW@_MsC-lS#@55WP~O)(s59H+D1KT6|pv)Fv?_7H^y>UGLvv-B^lOBbj5no z7O`6-GPzORu99NIreY?CFzJEKSoAt5HuMTGsa%*;nbgRnQzktNlNXcTcsZTPVTujo z#WsPHxwbJ_`>aTrQPy*KKe%f{OS7wL3@uImQ({YLi`ddgqelYC6`OR`!QilI^laRe~N$wQxCf0h6;^%+;XXRuMC<3Zq&-`X^Z?`ymOS8Z-RsLZZ zDVNc=GGE%v*YmS!(?kIrbQH%k5ges*84Hg^kCPJhqvJ7tBYLJd{bw1;$498zN3olK zr|h6o80b4e67G$ECn(k*@9lrHRH#;JmHYK%YU4t3?Z(YFbaUh{T??ouxd+NMh)xg& zC}-fB1;H{ePI}Sfy?@2;zZ*2x=O4e>5t#8VQ{u#uEhAAQkrM)d&WAY7b+W zpzZ7x7OqXd$S#UoL@?+eMZV!+q#cmXM`D~WfG@@P?Nu}!{ zkgc^lM=_Rr-oeqytL;6sVVgKhdw5)uJnjVt$4`s*kC%<{y%!nJKfHuMo$sZ4jEvV( zpF#@n5JDJRYtw#l@s01J)SW8dOW2M(Uqx{k{Tf3b<_>}p6AuP72A>lTf)EoAP78uM zf_4exjKWYMFDex_N3zIXK-rwOnvex_fGQIf8VcQ%g*a|B8dt z%^d$#2j|do{20G`&BfzO_0YXL-htxQ(tHF*-`9s=w$|=iiaAYOWGv@PfbBaRT$?Cy j(Px2C -#include -#include -#include "zlib.h" -#include "zip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#ifndef VERSIONMADEBY -# define VERSIONMADEBY (0x0) /* platform depedent */ -#endif - -#ifndef Z_BUFSIZE -#define Z_BUFSIZE (16384) -#endif - -#ifndef Z_MAXFILENAMEINZIP -#define Z_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -/* -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) -*/ - -/* 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 - -#ifndef DEF_MEM_LEVEL -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -#endif -const char zip_copyright[] = - " zip 0.15a Copyright 1998 Gilles Vollant "; - - -#define SIZEDATA_INDATABLOCK (4096-(4*4)) - -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) - -#define FLAG_LOCALHEADER_OFFSET (0x06) -#define CRC_LOCALHEADER_OFFSET (0x0e) - -#define SIZECENTRALHEADER (0x2e) /* 46 */ - -typedef struct linkedlist_datablock_internal_s -{ - struct linkedlist_datablock_internal_s* next_datablock; - uLong avail_in_this_block; - uLong filled_in_this_block; - uLong unused; /* for future use and alignement */ - unsigned char data[SIZEDATA_INDATABLOCK]; -} linkedlist_datablock_internal; - -typedef struct linkedlist_data_s -{ - linkedlist_datablock_internal* first_block; - linkedlist_datablock_internal* last_block; -} linkedlist_data; - - -typedef struct -{ - z_stream stream; /* zLib stream structure for inflate */ - int stream_initialised; /* 1 is stream is initialised */ - uInt pos_in_buffered_data; /* last written byte in buffered_data */ - - uLong pos_local_header; /* offset of the local header of the file - currenty writing */ - char* central_header; /* central header data for the current file */ - uLong size_centralheader; /* size of the central header for cur file */ - uLong flag; /* flag of the file currently writing */ - - int method; /* compression method of file currenty wr.*/ - Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ - uLong dosDate; - uLong crc32; -} curfile_info; - -typedef struct -{ - FILE * filezip; - linkedlist_data central_dir;/* datablock with central dir in construction*/ - int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ - curfile_info ci; /* info on the file curretly writing */ - - uLong begin_pos; /* position of the beginning of the zipfile */ - uLong number_entry; -} zip_internal; - -local linkedlist_datablock_internal* allocate_new_datablock() -{ - linkedlist_datablock_internal* ldi; - ldi = (linkedlist_datablock_internal*) - ALLOC(sizeof(linkedlist_datablock_internal)); - if (ldi!=NULL) - { - ldi->next_datablock = NULL ; - ldi->filled_in_this_block = 0 ; - ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; - } - return ldi; -} - -local void free_datablock(linkedlist_datablock_internal* ldi) -{ - while (ldi!=NULL) - { - linkedlist_datablock_internal* ldinext = ldi->next_datablock; - TRYFREE(ldi); - ldi = ldinext; - } -} - -local void init_linkedlist(linkedlist_data* ll) -{ - ll->first_block = ll->last_block = NULL; -} - -local void free_linkedlist(linkedlist_data* ll) -{ - free_datablock(ll->first_block); - ll->first_block = ll->last_block = NULL; -} - - -local int add_data_in_datablock(linkedlist_data* ll,const void* buf,uLong len) -{ - linkedlist_datablock_internal* ldi; - const unsigned char* from_copy; - - if (ll==NULL) - return ZIP_INTERNALERROR; - - if (ll->last_block == NULL) - { - ll->first_block = ll->last_block = allocate_new_datablock(); - if (ll->first_block == NULL) - return ZIP_INTERNALERROR; - } - - ldi = ll->last_block; - from_copy = (unsigned char*)buf; - - while (len>0) - { - uInt copy_this; - uInt i; - unsigned char* to_copy; - - if (ldi->avail_in_this_block==0) - { - ldi->next_datablock = allocate_new_datablock(); - if (ldi->next_datablock == NULL) - return ZIP_INTERNALERROR; - ldi = ldi->next_datablock ; - ll->last_block = ldi; - } - - if (ldi->avail_in_this_block < len) - copy_this = (uInt)ldi->avail_in_this_block; - else - copy_this = (uInt)len; - - to_copy = &(ldi->data[ldi->filled_in_this_block]); - - for (i=0;ifilled_in_this_block += copy_this; - ldi->avail_in_this_block -= copy_this; - from_copy += copy_this ; - len -= copy_this; - } - return ZIP_OK; -} - - -local int write_datablock(FILE * fout,linkedlist_data* ll) -{ - linkedlist_datablock_internal* ldi; - ldi = ll->first_block; - while (ldi!=NULL) - { - if (ldi->filled_in_this_block > 0) - if (fwrite(ldi->data,(uInt)ldi->filled_in_this_block,1,fout)!=1) - return ZIP_ERRNO; - ldi = ldi->next_datablock; - } - return ZIP_OK; -} - -/****************************************************************************/ - -/* =========================================================================== - Outputs a long in LSB order to the given file - nbByte == 1, 2 or 4 (byte, short or long) -*/ - -local int ziplocal_putValue OF((FILE *file, uLong x, int nbByte)); -local int ziplocal_putValue (FILE *file, uLong x, int nbByte) -{ - unsigned char buf[4]; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - if (fwrite(buf,nbByte,1,file)!=1) - return ZIP_ERRNO; - else - return ZIP_OK; -} - -local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte)); -local void ziplocal_putValue_inmemory (void* dest, uLong x, int nbByte) -{ - unsigned char* buf=(unsigned char*)dest; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } -} -/****************************************************************************/ - - -local uLong ziplocal_TmzDateToDosDate(const tm_zip* ptm,uLong dosDate) -{ - uLong year = (uLong)ptm->tm_year; - dosDate=dosDate; - if (year>1980) - year-=1980; - else if (year>80) - year-=80; - return - (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | - ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); -} - - -/****************************************************************************/ - -extern zipFile ZEXPORT zipOpen (const char *pathname, int append) -{ - zip_internal ziinit; - zip_internal* zi; - - ziinit.filezip = fopen(pathname,(append == 0) ? "wb" : "ab"); - if (ziinit.filezip == NULL) - return NULL; - ziinit.begin_pos = ftell(ziinit.filezip); - ziinit.in_opened_file_inzip = 0; - ziinit.ci.stream_initialised = 0; - ziinit.number_entry = 0; - init_linkedlist(&(ziinit.central_dir)); - - - zi = (zip_internal*)ALLOC(sizeof(zip_internal)); - if (zi==NULL) - { - fclose(ziinit.filezip); - return NULL; - } - - *zi = ziinit; - return (zipFile)zi; -} - -extern 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) -{ - zip_internal* zi; - uInt size_filename; - uInt size_comment; - uInt i; - int err = ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - if ((method!=0) && (method!=Z_DEFLATED)) - return ZIP_PARAMERROR; - - zi = (zip_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - if (err != ZIP_OK) - return err; - } - - - if (filename==NULL) - filename="-"; - - if (comment==NULL) - size_comment = 0; - else - size_comment = strlen(comment); - - size_filename = strlen(filename); - - if (zipfi == NULL) - zi->ci.dosDate = 0; - else - { - if (zipfi->dosDate != 0) - zi->ci.dosDate = zipfi->dosDate; - else zi->ci.dosDate = ziplocal_TmzDateToDosDate(&zipfi->tmz_date,zipfi->dosDate); - } - - zi->ci.flag = 0; - if ((level==8) || (level==9)) - zi->ci.flag |= 2; - if ((level==2)) - zi->ci.flag |= 4; - if ((level==1)) - zi->ci.flag |= 6; - - zi->ci.crc32 = 0; - zi->ci.method = method; - zi->ci.stream_initialised = 0; - zi->ci.pos_in_buffered_data = 0; - zi->ci.pos_local_header = ftell(zi->filezip); - zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + - size_extrafield_global + size_comment; - zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader); - - ziplocal_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); - /* version info */ - ziplocal_putValue_inmemory(zi->ci.central_header+4,(uLong)VERSIONMADEBY,2); - ziplocal_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); - ziplocal_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); - ziplocal_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); - ziplocal_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); - ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ - ziplocal_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ - ziplocal_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ - ziplocal_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); - ziplocal_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); - ziplocal_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); - ziplocal_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ - - if (zipfi==NULL) - ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); - else - ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); - - if (zipfi==NULL) - ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); - else - ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); - - ziplocal_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header,4); - - for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) = - *(((const char*)extrafield_global)+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+ - size_extrafield_global+i) = *(comment+i); - if (zi->ci.central_header == NULL) - return ZIP_INTERNALERROR; - - /* write the local header */ - err = ziplocal_putValue(zi->filezip,(uLong)LOCALHEADERMAGIC,4); - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)20,2);/* version needed to extract */ - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.flag,2); - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.method,2); - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.dosDate,4); - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)0,4); /* crc 32, unknown */ - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)0,4); /* compressed size, unknown */ - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)0,4); /* uncompressed size, unknown */ - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)size_filename,2); - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)size_extrafield_local,2); - - if ((err==ZIP_OK) && (size_filename>0)) - if (fwrite(filename,(uInt)size_filename,1,zi->filezip)!=1) - err = ZIP_ERRNO; - - if ((err==ZIP_OK) && (size_extrafield_local>0)) - if (fwrite(extrafield_local,(uInt)size_extrafield_local,1,zi->filezip) - !=1) - err = ZIP_ERRNO; - - zi->ci.stream.avail_in = (uInt)0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - zi->ci.stream.total_in = 0; - zi->ci.stream.total_out = 0; - - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED)) - { - zi->ci.stream.zalloc = (alloc_func)0; - zi->ci.stream.zfree = (free_func)0; - zi->ci.stream.opaque = (voidpf)0; - - err = deflateInit2(&zi->ci.stream, level, - Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, 0); - - if (err==Z_OK) - zi->ci.stream_initialised = 1; - } - - - if (err==Z_OK) - zi->in_opened_file_inzip = 1; - return err; -} - -extern int ZEXPORT zipWriteInFileInZip (zipFile file, const voidp buf, unsigned len) -{ - zip_internal* zi; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - - zi->ci.stream.next_in = buf; - zi->ci.stream.avail_in = len; - zi->ci.crc32 = crc32(zi->ci.crc32,buf,len); - - while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) - { - if (zi->ci.stream.avail_out == 0) - { - if (fwrite(zi->ci.buffered_data,(uInt)zi->ci.pos_in_buffered_data,1,zi->filezip) - !=1) - err = ZIP_ERRNO; - zi->ci.pos_in_buffered_data = 0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - - if (zi->ci.method == Z_DEFLATED) - { - uLong uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_NO_FLUSH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - - } - else - { - uInt copy_this,i; - if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) - copy_this = zi->ci.stream.avail_in; - else - copy_this = zi->ci.stream.avail_out; - for (i=0;ici.stream.next_out)+i) = - *(((const char*)zi->ci.stream.next_in)+i); - { - zi->ci.stream.avail_in -= copy_this; - zi->ci.stream.avail_out-= copy_this; - zi->ci.stream.next_in+= copy_this; - zi->ci.stream.next_out+= copy_this; - zi->ci.stream.total_in+= copy_this; - zi->ci.stream.total_out+= copy_this; - zi->ci.pos_in_buffered_data += copy_this; - } - } - } - - return 0; -} - -extern int ZEXPORT zipCloseFileInZip (zipFile file) -{ - zip_internal* zi; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - zi->ci.stream.avail_in = 0; - - if (zi->ci.method == Z_DEFLATED) - while (err==ZIP_OK) - { - uLong uTotalOutBefore; - if (zi->ci.stream.avail_out == 0) - { - if (fwrite(zi->ci.buffered_data,(uInt)zi->ci.pos_in_buffered_data,1,zi->filezip) - !=1) - err = ZIP_ERRNO; - zi->ci.pos_in_buffered_data = 0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_FINISH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - - if (err==Z_STREAM_END) - err=ZIP_OK; /* this is normal */ - - if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) - if (fwrite(zi->ci.buffered_data,(uInt)zi->ci.pos_in_buffered_data,1,zi->filezip) - !=1) - err = ZIP_ERRNO; - - if ((zi->ci.method == Z_DEFLATED) && (err==ZIP_OK)) - { - err=deflateEnd(&zi->ci.stream); - zi->ci.stream_initialised = 0; - } - - ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)zi->ci.crc32,4); /*crc*/ - ziplocal_putValue_inmemory(zi->ci.central_header+20, - (uLong)zi->ci.stream.total_out,4); /*compr size*/ - if (zi->ci.stream.data_type == Z_ASCII) - ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); - ziplocal_putValue_inmemory(zi->ci.central_header+24, - (uLong)zi->ci.stream.total_in,4); /*uncompr size*/ - - if (err==ZIP_OK) - err = add_data_in_datablock(&zi->central_dir,zi->ci.central_header, - (uLong)zi->ci.size_centralheader); - free(zi->ci.central_header); - - if (err==ZIP_OK) - { - long cur_pos_inzip = ftell(zi->filezip); - if (fseek(zi->filezip, - zi->ci.pos_local_header + 14,SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.crc32,4); /* crc 32, unknown */ - - if (err==ZIP_OK) /* compressed size, unknown */ - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.stream.total_out,4); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = ziplocal_putValue(zi->filezip,(uLong)zi->ci.stream.total_in,4); - - if (fseek(zi->filezip, - cur_pos_inzip,SEEK_SET)!=0) - err = ZIP_ERRNO; - } - - zi->number_entry ++; - zi->in_opened_file_inzip = 0; - - return err; -} - -extern int ZEXPORT zipClose (zipFile file, const char* global_comment) -{ - zip_internal* zi; - int err = 0; - uLong size_centraldir = 0; - uLong centraldir_pos_inzip ; - uInt size_global_comment; - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - } - - if (global_comment==NULL) - size_global_comment = 0; - else - size_global_comment = strlen(global_comment); - - - centraldir_pos_inzip = ftell(zi->filezip); - if (err==ZIP_OK) - { - linkedlist_datablock_internal* ldi = zi->central_dir.first_block ; - while (ldi!=NULL) - { - if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) - if (fwrite(ldi->data,(uInt)ldi->filled_in_this_block, - 1,zi->filezip) !=1 ) - err = ZIP_ERRNO; - - size_centraldir += ldi->filled_in_this_block; - ldi = ldi->next_datablock; - } - } - free_datablock(zi->central_dir.first_block); - - if (err==ZIP_OK) /* Magic End */ - err = ziplocal_putValue(zi->filezip,(uLong)ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* number of this disk */ - err = ziplocal_putValue(zi->filezip,(uLong)0,2); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = ziplocal_putValue(zi->filezip,(uLong)0,2); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - err = ziplocal_putValue(zi->filezip,(uLong)zi->number_entry,2); - - if (err==ZIP_OK) /* total number of entries in the central dir */ - err = ziplocal_putValue(zi->filezip,(uLong)zi->number_entry,2); - - if (err==ZIP_OK) /* size of the central directory */ - err = ziplocal_putValue(zi->filezip,(uLong)size_centraldir,4); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the - starting disk number */ - err = ziplocal_putValue(zi->filezip,(uLong)centraldir_pos_inzip ,4); - - if (err==ZIP_OK) /* zipfile comment length */ - err = ziplocal_putValue(zi->filezip,(uLong)size_global_comment,2); - - if ((err==ZIP_OK) && (size_global_comment>0)) - if (fwrite(global_comment,(uInt)size_global_comment,1,zi->filezip) !=1 ) - err = ZIP_ERRNO; - fclose(zi->filezip); - TRYFREE(zi); - - return err; -} diff --git a/Source/Project64/3rd Party/zlib/zip.h b/Source/Project64/3rd Party/zlib/zip.h deleted file mode 100644 index 1eed46995..000000000 --- a/Source/Project64/3rd Party/zlib/zip.h +++ /dev/null @@ -1,150 +0,0 @@ -/* zip.h -- IO for compress .zip files using zlib - Version 0.15 alpha, Mar 19th, 1998, - - Copyright (C) 1998 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 - - THIS IS AN ALPHA VERSION. AT THIS STAGE OF DEVELOPPEMENT, SOMES API OR STRUCTURE - CAN CHANGE IN FUTURE VERSION !! - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/zip.htm 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 - ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip - 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 - -#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_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_INTERNALERROR (-104) - -/* 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; - -extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); -/* - Create a zipfile. - pathname contain on Windows NT a filename like "c:\\zlib\\zlib111.zip" or on - an Unix computer "zlib/zlib111.zip". - if the file pathname exist and append=1, the zip will be created at the end - of the file. (useful if the file contain a self extractor code) - 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. - - -*/ - -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 zipWriteInFileInZip OF((zipFile file, - const voidp 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 zipClose OF((zipFile file, - const char* global_comment)); -/* - Close the zipfile -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _zip_H */ diff --git a/Source/Project64/3rd Party/zlib/zlib.def b/Source/Project64/3rd Party/zlib/zlib.def deleted file mode 100644 index 03bcf1c5c..000000000 --- a/Source/Project64/3rd Party/zlib/zlib.def +++ /dev/null @@ -1,60 +0,0 @@ -LIBRARY -; zlib data compression library - -EXPORTS -; basic functions - zlibVersion - deflate - deflateEnd - inflate - inflateEnd -; advanced functions - deflateSetDictionary - deflateCopy - deflateReset - deflateParams - deflateBound - deflatePrime - inflateSetDictionary - inflateSync - inflateCopy - inflateReset - inflateBack - inflateBackEnd - zlibCompileFlags -; utility functions - compress - compress2 - compressBound - uncompress - gzopen - gzdopen - gzsetparams - gzread - gzwrite - gzprintf - gzputs - gzgets - gzputc - gzgetc - gzungetc - gzflush - gzseek - gzrewind - gztell - gzeof - gzclose - gzerror - gzclearerr -; checksum functions - adler32 - crc32 -; various hacks, don't look :) - deflateInit_ - deflateInit2_ - inflateInit_ - inflateInit2_ - inflateBackInit_ - inflateSyncPoint - get_crc_table - zError diff --git a/Source/Project64/Project64.vcproj b/Source/Project64/Project64.vcproj index 42494391c..2d6ee3a02 100644 --- a/Source/Project64/Project64.vcproj +++ b/Source/Project64/Project64.vcproj @@ -636,7 +636,7 @@ Name="ZLib Source" > diff --git a/Source/Project64/Project64.vcxproj b/Source/Project64/Project64.vcxproj index e4072e049..77c20811f 100644 --- a/Source/Project64/Project64.vcxproj +++ b/Source/Project64/Project64.vcxproj @@ -152,10 +152,10 @@ NotUsing - + NotUsing - + NotUsing @@ -302,11 +302,11 @@ - - - - - + + + + + {3326e128-33af-422c-bb7c-67cc6b915610} diff --git a/Source/Project64/Project64.vcxproj.filters b/Source/Project64/Project64.vcxproj.filters index 7889ae8fb..fe8ed54c1 100644 --- a/Source/Project64/Project64.vcxproj.filters +++ b/Source/Project64/Project64.vcxproj.filters @@ -402,10 +402,10 @@ Source Files\3rd Party Source - + Source Files\3rd Party Source\ZLib Source - + Source Files\3rd Party Source\ZLib Source @@ -812,16 +812,16 @@ Header Files\3rd Party Headers - + Header Files\3rd Party Headers\Zlib Headers - + Header Files\3rd Party Headers\Zlib Headers - + Header Files\3rd Party Headers\Zlib Headers - + Header Files\3rd Party Headers\Zlib Headers