|
From: <lab...@us...> - 2009-12-22 21:59:11
|
Revision: 1016
http://opengtoolkit.svn.sourceforge.net/opengtoolkit/?rev=1016&view=rev
Author: labviewer
Date: 2009-12-22 21:59:04 +0000 (Tue, 22 Dec 2009)
Log Message:
-----------
Incorporate changes from 1.01f
Modified Paths:
--------------
trunk/lvzip/c_source/unzip.c
trunk/lvzip/c_source/unzip.h
trunk/lvzip/c_source/zip.c
Modified: trunk/lvzip/c_source/unzip.c
===================================================================
--- trunk/lvzip/c_source/unzip.c 2009-11-24 08:07:26 UTC (rev 1015)
+++ trunk/lvzip/c_source/unzip.c 2009-12-22 21:59:04 UTC (rev 1016)
@@ -1,5 +1,5 @@
/* unzip.c -- IO for uncompress .zip files using zlib
- Version 1.01e, February 12th, 2005
+ Version 1.01f, December 22th, 2009
Copyright (C) 1998-2005 Gilles Vollant
@@ -175,10 +175,7 @@
int *pi;
{
unsigned char c;
- int err;
-
- *pi = 0;
- err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
+ int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
if (err==1)
{
*pi = (int)c;
@@ -186,6 +183,7 @@
}
else
{
+ *pi = 0;
if (ZERROR(*pzlib_filefunc_def,filestream))
return UNZ_ERRNO;
else
@@ -208,7 +206,7 @@
uLong *pX;
{
uLong x ;
- int i;
+ int i = 0;
int err;
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
@@ -236,7 +234,7 @@
uLong *pX;
{
uLong x ;
- int i;
+ int i = 0;
int err;
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
@@ -263,9 +261,6 @@
/* My own strcmpi / strcasecmp */
-local int strcmpcasenosensitive_internal OF((
- const char* fileName1,
- const char* fileName2));
local int strcmpcasenosensitive_internal (fileName1,fileName2)
const char* fileName1;
const char* fileName2;
@@ -495,8 +490,11 @@
s=(unz_s*)ALLOC(sizeof(unz_s));
- *s=us;
- unzGoToFirstFile((unzFile)s);
+ if (s!=NULL)
+ {
+ *s=us;
+ unzGoToFirstFile((unzFile)s);
+ }
return (unzFile)s;
}
@@ -549,9 +547,6 @@
/*
Translate date/time from Dos format to tm_unz (readable more easilty)
*/
-local void unzlocal_DosDateToTmuDate OF((
- uLong ulDosDate,
- tm_unz* ptm));
local void unzlocal_DosDateToTmuDate (ulDosDate, ptm)
uLong ulDosDate;
tm_unz* ptm;
@@ -615,10 +610,12 @@
/* we check the magic */
if (err==UNZ_OK)
+ {
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
err=UNZ_ERRNO;
else if (uMagic!=0x02014b50)
err=UNZ_BADZIPFILE;
+ }
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK)
err=UNZ_ERRNO;
@@ -695,10 +692,13 @@
uSizeRead = extraFieldBufferSize;
if (lSeek!=0)
+ {
if (ZSEEK(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
+ }
+
if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
@@ -720,10 +720,13 @@
uSizeRead = commentBufferSize;
if (lSeek!=0)
+ {
if (ZSEEK(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
+ }
+
if ((file_info.size_file_comment>0) && (commentBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
@@ -961,12 +964,6 @@
store in *piSizeVar the size of extra info in local header
(filename and size of extra field data)
*/
-local int unzlocal_CheckCurrentFileCoherencyHeader OF((
- unz_s* s,
- uInt* piSizeVar,
- uLong *poffset_local_extrafield,
- uInt *psize_local_extrafield));
-
local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
poffset_local_extrafield,
psize_local_extrafield)
@@ -990,10 +987,12 @@
if (err==UNZ_OK)
+ {
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
err=UNZ_ERRNO;
else if (uMagic!=0x04034b50)
err=UNZ_BADZIPFILE;
+ }
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK)
err=UNZ_ERRNO;
@@ -1176,6 +1175,8 @@
s->pfile_in_zip_read = pfile_in_zip_read_info;
+ s->encrypted = 0;
+
# ifndef NOUNCRYPT
if (password != NULL)
{
@@ -1579,7 +1580,7 @@
unz_s* s;
if (file==NULL)
- return UNZ_PARAMERROR;
+ return (uLong)UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return 0;
Modified: trunk/lvzip/c_source/unzip.h
===================================================================
--- trunk/lvzip/c_source/unzip.h 2009-11-24 08:07:26 UTC (rev 1015)
+++ trunk/lvzip/c_source/unzip.h 2009-12-22 21:59:04 UTC (rev 1016)
@@ -1,5 +1,5 @@
/* unzip.h -- IO for uncompress .zip files using zlib
- Version 1.01e, February 12th, 2005
+ Version 1.01f, December 22th, 2009
Copyright (C) 1998-2005 Gilles Vollant
@@ -57,6 +57,12 @@
#include "ioapi.h"
#endif
+#ifdef HAVE_BZIP2
+#include "bzlib.h"
+#endif
+
+#define Z_BZIP2ED 12
+
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
/* like the STRICT of WIN32, we define a pointer that cannot be converted
from (void*) without cast */
Modified: trunk/lvzip/c_source/zip.c
===================================================================
--- trunk/lvzip/c_source/zip.c 2009-11-24 08:07:26 UTC (rev 1015)
+++ trunk/lvzip/c_source/zip.c 2009-12-22 21:59:04 UTC (rev 1016)
@@ -1,5 +1,5 @@
/* zip.c -- IO on .zip files using zlib
- Version 1.01e, February 12th, 2005
+ Version 1.01f, December 22th, 2009
27 Dec 2004 Rolf Kalbermatter
Modification to zipOpen2 to support globalComment retrieval.
@@ -173,7 +173,6 @@
return ldi;
}
-local void free_datablock OF((linkedlist_datablock_internal* ldi));
local void free_datablock(ldi)
linkedlist_datablock_internal* ldi;
{
@@ -185,14 +184,12 @@
}
}
-local void init_linkedlist OF((linkedlist_data* ll));
local void init_linkedlist(ll)
linkedlist_data* ll;
{
ll->first_block = ll->last_block = NULL;
}
-local void free_linkedlist OF((linkedlist_data* ll));
local void free_linkedlist(ll)
linkedlist_data* ll;
{
@@ -201,7 +198,6 @@
}
-local int add_data_in_datablock OF((linkedlist_data* ll, const void* buf, uLong len));
local int add_data_in_datablock(ll,buf,len)
linkedlist_data* ll;
const void* buf;
@@ -320,15 +316,14 @@
/****************************************************************************/
-local uLong ziplocal_TmzDateToDosDate OF((const tm_zip* ptm,uLong dosDate));
local uLong ziplocal_TmzDateToDosDate(ptm,dosDate)
const tm_zip* ptm;
uLong dosDate;
{
uLong year = (uLong)ptm->tm_year;
- if (year>1980)
+ if (year>=1980)
year-=1980;
- else if (year>80)
+ else if (year>=80)
year-=80;
return
(uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) |
@@ -349,10 +344,7 @@
int *pi;
{
unsigned char c;
- int err;
-
- *pi = 0;
- err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
+ int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
if (err==1)
{
*pi = (int)c;
@@ -360,6 +352,7 @@
}
else
{
+ *pi = 0;
if (ZERROR(*pzlib_filefunc_def,filestream))
return ZIP_ERRNO;
else
@@ -382,7 +375,7 @@
uLong *pX;
{
uLong x ;
- int i;
+ int i = 0;
int err;
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
@@ -410,7 +403,7 @@
uLong *pX;
{
uLong x ;
- int i;
+ int i = 0;
int err;
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
@@ -530,6 +523,8 @@
if (ziinit.filestream == NULL)
return NULL;
+ if (append == APPEND_STATUS_CREATEAFTER)
+ ZSEEK(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END);
ziinit.begin_pos = ZTELL(ziinit.z_filefunc,ziinit.filestream);
ziinit.in_opened_file_inzip = 0;
ziinit.ci.stream_initialised = 0;
@@ -554,7 +549,7 @@
uLong size_central_dir; /* size of the central directory */
uLong offset_central_dir; /* offset of start of central directory */
- uLong central_pos;
+ uLong central_pos,uL;
uLong number_disk; /* number of the current dist, used for
spaning ZIP, unsupported, always 0*/
@@ -565,55 +560,64 @@
the central dir
(same than number_entry on nospan) */
uLong size_comment;
- char sig[4];
central_pos = ziplocal_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream);
+// if (central_pos==0) disable to allow appending to empty ZIP archive
+// err=ZIP_ERRNO;
- err = ZSEEK(ziinit.z_filefunc, ziinit.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET);
-
if (err==ZIP_OK)
- err = ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream, (uLong*)sig);
-
+ if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0)
+ err=ZIP_ERRNO;
+ /* the signature, already checked */
if (err==ZIP_OK)
- if (((*(sig))!=0x50) || ((*(sig+1))!=0x4b) || ((*(sig+2))!=0x05) || ((*(sig+3))!=0x06))
- err = ZIP_ERRNO;
-
+ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&uL)!=ZIP_OK)
+ err=ZIP_ERRNO;
+
/* number of this disk */
if (err==ZIP_OK)
- err = ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk);
+ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk)!=ZIP_OK)
+ err=ZIP_ERRNO;
/* number of the disk with the start of the central directory */
if (err==ZIP_OK)
- err = ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk_with_CD);
+ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk_with_CD)!=ZIP_OK)
+ err=ZIP_ERRNO;
/* total number of entries in the central dir on this disk */
if (err==ZIP_OK)
- err = ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry);
+ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry)!=ZIP_OK)
+ err=ZIP_ERRNO;
/* total number of entries in the central dir */
if (err==ZIP_OK)
- err = ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry_CD);
+ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry_CD)!=ZIP_OK)
+ err=ZIP_ERRNO;
- if ((number_entry_CD!=number_entry) ||
- (number_disk_with_CD!=0) ||
- (number_disk!=0))
- err = ZIP_BADZIPFILE;
+ if (err==ZIP_OK)
+ if ((number_entry_CD!=number_entry) ||
+ (number_disk_with_CD!=0) ||
+ (number_disk!=0))
+ err=ZIP_BADZIPFILE;
/* size of the central directory */
if (err==ZIP_OK)
- err = ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&size_central_dir);
+ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&size_central_dir)!=ZIP_OK)
+ err=ZIP_ERRNO;
/* offset of start of central directory with respect to the
starting disk number */
if (err==ZIP_OK)
- err = ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir);
+ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir)!=ZIP_OK)
+ err=ZIP_ERRNO;
/* zipfile global comment length */
if (err==ZIP_OK)
- err = ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment);
+ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment)!=ZIP_OK)
+ err=ZIP_ERRNO;
- if ((err==ZIP_OK) && (central_pos<offset_central_dir+size_central_dir))
- err = ZIP_BADZIPFILE;
+ if ((central_pos<offset_central_dir+size_central_dir) &&
+ (err==ZIP_OK))
+ err=ZIP_BADZIPFILE;
if (err!=ZIP_OK)
{
@@ -623,7 +627,7 @@
if (size_comment>0)
{
- ziinit.globalcomment = ALLOC(size_comment+1);
+ ziinit.globalcomment = (char*)ALLOC(size_comment+1);
if (ziinit.globalcomment)
{
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
@@ -865,6 +869,7 @@
zi->ci.stream.next_out = zi->ci.buffered_data;
zi->ci.stream.total_in = 0;
zi->ci.stream.total_out = 0;
+ zi->ci.stream.data_type = Z_BINARY;
if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
{
@@ -949,7 +954,6 @@
comment, method, level, 0);
}
-local int zipFlushWriteBuffer OF((zip_internal* zi));
local int zipFlushWriteBuffer(zi)
zip_internal* zi;
{
@@ -987,9 +991,9 @@
if (zi->in_opened_file_inzip == 0)
return ZIP_PARAMERROR;
- zi->ci.stream.next_in = (void*)buf;
+ zi->ci.stream.next_in = (Bytef*)buf;
zi->ci.stream.avail_in = len;
- zi->ci.crc32 = crc32(zi->ci.crc32,buf,len);
+ zi->ci.crc32 = crc32(zi->ci.crc32,buf,(uInt)len);
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
{
@@ -1055,7 +1059,7 @@
zi->ci.stream.avail_in = 0;
if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
- while (err == ZIP_OK)
+ while (err==ZIP_OK)
{
uLong uTotalOutBefore;
if (zi->ci.stream.avail_out == 0)
@@ -1073,8 +1077,8 @@
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 (err==Z_STREAM_END)
+ err=ZIP_OK; /* this is normal */
if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK))
if (zipFlushWriteBuffer(zi)==ZIP_ERRNO)
@@ -1082,7 +1086,7 @@
if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
{
- err = deflateEnd(&zi->ci.stream);
+ err=deflateEnd(&zi->ci.stream);
zi->ci.stream_initialised = 0;
}
@@ -1186,7 +1190,7 @@
ldi = ldi->next_datablock;
}
}
- free_datablock(zi->central_dir.first_block);
+ free_linkedlist(&(zi->central_dir));
if (err==ZIP_OK) /* Magic End */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|