Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

unzip.h File Reference

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  file_in_zip_read_info_s
struct  tm_unz_s
struct  unz_file_info_internal_s
struct  unz_file_info_s
struct  unz_global_info_s
struct  unz_s
struct  z_stream_s

Defines

#define UNZ_BADZIPFILE   (-103)
#define UNZ_CASESENSITIVE   1
#define UNZ_CRCERROR   (-105)
#define UNZ_END_OF_LIST_OF_FILE   (-100)
#define UNZ_EOF   (0)
#define UNZ_ERRNO   (Z_ERRNO)
#define UNZ_INTERNALERROR   (-104)
#define UNZ_NOTCASESENSITIVE   2
#define UNZ_OK   (0)
#define UNZ_OSDEFAULTCASE   0
#define UNZ_PARAMERROR   (-102)

Typedefs

typedef void *(* alloc_func )(void *opaque, unsigned int items, unsigned int size)
typedef void(* free_func )(void *opaque, void *address)
typedef tm_unz_s tm_unz
typedef unz_file_info_s unz_file_info
typedef unz_file_info_internal_s unz_file_info_internal
typedef unz_global_info_s unz_global_info
typedef void * unzFile
typedef z_stream_s z_stream
typedef z_streamz_streamp

Functions

int unzClose (unzFile file)
int unzCloseCurrentFile (unzFile file)
int unzeof (unzFile file)
int unzGetCurrentFileInfo (unzFile file, unz_file_info *pfile_info, char *szFileName, unsigned long fileNameBufferSize, void *extraField, unsigned long extraFieldBufferSize, char *szComment, unsigned long commentBufferSize)
int unzGetCurrentFileInfoPosition (unzFile file, unsigned long *pos)
int unzGetGlobalComment (unzFile file, char *szComment, unsigned long uSizeBuf)
int unzGetGlobalInfo (unzFile file, unz_global_info *pglobal_info)
int unzGetLocalExtrafield (unzFile file, void *buf, unsigned len)
int unzGoToFirstFile (unzFile file)
int unzGoToNextFile (unzFile file)
int unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
unzFile unzOpen (const char *path)
int unzOpenCurrentFile (unzFile file)
int unzReadCurrentFile (unzFile file, void *buf, unsigned len)
unzFile unzReOpen (const char *path, unzFile file)
int unzSetCurrentFileInfoPosition (unzFile file, unsigned long pos)
int unzStringFileNameCompare (const char *fileName1, const char *fileName2, int iCaseSensitivity)
long unztell (unzFile file)


Define Documentation

#define UNZ_BADZIPFILE   (-103)
 

Definition at line 162 of file unzip.h.

#define UNZ_CASESENSITIVE   1
 

Definition at line 166 of file unzip.h.

#define UNZ_CRCERROR   (-105)
 

Definition at line 164 of file unzip.h.

#define UNZ_END_OF_LIST_OF_FILE   (-100)
 

Definition at line 158 of file unzip.h.

#define UNZ_EOF   (0)
 

Definition at line 160 of file unzip.h.

Referenced by unzReadCurrentFile().

#define UNZ_ERRNO   (Z_ERRNO)
 

Definition at line 159 of file unzip.h.

#define UNZ_INTERNALERROR   (-104)
 

Definition at line 163 of file unzip.h.

#define UNZ_NOTCASESENSITIVE   2
 

Definition at line 167 of file unzip.h.

#define UNZ_OK   (0)
 

Definition at line 157 of file unzip.h.

#define UNZ_OSDEFAULTCASE   0
 

Definition at line 168 of file unzip.h.

#define UNZ_PARAMERROR   (-102)
 

Definition at line 161 of file unzip.h.


Typedef Documentation

typedef void*(* alloc_func)(void *opaque, unsigned int items, unsigned int size)
 

Definition at line 80 of file unzip.h.

typedef void(* free_func)(void *opaque, void *address)
 

Definition at line 81 of file unzip.h.

typedef struct tm_unz_s tm_unz
 

Referenced by unzlocal_DosDateToTmuDate().

typedef struct unz_file_info_s unz_file_info
 

Referenced by FindQuakeFilesInZip(), FS_LoadZipFile(), OpenPK3(), unzGetCurrentFileInfo(), and unzlocal_GetCurrentFileInfoInternal().

typedef struct unz_file_info_internal_s unz_file_info_internal
 

Referenced by unzlocal_GetCurrentFileInfoInternal().

typedef struct unz_global_info_s unz_global_info
 

Referenced by FindQuakeFilesInZip(), FS_LoadZipFile(), and unzGetGlobalInfo().

typedef void* unzFile
 

Definition at line 29 of file unzip.h.

Referenced by ClosePakFile(), FindQuakeFilesInZip(), FS_LoadZipFile(), LoadQuakeFile(), OpenPK3(), ReadQuakeFile(), unzOpen(), and unzReOpen().

typedef struct z_stream_s z_stream
 

Referenced by inflateInit2_().

typedef z_stream* z_streamp
 

Definition at line 106 of file unzip.h.

Referenced by inflate(), inflate_blocks(), inflate_blocks_free(), inflate_blocks_new(), inflate_blocks_reset(), inflate_codes(), inflate_codes_free(), inflate_codes_new(), inflate_fast(), inflate_flush(), inflate_trees_bits(), inflate_trees_dynamic(), inflate_trees_fixed(), inflateEnd(), inflateInit2_(), inflateInit_(), inflateReset(), inflateSetDictionary(), inflateSync(), and inflateSyncPoint().


Function Documentation

int unzClose unzFile  file  ) 
 

Definition at line 1408 of file unzip.c.

01409 {
01410     unz_s* s;
01411     if (file==NULL)
01412         return UNZ_PARAMERROR;
01413     s=(unz_s*)file;
01414 
01415     if (s->pfile_in_zip_read!=NULL)
01416         unzCloseCurrentFile(file);
01417 
01418     fclose(s->file);
01419     TRYFREE(s);
01420     return UNZ_OK;
01421 }

int unzCloseCurrentFile unzFile  file  ) 
 

Definition at line 2183 of file unzip.c.

02184 {
02185     int err=UNZ_OK;
02186 
02187     unz_s* s;
02188     file_in_zip_read_info_s* pfile_in_zip_read_info;
02189     if (file==NULL)
02190         return UNZ_PARAMERROR;
02191     s=(unz_s*)file;
02192     pfile_in_zip_read_info=s->pfile_in_zip_read;
02193 
02194     if (pfile_in_zip_read_info==NULL)
02195         return UNZ_PARAMERROR;
02196 
02197 /*
02198     if (pfile_in_zip_read_info->rest_read_uncompressed == 0)
02199     {
02200         if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait)
02201             err=UNZ_CRCERROR;
02202     }
02203 */
02204 
02205     TRYFREE(pfile_in_zip_read_info->read_buffer);
02206     pfile_in_zip_read_info->read_buffer = NULL;
02207     if (pfile_in_zip_read_info->stream_initialised)
02208         inflateEnd(&pfile_in_zip_read_info->stream);
02209 
02210     pfile_in_zip_read_info->stream_initialised = 0;
02211     TRYFREE(pfile_in_zip_read_info);
02212 
02213     s->pfile_in_zip_read=NULL;
02214 
02215     return err;
02216 }

int unzeof unzFile  file  ) 
 

Definition at line 2107 of file unzip.c.

02108 {
02109     unz_s* s;
02110     file_in_zip_read_info_s* pfile_in_zip_read_info;
02111     if (file==NULL)
02112         return UNZ_PARAMERROR;
02113     s=(unz_s*)file;
02114     pfile_in_zip_read_info=s->pfile_in_zip_read;
02115 
02116     if (pfile_in_zip_read_info==NULL)
02117         return UNZ_PARAMERROR;
02118     
02119     if (pfile_in_zip_read_info->rest_read_uncompressed == 0)
02120         return 1;
02121     else
02122         return 0;
02123 }

int unzGetCurrentFileInfo unzFile  file,
unz_file_info pfile_info,
char *  szFileName,
unsigned long  fileNameBufferSize,
void *  extraField,
unsigned long  extraFieldBufferSize,
char *  szComment,
unsigned long  commentBufferSize
 

int unzGetCurrentFileInfoPosition unzFile  file,
unsigned long *  pos
 

Definition at line 1686 of file unzip.c.

References file, unz_s::pos_in_central_dir, and s.

Referenced by FS_LoadZipFile().

01687 {
01688     unz_s* s;   
01689 
01690     if (file==NULL)
01691         return UNZ_PARAMERROR;
01692     s=(unz_s*)file;
01693 
01694     *pos = s->pos_in_central_dir;
01695     return UNZ_OK;
01696 }

int unzGetGlobalComment unzFile  file,
char *  szComment,
unsigned long  uSizeBuf
 

int unzGetGlobalInfo unzFile  file,
unz_global_info pglobal_info
 

Definition at line 1428 of file unzip.c.

01429 {
01430     unz_s* s;
01431     if (file==NULL)
01432         return UNZ_PARAMERROR;
01433     s=(unz_s*)file;
01434     *pglobal_info=s->gi;
01435     return UNZ_OK;
01436 }

int unzGetLocalExtrafield unzFile  file,
void *  buf,
unsigned  len
 

Definition at line 2139 of file unzip.c.

02140 {
02141     unz_s* s;
02142     file_in_zip_read_info_s* pfile_in_zip_read_info;
02143     uInt read_now;
02144     uLong size_to_read;
02145 
02146     if (file==NULL)
02147         return UNZ_PARAMERROR;
02148     s=(unz_s*)file;
02149     pfile_in_zip_read_info=s->pfile_in_zip_read;
02150 
02151     if (pfile_in_zip_read_info==NULL)
02152         return UNZ_PARAMERROR;
02153 
02154     size_to_read = (pfile_in_zip_read_info->size_local_extrafield - 
02155                 pfile_in_zip_read_info->pos_local_extrafield);
02156 
02157     if (buf==NULL)
02158         return (int)size_to_read;
02159     
02160     if (len>size_to_read)
02161         read_now = (uInt)size_to_read;
02162     else
02163         read_now = (uInt)len ;
02164 
02165     if (read_now==0)
02166         return 0;
02167     
02168     if (fseek(pfile_in_zip_read_info->file,
02169               pfile_in_zip_read_info->offset_local_extrafield + 
02170               pfile_in_zip_read_info->pos_local_extrafield,SEEK_SET)!=0)
02171         return UNZ_ERRNO;
02172 
02173     if (fread(buf,(uInt)size_to_read,1,pfile_in_zip_read_info->file)!=1)
02174         return UNZ_ERRNO;
02175 
02176     return (int)read_now;
02177 }

int unzGoToFirstFile unzFile  file  ) 
 

Definition at line 1637 of file unzip.c.

01638 {
01639     int err=UNZ_OK;
01640     unz_s* s;
01641     if (file==NULL)
01642         return UNZ_PARAMERROR;
01643     s=(unz_s*)file;
01644     s->pos_in_central_dir=s->offset_central_dir;
01645     s->num_file=0;
01646     err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
01647                                              &s->cur_file_info_internal,
01648                                              NULL,0,NULL,0,NULL,0);
01649     s->current_file_ok = (err == UNZ_OK);
01650     return err;
01651 }

int unzGoToNextFile unzFile  file  ) 
 

Definition at line 1659 of file unzip.c.

01660 {
01661     unz_s* s;   
01662     int err;
01663 
01664     if (file==NULL)
01665         return UNZ_PARAMERROR;
01666     s=(unz_s*)file;
01667     if (!s->current_file_ok)
01668         return UNZ_END_OF_LIST_OF_FILE;
01669     if (s->num_file+1==s->gi.number_entry)
01670         return UNZ_END_OF_LIST_OF_FILE;
01671 
01672     s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename +
01673             s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ;
01674     s->num_file++;
01675     err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
01676                                                &s->cur_file_info_internal,
01677                                                NULL,0,NULL,0,NULL,0);
01678     s->current_file_ok = (err == UNZ_OK);
01679     return err;
01680 }

int unzLocateFile unzFile  file,
const char *  szFileName,
int  iCaseSensitivity
 

Definition at line 1727 of file unzip.c.

01728 {
01729     unz_s* s;   
01730     int err;
01731 
01732     
01733     uLong num_fileSaved;
01734     uLong pos_in_central_dirSaved;
01735 
01736 
01737     if (file==NULL)
01738         return UNZ_PARAMERROR;
01739 
01740     if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP)
01741         return UNZ_PARAMERROR;
01742 
01743     s=(unz_s*)file;
01744     if (!s->current_file_ok)
01745         return UNZ_END_OF_LIST_OF_FILE;
01746 
01747     num_fileSaved = s->num_file;
01748     pos_in_central_dirSaved = s->pos_in_central_dir;
01749 
01750     err = unzGoToFirstFile(file);
01751 
01752     while (err == UNZ_OK)
01753     {
01754         char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1];
01755         unzGetCurrentFileInfo(file,NULL,
01756                                 szCurrentFileName,sizeof(szCurrentFileName)-1,
01757                                 NULL,0,NULL,0);
01758         if (unzStringFileNameCompare(szCurrentFileName,
01759                                         szFileName,iCaseSensitivity)==0)
01760             return UNZ_OK;
01761         err = unzGoToNextFile(file);
01762     }
01763 
01764     s->num_file = num_fileSaved ;
01765     s->pos_in_central_dir = pos_in_central_dirSaved ;
01766     return err;
01767 }

unzFile unzOpen const char *  path  ) 
 

Definition at line 1313 of file unzip.c.

01314 {
01315     unz_s us;
01316     unz_s *s;
01317     uLong central_pos,uL;
01318     FILE * fin ;
01319 
01320     uLong number_disk;          /* number of the current dist, used for 
01321                                    spaning ZIP, unsupported, always 0*/
01322     uLong number_disk_with_CD;  /* number the the disk with central dir, used
01323                                    for spaning ZIP, unsupported, always 0*/
01324     uLong number_entry_CD;      /* total number of entries in
01325                                    the central dir 
01326                                    (same than number_entry on nospan) */
01327 
01328     int err=UNZ_OK;
01329 
01330     fin=fopen(path,"rb");
01331     if (fin==NULL)
01332         return NULL;
01333 
01334     central_pos = unzlocal_SearchCentralDir(fin);
01335     if (central_pos==0)
01336         err=UNZ_ERRNO;
01337 
01338     if (fseek(fin,central_pos,SEEK_SET)!=0)
01339         err=UNZ_ERRNO;
01340 
01341     /* the signature, already checked */
01342     if (unzlocal_getLong(fin,&uL)!=UNZ_OK)
01343         err=UNZ_ERRNO;
01344 
01345     /* number of this disk */
01346     if (unzlocal_getShort(fin,&number_disk)!=UNZ_OK)
01347         err=UNZ_ERRNO;
01348 
01349     /* number of the disk with the start of the central directory */
01350     if (unzlocal_getShort(fin,&number_disk_with_CD)!=UNZ_OK)
01351         err=UNZ_ERRNO;
01352 
01353     /* total number of entries in the central dir on this disk */
01354     if (unzlocal_getShort(fin,&us.gi.number_entry)!=UNZ_OK)
01355         err=UNZ_ERRNO;
01356 
01357     /* total number of entries in the central dir */
01358     if (unzlocal_getShort(fin,&number_entry_CD)!=UNZ_OK)
01359         err=UNZ_ERRNO;
01360 
01361     if ((number_entry_CD!=us.gi.number_entry) ||
01362         (number_disk_with_CD!=0) ||
01363         (number_disk!=0))
01364         err=UNZ_BADZIPFILE;
01365 
01366     /* size of the central directory */
01367     if (unzlocal_getLong(fin,&us.size_central_dir)!=UNZ_OK)
01368         err=UNZ_ERRNO;
01369 
01370     /* offset of start of central directory with respect to the 
01371           starting disk number */
01372     if (unzlocal_getLong(fin,&us.offset_central_dir)!=UNZ_OK)
01373         err=UNZ_ERRNO;
01374 
01375     /* zipfile comment length */
01376     if (unzlocal_getShort(fin,&us.gi.size_comment)!=UNZ_OK)
01377         err=UNZ_ERRNO;
01378 
01379     if ((central_pos<us.offset_central_dir+us.size_central_dir) && 
01380         (err==UNZ_OK))
01381         err=UNZ_BADZIPFILE;
01382 
01383     if (err!=UNZ_OK)
01384     {
01385         fclose(fin);
01386         return NULL;
01387     }
01388 
01389     us.file=fin;
01390     us.byte_before_the_zipfile = central_pos -
01391                             (us.offset_central_dir+us.size_central_dir);
01392     us.central_pos = central_pos;
01393     us.pfile_in_zip_read = NULL;
01394     
01395 
01396     s=(unz_s*)ALLOC(sizeof(unz_s));
01397     *s=us;
01398 //  unzGoToFirstFile((unzFile)s);   
01399     return (unzFile)s;  
01400 }

int unzOpenCurrentFile unzFile  file  ) 
 

Definition at line 1863 of file unzip.c.

01864 {
01865     int err=UNZ_OK;
01866     int Store;
01867     uInt iSizeVar;
01868     unz_s* s;
01869     file_in_zip_read_info_s* pfile_in_zip_read_info;
01870     uLong offset_local_extrafield;  /* offset of the static extra field */
01871     uInt  size_local_extrafield;    /* size of the static extra field */
01872 
01873     if (file==NULL)
01874         return UNZ_PARAMERROR;
01875     s=(unz_s*)file;
01876     if (!s->current_file_ok)
01877         return UNZ_PARAMERROR;
01878 
01879     if (s->pfile_in_zip_read != NULL)
01880         unzCloseCurrentFile(file);
01881 
01882     if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar,
01883                 &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
01884         return UNZ_BADZIPFILE;
01885 
01886     pfile_in_zip_read_info = (file_in_zip_read_info_s*)
01887                                         ALLOC(sizeof(file_in_zip_read_info_s));
01888     if (pfile_in_zip_read_info==NULL)
01889         return UNZ_INTERNALERROR;
01890 
01891     pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE);
01892     pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield;
01893     pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield;
01894     pfile_in_zip_read_info->pos_local_extrafield=0;
01895 
01896     if (pfile_in_zip_read_info->read_buffer==NULL)
01897     {
01898         TRYFREE(pfile_in_zip_read_info);
01899         return UNZ_INTERNALERROR;
01900     }
01901 
01902     pfile_in_zip_read_info->stream_initialised=0;
01903     
01904     if ((s->cur_file_info.compression_method!=0) &&
01905         (s->cur_file_info.compression_method!=Z_DEFLATED))
01906         err=UNZ_BADZIPFILE;
01907     Store = s->cur_file_info.compression_method==0;
01908 
01909     pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
01910     pfile_in_zip_read_info->crc32=0;
01911     pfile_in_zip_read_info->compression_method =
01912             s->cur_file_info.compression_method;
01913     pfile_in_zip_read_info->file=s->file;
01914     pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile;
01915 
01916     pfile_in_zip_read_info->stream.total_out = 0;
01917 
01918     if (!Store)
01919     {
01920       pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
01921       pfile_in_zip_read_info->stream.zfree = (free_func)0;
01922       pfile_in_zip_read_info->stream.opaque = (voidp)0; 
01923       
01924       err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
01925       if (err == Z_OK)
01926         pfile_in_zip_read_info->stream_initialised=1;
01927         /* windowBits is passed < 0 to tell that there is no zlib header.
01928          * Note that in this case inflate *requires* an extra "dummy" byte
01929          * after the compressed stream in order to complete decompression and
01930          * return Z_STREAM_END. 
01931          * In unzip, i don't wait absolutely Z_STREAM_END because I known the 
01932          * size of both compressed and uncompressed data
01933          */
01934     }
01935     pfile_in_zip_read_info->rest_read_compressed = 
01936             s->cur_file_info.compressed_size ;
01937     pfile_in_zip_read_info->rest_read_uncompressed = 
01938             s->cur_file_info.uncompressed_size ;
01939 
01940     
01941     pfile_in_zip_read_info->pos_in_zipfile = 
01942             s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + 
01943               iSizeVar;
01944     
01945     pfile_in_zip_read_info->stream.avail_in = (uInt)0;
01946 
01947 
01948     s->pfile_in_zip_read = pfile_in_zip_read_info;
01949     return UNZ_OK;
01950 }

int unzReadCurrentFile unzFile  file,
void *  buf,
unsigned  len
 

Definition at line 1963 of file unzip.c.

01964 {
01965     int err=UNZ_OK;
01966     uInt iRead = 0;
01967     unz_s* s;
01968     file_in_zip_read_info_s* pfile_in_zip_read_info;
01969     if (file==NULL)
01970         return UNZ_PARAMERROR;
01971     s=(unz_s*)file;
01972     pfile_in_zip_read_info=s->pfile_in_zip_read;
01973 
01974     if (pfile_in_zip_read_info==NULL)
01975         return UNZ_PARAMERROR;
01976 
01977 
01978     if ((pfile_in_zip_read_info->read_buffer == NULL))
01979         return UNZ_END_OF_LIST_OF_FILE;
01980     if (len==0)
01981         return 0;
01982 
01983     pfile_in_zip_read_info->stream.next_out = (Byte*)buf;
01984 
01985     pfile_in_zip_read_info->stream.avail_out = (uInt)len;
01986     
01987     if (len>pfile_in_zip_read_info->rest_read_uncompressed)
01988         pfile_in_zip_read_info->stream.avail_out = 
01989           (uInt)pfile_in_zip_read_info->rest_read_uncompressed;
01990 
01991     while (pfile_in_zip_read_info->stream.avail_out>0)
01992     {
01993         if ((pfile_in_zip_read_info->stream.avail_in==0) &&
01994             (pfile_in_zip_read_info->rest_read_compressed>0))
01995         {
01996             uInt uReadThis = UNZ_BUFSIZE;
01997             if (pfile_in_zip_read_info->rest_read_compressed<uReadThis)
01998                 uReadThis = (uInt)pfile_in_zip_read_info->rest_read_compressed;
01999             if (uReadThis == 0)
02000                 return UNZ_EOF;
02001             if (s->cur_file_info.compressed_size == pfile_in_zip_read_info->rest_read_compressed)
02002                 if (fseek(pfile_in_zip_read_info->file,
02003                           pfile_in_zip_read_info->pos_in_zipfile + 
02004                              pfile_in_zip_read_info->byte_before_the_zipfile,SEEK_SET)!=0)
02005                     return UNZ_ERRNO;
02006             if (fread(pfile_in_zip_read_info->read_buffer,uReadThis,1,
02007                          pfile_in_zip_read_info->file)!=1)
02008                 return UNZ_ERRNO;
02009             pfile_in_zip_read_info->pos_in_zipfile += uReadThis;
02010 
02011             pfile_in_zip_read_info->rest_read_compressed-=uReadThis;
02012             
02013             pfile_in_zip_read_info->stream.next_in = 
02014                 (Byte*)pfile_in_zip_read_info->read_buffer;
02015             pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis;
02016         }
02017 
02018         if (pfile_in_zip_read_info->compression_method==0)
02019         {
02020             uInt uDoCopy,i ;
02021             if (pfile_in_zip_read_info->stream.avail_out < 
02022                             pfile_in_zip_read_info->stream.avail_in)
02023                 uDoCopy = pfile_in_zip_read_info->stream.avail_out ;
02024             else
02025                 uDoCopy = pfile_in_zip_read_info->stream.avail_in ;
02026                 
02027             for (i=0;i<uDoCopy;i++)
02028                 *(pfile_in_zip_read_info->stream.next_out+i) =
02029                         *(pfile_in_zip_read_info->stream.next_in+i);
02030                     
02031 //          pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,
02032 //                              pfile_in_zip_read_info->stream.next_out,
02033 //                              uDoCopy);
02034             pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy;
02035             pfile_in_zip_read_info->stream.avail_in -= uDoCopy;
02036             pfile_in_zip_read_info->stream.avail_out -= uDoCopy;
02037             pfile_in_zip_read_info->stream.next_out += uDoCopy;
02038             pfile_in_zip_read_info->stream.next_in += uDoCopy;
02039             pfile_in_zip_read_info->stream.total_out += uDoCopy;
02040             iRead += uDoCopy;
02041         }
02042         else
02043         {
02044             uLong uTotalOutBefore,uTotalOutAfter;
02045             const Byte *bufBefore;
02046             uLong uOutThis;
02047             int flush=Z_SYNC_FLUSH;
02048 
02049             uTotalOutBefore = pfile_in_zip_read_info->stream.total_out;
02050             bufBefore = pfile_in_zip_read_info->stream.next_out;
02051 
02052             /*
02053             if ((pfile_in_zip_read_info->rest_read_uncompressed ==
02054                      pfile_in_zip_read_info->stream.avail_out) &&
02055                 (pfile_in_zip_read_info->rest_read_compressed == 0))
02056                 flush = Z_FINISH;
02057             */
02058             err=inflate(&pfile_in_zip_read_info->stream,flush);
02059 
02060             uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
02061             uOutThis = uTotalOutAfter-uTotalOutBefore;
02062             
02063 //          pfile_in_zip_read_info->crc32 = 
02064 //                crc32(pfile_in_zip_read_info->crc32,bufBefore,
02065 //                        (uInt)(uOutThis));
02066 
02067             pfile_in_zip_read_info->rest_read_uncompressed -=
02068                 uOutThis;
02069 
02070             iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
02071             
02072             if (err==Z_STREAM_END)
02073                 return (iRead==0) ? UNZ_EOF : iRead;
02074             if (err!=Z_OK) 
02075                 break;
02076         }
02077     }
02078 
02079     if (err==Z_OK)
02080         return iRead;
02081     return err;
02082 }

unzFile unzReOpen const char *  path,
unzFile  file
 

Definition at line 1288 of file unzip.c.

01289 {
01290     unz_s *s;
01291     FILE * fin;
01292 
01293     fin=fopen(path,"rb");
01294     if (fin==NULL)
01295         return NULL;
01296 
01297     s=(unz_s*)ALLOC(sizeof(unz_s));
01298     Com_Memcpy(s, (unz_s*)file, sizeof(unz_s));
01299 
01300     s->file = fin;
01301     return (unzFile)s;  
01302 }

int unzSetCurrentFileInfoPosition unzFile  file,
unsigned long  pos
 

Definition at line 1702 of file unzip.c.

References unz_s::cur_file_info, unz_s::cur_file_info_internal, unz_s::current_file_ok, err(), file, NULL, unz_s::pos_in_central_dir, s, and unzlocal_GetCurrentFileInfoInternal().

Referenced by FS_FOpenFileRead(), and FS_Seek().

01703 {
01704     unz_s* s;   
01705     int err;
01706 
01707     if (file==NULL)
01708         return UNZ_PARAMERROR;
01709     s=(unz_s*)file;
01710 
01711     s->pos_in_central_dir = pos;
01712     err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
01713                                                &s->cur_file_info_internal,
01714                                                NULL,0,NULL,0,NULL,0);
01715     s->current_file_ok = (err == UNZ_OK);
01716     return UNZ_OK;
01717 }

Here is the call graph for this function:

int unzStringFileNameCompare const char *  fileName1,
const char *  fileName2,
int  iCaseSensitivity
 

Definition at line 1216 of file unzip.c.

01217 {
01218     if (iCaseSensitivity==0)
01219         iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
01220 
01221     if (iCaseSensitivity==1)
01222         return strcmp(fileName1,fileName2);
01223 
01224     return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2);
01225 } 

long unztell unzFile  file  ) 
 

Definition at line 2088 of file unzip.c.

02089 {
02090     unz_s* s;
02091     file_in_zip_read_info_s* pfile_in_zip_read_info;
02092     if (file==NULL)
02093         return UNZ_PARAMERROR;
02094     s=(unz_s*)file;
02095     pfile_in_zip_read_info=s->pfile_in_zip_read;
02096 
02097     if (pfile_in_zip_read_info==NULL)
02098         return UNZ_PARAMERROR;
02099 
02100     return (long)pfile_in_zip_read_info->stream.total_out;
02101 }


Generated on Thu Aug 25 14:55:49 2005 for Quake III Arena by  doxygen 1.3.9.1