]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/unzip.c
added carbonaccessors.o
[wxWidgets.git] / src / common / unzip.c
index 1cc334155f2ca44c676984d23750e71abb5bb919..551b1c6b2d78394eb3be4f5d8bef730dd6e58baa 100644 (file)
@@ -1,15 +1,17 @@
+/*
+
+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
 /* 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"
 
 
 #include "wx/setup.h"
@@ -142,11 +144,16 @@ typedef struct
                                            file if we are decompressing it */
 } unz_s;
 
                                            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
 
 /* VA always requires prototypes */
 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.
 /* ===========================================================================
      Read a byte from a gz_stream; update next_in and avail_in. Return EOF
    for end of file.
@@ -351,7 +358,7 @@ local uLong unzlocal_SearchCentralDir(fin)
        return uPosFound;
 }
 
        return uPosFound;
 }
 
-#ifdef __WXMAC__
+#if defined(__WXMAC__) && !defined(__UNIX__)
 void wxUnix2MacFilename (char *s) ;
 void
 wxUnix2MacFilename (char *s)
 void wxUnix2MacFilename (char *s) ;
 void
 wxUnix2MacFilename (char *s)
@@ -360,23 +367,23 @@ wxUnix2MacFilename (char *s)
         {
                 if ( *s == '.' )
                 {
         {
                 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 == '/' )
                 {
                         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
                 {
                         memmove( s , s+1 ,strlen( s ) ) ;
                 }
                 else
                 {
-//                        wxASSERT_MSG( 1 , "unkown path beginning" ) ;
+/*                        wxASSERT_MSG( 1 , "unkown path beginning" ) ; */
                 }
                 while (*s)
                 {
                         if (*s == '/' || *s == '\\')
                         {
                 }
                 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 = ':';
                                if ( *(s+1) == '.' && *(s+2) == '.' && ( (*(s+3) == '/' || *(s+3) == '\\') ) )
                                {
                               *s = ':';
@@ -423,10 +430,10 @@ extern unzFile ZEXPORT unzOpen (path)
     if (unz_copyright[0]!=' ')
         return NULL;
 
     if (unz_copyright[0]!=' ')
         return NULL;
 
-#ifdef __WXMAC__
+#if defined(__WXMAC__) && !defined(__UNIX__)
        strcpy( wxBuffer , path ) ;
        wxUnix2MacFilename( wxBuffer ) ;
        strcpy( wxBuffer , path ) ;
        wxUnix2MacFilename( wxBuffer ) ;
-  fin=fopen(wxBuffer,"rb");
+       fin=fopen(wxBuffer,"rb");
 #else
     fin=fopen(path,"rb");
 #endif
 #else
     fin=fopen(path,"rb");
 #endif
@@ -604,10 +611,12 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
 
        /* we check the magic */
        if (err==UNZ_OK)
 
        /* 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_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) != UNZ_OK)
                err=UNZ_ERRNO;
@@ -684,10 +693,13 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
                        uSizeRead = extraFieldBufferSize;
 
                if (lSeek!=0)
                        uSizeRead = extraFieldBufferSize;
 
                if (lSeek!=0)
+        {
                        if (fseek(s->file,lSeek,SEEK_CUR)==0)
                                lSeek=0;
                        else
                                err=UNZ_ERRNO;
                        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;
                if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0))
                        if (fread(extraField,(uInt)uSizeRead,1,s->file)!=1)
                                err=UNZ_ERRNO;
@@ -709,10 +721,13 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
                        uSizeRead = commentBufferSize;
 
                if (lSeek!=0)
                        uSizeRead = commentBufferSize;
 
                if (lSeek!=0)
+        {
                        if (fseek(s->file,lSeek,SEEK_CUR)==0)
                                lSeek=0;
                        else
                                err=UNZ_ERRNO;
                        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;
                if ((file_info.size_file_comment>0) && (commentBufferSize>0))
                        if (fread(szComment,(uInt)uSizeRead,1,s->file)!=1)
                                err=UNZ_ERRNO;
@@ -824,12 +839,18 @@ extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity)
 {
        unz_s* s;       
        int err;
 {
        unz_s* s;       
        int err;
-
-       
+    const char *c;
+    char *c2;
+    char szFileName2[UNZ_MAXFILENAMEINZIP+1];
+    
        uLong num_fileSaved;
        uLong pos_in_central_dirSaved;
 
        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;
 
        if (file==NULL)
                return UNZ_PARAMERROR;
 
@@ -851,8 +872,9 @@ extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity)
                unzGetCurrentFileInfo(file,NULL,
                                                                szCurrentFileName,sizeof(szCurrentFileName)-1,
                                                                NULL,0,NULL,0);
                unzGetCurrentFileInfo(file,NULL,
                                                                szCurrentFileName,sizeof(szCurrentFileName)-1,
                                                                NULL,0,NULL,0);
+        for (c2 = szCurrentFileName; *c2 != '\0'; c2++) if (*c2 == '\\') *c2 = '/';
                if (unzStringFileNameCompare(szCurrentFileName,
                if (unzStringFileNameCompare(szCurrentFileName,
-                                                                               szFileName,iCaseSensitivity)==0)
+                                                                               szFileName2,iCaseSensitivity)==0)
                        return UNZ_OK;
                err = unzGoToNextFile(file);
        }
                        return UNZ_OK;
                err = unzGoToNextFile(file);
        }
@@ -893,10 +915,12 @@ local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
 
 
        if (err==UNZ_OK)
 
 
        if (err==UNZ_OK)
+    {
                if (unzlocal_getLong(s->file,&uMagic) != UNZ_OK)
                        err=UNZ_ERRNO;
                else if (uMagic!=0x04034b50)
                        err=UNZ_BADZIPFILE;
                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;
 
        if (unzlocal_getShort(s->file,&uData) != UNZ_OK)
                err=UNZ_ERRNO;
@@ -1335,7 +1359,6 @@ extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
        char *szComment;
        uLong uSizeBuf;
 {
        char *szComment;
        uLong uSizeBuf;
 {
-       int err=UNZ_OK;
        unz_s* s;
        uLong uReadThis ;
        if (file==NULL)
        unz_s* s;
        uLong uReadThis ;
        if (file==NULL)