+/*
+
+This file was altered for needs of wxWindows.
+$Id$
+
+*/
+
/* unzip.c -- IO on .zip files using zlib
Version 0.15 beta, Mar 19th, 1998,
Read unzip.h for more info
+
*/
-#if 0
-for what compiler ?
-#if !defined(__VISAGECPP__)
-# pragma warning(disable:4001) /* non standard extension used: single line comment */
-#endif
-#endif
#include "wx/setup.h"
file if we are decompressing it */
} unz_s;
-#if defined (__VISAGECPP__)
+#if defined (__VISAGECPP__) || defined(__BORLANDC__)
/* VA always requires prototypes */
int unzlocal_CheckCurrentFileCoherencyHeader (unz_s*, uInt*, uLong*, uInt*);
#endif
{
if ( *s == '.' )
{
- // relative path , since it goes on with slash which is translated to a :
+ /* relative path , since it goes on with slash which is translated to a : */
memmove( s , s+1 ,strlen( s ) ) ;
}
else if ( *s == '/' )
{
- // absolute path -> on mac just start with the drive name
+ /* absolute path -> on mac just start with the drive name */
memmove( s , s+1 ,strlen( s ) ) ;
}
else
{
-// wxASSERT_MSG( 1 , "unkown path beginning" ) ;
+/* wxASSERT_MSG( 1 , "unkown path beginning" ) ; */
}
while (*s)
{
if (*s == '/' || *s == '\\')
{
- // convert any back-directory situations
+ /* convert any back-directory situations */
if ( *(s+1) == '.' && *(s+2) == '.' && ( (*(s+3) == '/' || *(s+3) == '\\') ) )
{
*s = ':';
/* 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;
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;
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;
{
unz_s* s;
int err;
-
-
+ const char *c;
+ char *c2;
+ char szFileName2[UNZ_MAXFILENAMEINZIP+1];
+
uLong num_fileSaved;
uLong pos_in_central_dirSaved;
-
+ for (c = szFileName, c2 = szFileName2; *c != '\0'; c++, c2++)
+ if (*c == '\\') *c2 = '/';
+ else *c2 = *c;
+ *c2 = '\0';
+
if (file==NULL)
return UNZ_PARAMERROR;
unzGetCurrentFileInfo(file,NULL,
szCurrentFileName,sizeof(szCurrentFileName)-1,
NULL,0,NULL,0);
+ for (c2 = szCurrentFileName; *c2 != '\0'; c2++) if (*c2 == '\\') *c2 = '/';
if (unzStringFileNameCompare(szCurrentFileName,
- szFileName,iCaseSensitivity)==0)
+ szFileName2,iCaseSensitivity)==0)
return UNZ_OK;
err = unzGoToNextFile(file);
}
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;
char *szComment;
uLong uSizeBuf;
{
- int err=UNZ_OK;
unz_s* s;
uLong uReadThis ;
if (file==NULL)