From fc5cb6c6838eb766a9cff4bdceaba76f76e766eb Mon Sep 17 00:00:00 2001 From: Luiz Rafael Culik Date: Sun, 16 Jul 2000 23:49:59 +0000 Subject: [PATCH] See changelog 2000-7-16-20:30 GMT -3 --- harbour/contrib/hbzlib/hbzip.h | 1 + harbour/contrib/hbzlib/makefile.bc | 2 +- harbour/contrib/hbzlib/zipfile2.c | 72 ++++++++++++++++++++++++++++-- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/harbour/contrib/hbzlib/hbzip.h b/harbour/contrib/hbzlib/hbzip.h index f3707e0bb1..8197ca173b 100644 --- a/harbour/contrib/hbzlib/hbzip.h +++ b/harbour/contrib/hbzlib/hbzip.h @@ -58,6 +58,7 @@ extern int hb___ExtractCurrentFile(unzFile uf,BOOL popt_extract_without_path,BOO extern void hb____ChangeFileDate(char *filename,uLong dosdate,tm_unz tmu_date); extern int hb___MakeDir(char *szNewDirectory); extern int hb___GetNumbersofFilestoUnzip(char *szFile); +extern PHB_ITEM hb___GetFilesNamesFromZip(char *szFile); #if defined(HB_EXTERN_C) } #endif diff --git a/harbour/contrib/hbzlib/makefile.bc b/harbour/contrib/hbzlib/makefile.bc index 4281f3cfcd..9bae7eab6d 100644 --- a/harbour/contrib/hbzlib/makefile.bc +++ b/harbour/contrib/hbzlib/makefile.bc @@ -48,7 +48,7 @@ ARFLAGS = /P32 INCLUDE_DIR = ..\..\include ZLIB_DIR = . WINSYS_DIR = \WINDOWS\SYSTEM -CFLAGS = -I$(INCLUDE_DIR) -d $(C_USR) $(CFLAGS) -y +CFLAGS = -I$(INCLUDE_DIR) -d $(C_USR) $(CFLAGS) -y CLIBFLAGS =$(CFLAGS) HARBOUR_EXE = $(BIN_DIR)\harbour.exe HARBOURFLAGS = -i$(INCLUDE_DIR) -n -q0 -w -es2 -gc0 $(PRG_USR) $(HARBOURFLAGS) diff --git a/harbour/contrib/hbzlib/zipfile2.c b/harbour/contrib/hbzlib/zipfile2.c index 06ef82983a..b6897a999e 100644 --- a/harbour/contrib/hbzlib/zipfile2.c +++ b/harbour/contrib/hbzlib/zipfile2.c @@ -368,10 +368,51 @@ int hb___ExtractCurrentFile(unzFile szUnzipFile,BOOL popt_extract_without_path,B int hb___GetNumbersofFilestoUnzip(char *szFile) { -int iNumbersOfFiles; +/*int iNumbersOfFiles;*/ const char *szZipFileName=NULL; char szFilename_Try[512]; + unz_global_info szGlobalUnzipInfo; + szZipFileName = szFile; +/* if (szZipFileName == NULL) + { + szZipFileName = szFile; + } + */ + if (szZipFileName!=NULL) + { + strcpy(szFilename_Try,szZipFileName); + szUnzipFile = unzOpen(szZipFileName); + if (szUnzipFile==NULL) + { + strcat(szFilename_Try,".zip"); + szUnzipFile = unzOpen(szFilename_Try); + } + } + + if (szUnzipFile==NULL) + { + exit (1); + } + err = unzGetGlobalInfo (szUnzipFile,&szGlobalUnzipInfo); +/* if (err==ZIP_OK) { + iNumbersOfFiles=szGlobalUnzipInfo.number_entry; +} +*/ + unzCloseCurrentFile(szUnzipFile); + +/* return iNumbersOfFiles; to avoid warning */ + return szGlobalUnzipInfo.number_entry; +} +PHB_ITEM hb___GetFilesNamesFromZip(char *szFile) +{ + const char *szZipFileName=NULL; + char szFilename_Try[512]; + char szFileNameinZip[256]; + int iNumbersOfFiles; + PHB_ITEM pItem=NULL; + PHB_ITEM pArray=NULL; + uLong uiCount; unz_global_info szGlobalUnzipInfo; if (szZipFileName == NULL) { @@ -391,13 +432,36 @@ int iNumbersOfFiles; if (szUnzipFile==NULL) { - exit (1); + exit(1); } err = unzGetGlobalInfo (szUnzipFile,&szGlobalUnzipInfo); if (err==ZIP_OK) { - iNumbersOfFiles=szGlobalUnzipInfo.number_entry;; + iNumbersOfFiles=szGlobalUnzipInfo.number_entry; + pArray=hb_itemArrayNew( iNumbersOfFiles ); +} + for(uiCount=0;uiCount