X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0bcc480680ecdf368839c119f5e984df757f893..da2b4b7a57f816723ed26dbbeca0549b9ce6735a:/src/common/unzip.c?ds=sidebyside diff --git a/src/common/unzip.c b/src/common/unzip.c index c78982488c..02a37dc16c 100644 --- a/src/common/unzip.c +++ b/src/common/unzip.c @@ -21,7 +21,19 @@ $Id$ #include #include #include +/* #include "zlib.h" + normally, the compiler options should contain -I../zlib, but it is + apparently not the case for all MSW makefiles and so, unless we use + configure (which defines __WX_SETUP_H__) or it is explicitly overridden by + the user (who can define wxUSE_ZLIB_H_IN_PATH), we hardcode the path here +*/ +#if defined(__WXMSW__) && !defined(__WX_SETUP_H__) && !defined(wxUSE_ZLIB_H_IN_PATH) + #include "../zlib/zlib.h" +#else + #include "zlib.h" +#endif + /* Not the right solution (paths in makefiles) but... */ #ifdef __BORLANDC__ @@ -149,6 +161,11 @@ typedef struct int unzlocal_CheckCurrentFileCoherencyHeader (unz_s*, uInt*, uLong*, uInt*); #endif +/* disable warnings about K&R declarations until the end of file */ +#ifdef _MSC_VER +#pragma warning(disable:4131) +#endif /* VC++ */ + /* =========================================================================== Read a byte from a gz_stream; update next_in and avail_in. Return EOF for end of file. @@ -353,7 +370,7 @@ local uLong unzlocal_SearchCentralDir(fin) return uPosFound; } -#ifdef __WXMAC__ +#if defined(__WXMAC__) && !defined(__UNIX__) void wxUnix2MacFilename (char *s) ; void wxUnix2MacFilename (char *s) @@ -425,10 +442,10 @@ extern unzFile ZEXPORT unzOpen (path) if (unz_copyright[0]!=' ') return NULL; -#ifdef __WXMAC__ +#if defined(__WXMAC__) && !defined(__UNIX__) strcpy( wxBuffer , path ) ; wxUnix2MacFilename( wxBuffer ) ; - fin=fopen(wxBuffer,"rb"); + fin=fopen(wxBuffer,"rb"); #else fin=fopen(path,"rb"); #endif @@ -606,10 +623,12 @@ local int unzlocal_GetCurrentFileInfoInternal (file, /* 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; @@ -686,10 +705,13 @@ local int unzlocal_GetCurrentFileInfoInternal (file, uSizeRead = extraFieldBufferSize; if (lSeek!=0) + { if (fseek(s->file,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; @@ -711,10 +733,13 @@ local int unzlocal_GetCurrentFileInfoInternal (file, uSizeRead = commentBufferSize; if (lSeek!=0) + { if (fseek(s->file,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; @@ -902,10 +927,12 @@ local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, 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; @@ -1344,7 +1371,6 @@ extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) char *szComment; uLong uSizeBuf; { - int err=UNZ_OK; unz_s* s; uLong uReadThis ; if (file==NULL)