tesseract  4.00.00dev
unzip.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "zlib.h"
#include "unzip.h"
#include <errno.h>
#include "crypt.h"

Go to the source code of this file.

Classes

struct  unz_file_info_internal_s
 
struct  file_in_zip_read_info_s
 
struct  unz_s
 

Macros

#define local   static
 
#define CASESENSITIVITYDEFAULT_NO
 
#define UNZ_BUFSIZE   (16384)
 
#define UNZ_MAXFILENAMEINZIP   (256)
 
#define ALLOC(size)   (malloc(size))
 
#define TRYFREE(p)   {if (p) free(p);}
 
#define SIZECENTRALDIRITEM   (0x2e)
 
#define SIZEZIPLOCALHEADER   (0x1e)
 
#define CASESENSITIVITYDEFAULTVALUE   2
 
#define STRCMPCASENOSENTIVEFUNCTION   strcmpcasenosensitive_internal
 
#define BUFREADCOMMENT   (0x400)
 

Typedefs

typedef struct unz_file_info_internal_s unz_file_info_internal
 

Functions

local int unzlocal_getByte OF ((const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, int *pi))
 
local int unzlocal_getByte (zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, int *pi) const
 
local int unzlocal_getShort OF ((const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX))
 
local int unzlocal_getShort (zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
 
local int unzlocal_getLong (zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
 
local int strcmpcasenosensitive_internal (char *fileName1, const char *fileName2) const
 
int ZEXPORT unzStringFileNameCompare (char *fileName1, const char *fileName2, int iCaseSensitivity) const
 
local uLong unzlocal_SearchCentralDir OF ((const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream))
 
local uLong unzlocal_SearchCentralDir (zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream) const
 
unzFile ZEXPORT unzOpen2 (char *path, zlib_filefunc_def *pzlib_filefunc_def) const
 
unzFile ZEXPORT unzOpen (char *path) const
 
int ZEXPORT unzClose (unzFile file)
 
int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info *pglobal_info)
 
local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz *ptm)
 
local int unzlocal_GetCurrentFileInfoInternal OF ((unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize))
 
local int unzlocal_GetCurrentFileInfoInternal (unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
 
int ZEXPORT unzGetCurrentFileInfo (unzFile file, unz_file_info *pfile_info, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
 
int ZEXPORT unzGoToFirstFile (unzFile file)
 
int ZEXPORT unzGoToNextFile (unzFile file)
 
int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
 
int ZEXPORT unzGetFilePos (unzFile file, unz_file_pos *file_pos)
 
int ZEXPORT unzGoToFilePos (unzFile file, unz_file_pos *file_pos)
 
local int unzlocal_CheckCurrentFileCoherencyHeader (unz_s *s, uInt *piSizeVar, uLong *poffset_local_extrafield, uInt *psize_local_extrafield)
 
int ZEXPORT unzOpenCurrentFile3 (unzFile file, int *method, int *level, int raw, const char *password)
 
int ZEXPORT unzOpenCurrentFile (unzFile file)
 
int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char *password)
 
int ZEXPORT unzOpenCurrentFile2 (unzFile file, int *method, int *level, int raw)
 
int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
 
z_off_t ZEXPORT unztell (unzFile file)
 
int ZEXPORT unzeof (unzFile file)
 
int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
 
int ZEXPORT unzCloseCurrentFile (unzFile file)
 
int ZEXPORT unzGetGlobalComment (unzFile file, char *szComment, uLong uSizeBuf)
 
uLong ZEXPORT unzGetOffset (unzFile file)
 
int ZEXPORT unzSetOffset (unzFile file, uLong pos)
 

Variables

const char unz_copyright []
 

Macro Definition Documentation

◆ ALLOC

#define ALLOC (   size)    (malloc(size))

Definition at line 78 of file unzip.c.

◆ BUFREADCOMMENT

#define BUFREADCOMMENT   (0x400)

Definition at line 320 of file unzip.c.

◆ CASESENSITIVITYDEFAULT_NO

#define CASESENSITIVITYDEFAULT_NO

Definition at line 64 of file unzip.c.

◆ CASESENSITIVITYDEFAULTVALUE

#define CASESENSITIVITYDEFAULTVALUE   2

Definition at line 287 of file unzip.c.

◆ local

#define local   static

Definition at line 57 of file unzip.c.

◆ SIZECENTRALDIRITEM

#define SIZECENTRALDIRITEM   (0x2e)

Definition at line 84 of file unzip.c.

◆ SIZEZIPLOCALHEADER

#define SIZEZIPLOCALHEADER   (0x1e)

Definition at line 85 of file unzip.c.

◆ STRCMPCASENOSENTIVEFUNCTION

#define STRCMPCASENOSENTIVEFUNCTION   strcmpcasenosensitive_internal

Definition at line 293 of file unzip.c.

◆ TRYFREE

#define TRYFREE (   p)    {if (p) free(p);}

Definition at line 81 of file unzip.c.

◆ UNZ_BUFSIZE

#define UNZ_BUFSIZE   (16384)

Definition at line 70 of file unzip.c.

◆ UNZ_MAXFILENAMEINZIP

#define UNZ_MAXFILENAMEINZIP   (256)

Definition at line 74 of file unzip.c.

Typedef Documentation

◆ unz_file_info_internal

Function Documentation

◆ OF() [1/4]

local int unzlocal_getByte OF ( (const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, int *pi)  )

◆ OF() [2/4]

local int ziplocal_getLong OF ( (const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX)  )

◆ OF() [3/4]

local uLong unzlocal_SearchCentralDir OF ( (const zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream)  )

◆ OF() [4/4]

local int unzlocal_GetCurrentFileInfoInternal OF ( (unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)  )

◆ strcmpcasenosensitive_internal()

local int strcmpcasenosensitive_internal ( char*  fileName1,
const char*  fileName2 
) const

Definition at line 262 of file unzip.c.

265 {
266  for (;;)
267  {
268  char c1=*(fileName1++);
269  char c2=*(fileName2++);
270  if ((c1>='a') && (c1<='z'))
271  c1 -= 0x20;
272  if ((c2>='a') && (c2<='z'))
273  c2 -= 0x20;
274  if (c1=='\0')
275  return ((c2=='\0') ? 0 : -1);
276  if (c2=='\0')
277  return 1;
278  if (c1<c2)
279  return -1;
280  if (c1>c2)
281  return 1;
282  }
283 }

◆ unzClose()

int ZEXPORT unzClose ( unzFile  file)

Definition at line 511 of file unzip.c.

513 {
514  unz_s* s;
515  if (file==NULL)
516  return UNZ_PARAMERROR;
517  s=(unz_s*)file;
518 
519  if (s->pfile_in_zip_read!=NULL)
520  unzCloseCurrentFile(file);
521 
522  ZCLOSE(s->z_filefunc, s->filestream);
523  TRYFREE(s);
524  return UNZ_OK;
525 }
#define ZCLOSE(filefunc, filestream)
Definition: ioapi.h:66
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
#define TRYFREE(p)
Definition: unzip.c:81
int ZEXPORT unzCloseCurrentFile(unzFile file)
Definition: unzip.c:1489
Definition: unzip.c:128

◆ unzCloseCurrentFile()

int ZEXPORT unzCloseCurrentFile ( unzFile  file)

Definition at line 1489 of file unzip.c.

1491 {
1492  int err=UNZ_OK;
1493 
1494  unz_s* s;
1495  file_in_zip_read_info_s* pfile_in_zip_read_info;
1496  if (file==NULL)
1497  return UNZ_PARAMERROR;
1498  s=(unz_s*)file;
1499  pfile_in_zip_read_info=s->pfile_in_zip_read;
1500 
1501  if (pfile_in_zip_read_info==NULL)
1502  return UNZ_PARAMERROR;
1503 
1504 
1505  if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) &&
1506  (!pfile_in_zip_read_info->raw))
1507  {
1508  if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait)
1509  err=UNZ_CRCERROR;
1510  }
1511 
1512 
1513  TRYFREE(pfile_in_zip_read_info->read_buffer);
1514  pfile_in_zip_read_info->read_buffer = NULL;
1515  if (pfile_in_zip_read_info->stream_initialised)
1516  inflateEnd(&pfile_in_zip_read_info->stream);
1517 
1518  pfile_in_zip_read_info->stream_initialised = 0;
1519  TRYFREE(pfile_in_zip_read_info);
1520 
1521  s->pfile_in_zip_read=NULL;
1522 
1523  return err;
1524 }
#define UNZ_CRCERROR
Definition: unzip.h:77
uLong rest_read_uncompressed
Definition: unzip.c:117
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
#define TRYFREE(p)
Definition: unzip.c:81
uLong stream_initialised
Definition: unzip.c:108
Definition: unzip.c:128

◆ unzeof()

int ZEXPORT unzeof ( unzFile  file)

Definition at line 1405 of file unzip.c.

1407 {
1408  unz_s* s;
1409  file_in_zip_read_info_s* pfile_in_zip_read_info;
1410  if (file==NULL)
1411  return UNZ_PARAMERROR;
1412  s=(unz_s*)file;
1413  pfile_in_zip_read_info=s->pfile_in_zip_read;
1414 
1415  if (pfile_in_zip_read_info==NULL)
1416  return UNZ_PARAMERROR;
1417 
1418  if (pfile_in_zip_read_info->rest_read_uncompressed == 0)
1419  return 1;
1420  else
1421  return 0;
1422 }
uLong rest_read_uncompressed
Definition: unzip.c:117
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
Definition: unzip.c:128

◆ unzGetCurrentFileInfo()

int ZEXPORT unzGetCurrentFileInfo ( unzFile  file,
unz_file_info pfile_info,
char *  szFileName,
uLong  fileNameBufferSize,
void *  extraField,
uLong  extraFieldBufferSize,
char *  szComment,
uLong  commentBufferSize 
)

Definition at line 744 of file unzip.c.

757 {
758  return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
759  szFileName,fileNameBufferSize,
760  extraField,extraFieldBufferSize,
761  szComment,commentBufferSize);
762 }
local int unzlocal_GetCurrentFileInfoInternal(unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:577

◆ unzGetFilePos()

int ZEXPORT unzGetFilePos ( unzFile  file,
unz_file_pos file_pos 
)

Definition at line 903 of file unzip.c.

906 {
907  unz_s* s;
908 
909  if (file==NULL || file_pos==NULL)
910  return UNZ_PARAMERROR;
911  s=(unz_s*)file;
912  if (!s->current_file_ok)
914 
916  file_pos->num_of_file = s->num_file;
917 
918  return UNZ_OK;
919 }
uLong num_of_file
Definition: unzip.h:213
uLong num_file
Definition: unzip.c:134
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_END_OF_LIST_OF_FILE
Definition: unzip.h:71
#define UNZ_PARAMERROR
Definition: unzip.h:74
uLong pos_in_zip_directory
Definition: unzip.h:212
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzGetGlobalComment()

int ZEXPORT unzGetGlobalComment ( unzFile  file,
char *  szComment,
uLong  uSizeBuf 
)

Definition at line 1532 of file unzip.c.

1536 {
1537  int err=UNZ_OK;
1538  unz_s* s;
1539  uLong uReadThis ;
1540  if (file==NULL)
1541  return UNZ_PARAMERROR;
1542  s=(unz_s*)file;
1543 
1544  uReadThis = uSizeBuf;
1545  if (uReadThis>s->gi.size_comment)
1546  uReadThis = s->gi.size_comment;
1547 
1549  return UNZ_ERRNO;
1550 
1551  if (uReadThis>0)
1552  {
1553  *szComment='\0';
1554  if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis)
1555  return UNZ_ERRNO;
1556  }
1557 
1558  if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment))
1559  *(szComment+s->gi.size_comment)='\0';
1560  return (int)uReadThis;
1561 }
uLong central_pos
Definition: unzip.c:137
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_ERRNO
Definition: unzip.h:72
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_global_info gi
Definition: unzip.c:132
Definition: unzip.c:128
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
uLong size_comment
Definition: unzip.h:96
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzGetGlobalInfo()

int ZEXPORT unzGetGlobalInfo ( unzFile  file,
unz_global_info pglobal_info 
)

Definition at line 532 of file unzip.c.

535 {
536  unz_s* s;
537  if (file==NULL)
538  return UNZ_PARAMERROR;
539  s=(unz_s*)file;
540  *pglobal_info=s->gi;
541  return UNZ_OK;
542 }
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_global_info gi
Definition: unzip.c:132
Definition: unzip.c:128

◆ unzGetLocalExtrafield()

int ZEXPORT unzGetLocalExtrafield ( unzFile  file,
voidp  buf,
unsigned  len 
)

Definition at line 1438 of file unzip.c.

1442 {
1443  unz_s* s;
1444  file_in_zip_read_info_s* pfile_in_zip_read_info;
1445  uInt read_now;
1446  uLong size_to_read;
1447 
1448  if (file==NULL)
1449  return UNZ_PARAMERROR;
1450  s=(unz_s*)file;
1451  pfile_in_zip_read_info=s->pfile_in_zip_read;
1452 
1453  if (pfile_in_zip_read_info==NULL)
1454  return UNZ_PARAMERROR;
1455 
1456  size_to_read = (pfile_in_zip_read_info->size_local_extrafield -
1457  pfile_in_zip_read_info->pos_local_extrafield);
1458 
1459  if (buf==NULL)
1460  return (int)size_to_read;
1461 
1462  if (len>size_to_read)
1463  read_now = (uInt)size_to_read;
1464  else
1465  read_now = (uInt)len ;
1466 
1467  if (read_now==0)
1468  return 0;
1469 
1470  if (ZSEEK(pfile_in_zip_read_info->z_filefunc,
1471  pfile_in_zip_read_info->filestream,
1472  pfile_in_zip_read_info->offset_local_extrafield +
1473  pfile_in_zip_read_info->pos_local_extrafield,
1475  return UNZ_ERRNO;
1476 
1477  if (ZREAD(pfile_in_zip_read_info->z_filefunc,
1478  pfile_in_zip_read_info->filestream,
1479  buf,read_now)!=read_now)
1480  return UNZ_ERRNO;
1481 
1482  return (int)read_now;
1483 }
zlib_filefunc_def z_filefunc
Definition: unzip.c:118
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
uInt size_local_extrafield
Definition: unzip.c:111
#define UNZ_ERRNO
Definition: unzip.h:72
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
uLong pos_local_extrafield
Definition: unzip.c:112
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
voidpf void * buf
Definition: ioapi.h:39
Definition: unzip.c:128
uLong offset_local_extrafield
Definition: unzip.c:110
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzGetOffset()

uLong ZEXPORT unzGetOffset ( unzFile  file)

Definition at line 1564 of file unzip.c.

1566 {
1567  unz_s* s;
1568 
1569  if (file==NULL)
1570  return UNZ_PARAMERROR;
1571  s=(unz_s*)file;
1572  if (!s->current_file_ok)
1573  return 0;
1574  if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff)
1575  if (s->num_file==s->gi.number_entry)
1576  return 0;
1577  return s->pos_in_central_dir;
1578 }
uLong num_file
Definition: unzip.c:134
uLong number_entry
Definition: unzip.h:94
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_global_info gi
Definition: unzip.c:132
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzGoToFilePos()

int ZEXPORT unzGoToFilePos ( unzFile  file,
unz_file_pos file_pos 
)

Definition at line 921 of file unzip.c.

924 {
925  unz_s* s;
926  int err;
927 
928  if (file==NULL || file_pos==NULL)
929  return UNZ_PARAMERROR;
930  s=(unz_s*)file;
931 
932  /* jump to the right spot */
934  s->num_file = file_pos->num_of_file;
935 
936  /* set the current file */
939  NULL,0,NULL,0,NULL,0);
940  /* return results */
941  s->current_file_ok = (err == UNZ_OK);
942  return err;
943 }
uLong num_of_file
Definition: unzip.h:213
uLong num_file
Definition: unzip.c:134
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_file_info cur_file_info
Definition: unzip.c:143
uLong pos_in_zip_directory
Definition: unzip.h:212
local int unzlocal_GetCurrentFileInfoInternal(unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:577
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzGoToFirstFile()

int ZEXPORT unzGoToFirstFile ( unzFile  file)

Definition at line 768 of file unzip.c.

770 {
771  int err=UNZ_OK;
772  unz_s* s;
773  if (file==NULL)
774  return UNZ_PARAMERROR;
775  s=(unz_s*)file;
777  s->num_file=0;
780  NULL,0,NULL,0,NULL,0);
781  s->current_file_ok = (err == UNZ_OK);
782  return err;
783 }
uLong num_file
Definition: unzip.c:134
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_file_info cur_file_info
Definition: unzip.c:143
uLong offset_central_dir
Definition: unzip.c:140
local int unzlocal_GetCurrentFileInfoInternal(unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:577
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzGoToNextFile()

int ZEXPORT unzGoToNextFile ( unzFile  file)

Definition at line 790 of file unzip.c.

792 {
793  unz_s* s;
794  int err;
795 
796  if (file==NULL)
797  return UNZ_PARAMERROR;
798  s=(unz_s*)file;
799  if (!s->current_file_ok)
801  if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */
802  if (s->num_file+1==s->gi.number_entry)
804 
807  s->num_file++;
810  NULL,0,NULL,0,NULL,0);
811  s->current_file_ok = (err == UNZ_OK);
812  return err;
813 }
uLong num_file
Definition: unzip.c:134
uLong size_file_extra
Definition: unzip.h:112
uLong number_entry
Definition: unzip.h:94
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_END_OF_LIST_OF_FILE
Definition: unzip.h:71
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_file_info cur_file_info
Definition: unzip.c:143
uLong size_filename
Definition: unzip.h:111
uLong size_file_comment
Definition: unzip.h:113
unz_global_info gi
Definition: unzip.c:132
local int unzlocal_GetCurrentFileInfoInternal(unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:577
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
#define SIZECENTRALDIRITEM
Definition: unzip.c:84
uLong current_file_ok
Definition: unzip.c:136

◆ unzlocal_CheckCurrentFileCoherencyHeader()

local int unzlocal_CheckCurrentFileCoherencyHeader ( unz_s s,
uInt*  piSizeVar,
uLong poffset_local_extrafield,
uInt *  psize_local_extrafield 
)

Definition at line 957 of file unzip.c.

964 {
965  uLong uMagic,uData,uFlags;
966  uLong size_filename;
967  uLong size_extra_field;
968  int err=UNZ_OK;
969 
970  *piSizeVar = 0;
971  *poffset_local_extrafield = 0;
972  *psize_local_extrafield = 0;
973 
976  return UNZ_ERRNO;
977 
978 
979  if (err==UNZ_OK)
980  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
981  err=UNZ_ERRNO;
982  else if (uMagic!=0x04034b50)
983  err=UNZ_BADZIPFILE;
984 
985  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK)
986  err=UNZ_ERRNO;
987 /*
988  else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion))
989  err=UNZ_BADZIPFILE;
990 */
991  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK)
992  err=UNZ_ERRNO;
993 
994  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK)
995  err=UNZ_ERRNO;
996  else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method))
997  err=UNZ_BADZIPFILE;
998 
999  if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) &&
1000  (s->cur_file_info.compression_method!=Z_DEFLATED))
1001  err=UNZ_BADZIPFILE;
1002 
1003  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */
1004  err=UNZ_ERRNO;
1005 
1006  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */
1007  err=UNZ_ERRNO;
1008  else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) &&
1009  ((uFlags & 8)==0))
1010  err=UNZ_BADZIPFILE;
1011 
1012  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */
1013  err=UNZ_ERRNO;
1014  else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) &&
1015  ((uFlags & 8)==0))
1016  err=UNZ_BADZIPFILE;
1017 
1018  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */
1019  err=UNZ_ERRNO;
1020  else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) &&
1021  ((uFlags & 8)==0))
1022  err=UNZ_BADZIPFILE;
1023 
1024 
1025  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK)
1026  err=UNZ_ERRNO;
1027  else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename))
1028  err=UNZ_BADZIPFILE;
1029 
1030  *piSizeVar += (uInt)size_filename;
1031 
1032  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK)
1033  err=UNZ_ERRNO;
1034  *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile +
1035  SIZEZIPLOCALHEADER + size_filename;
1036  *psize_local_extrafield = (uInt)size_extra_field;
1037 
1038  *piSizeVar += (uInt)size_extra_field;
1039 
1040  return err;
1041 }
uLong compressed_size
Definition: unzip.h:109
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
uLong crc
Definition: unzip.h:108
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_BADZIPFILE
Definition: unzip.h:75
#define SIZEZIPLOCALHEADER
Definition: unzip.c:85
#define UNZ_ERRNO
Definition: unzip.h:72
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
uLong uncompressed_size
Definition: unzip.h:110
local int unzlocal_getShort(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:201
uLong compression_method
Definition: unzip.h:106
unz_file_info cur_file_info
Definition: unzip.c:143
uLong size_filename
Definition: unzip.h:111
local int unzlocal_getLong(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:229
uLong byte_before_the_zipfile
Definition: unzip.c:133
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzlocal_DosDateToTmuDate()

local void unzlocal_DosDateToTmuDate ( uLong  ulDosDate,
tm_unz ptm 
)

Definition at line 548 of file unzip.c.

551 {
552  uLong uDate;
553  uDate = (uLong)(ulDosDate>>16);
554  ptm->tm_mday = (uInt)(uDate&0x1f) ;
555  ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ;
556  ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ;
557 
558  ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800);
559  ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ;
560  ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ;
561 }
uInt tm_hour
Definition: unzip.h:84
uInt tm_mday
Definition: unzip.h:85
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
uInt tm_year
Definition: unzip.h:87
uInt tm_min
Definition: unzip.h:83
uInt tm_sec
Definition: unzip.h:82
uInt tm_mon
Definition: unzip.h:86

◆ unzlocal_getByte()

local int unzlocal_getByte ( zlib_filefunc_def pzlib_filefunc_def,
voidpf  filestream,
int pi 
) const

Definition at line 171 of file unzip.c.

175 {
176  unsigned char c;
177  int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
178  if (err==1)
179  {
180  *pi = (int)c;
181  return UNZ_OK;
182  }
183  else
184  {
185  if (ZERROR(*pzlib_filefunc_def,filestream))
186  return UNZ_ERRNO;
187  else
188  return UNZ_EOF;
189  }
190 }
#define ZERROR(filefunc, filestream)
Definition: ioapi.h:67
#define UNZ_EOF
Definition: unzip.h:73
#define UNZ_ERRNO
Definition: unzip.h:72
#define UNZ_OK
Definition: unzip.h:70
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62

◆ unzlocal_GetCurrentFileInfoInternal()

local int unzlocal_GetCurrentFileInfoInternal ( unzFile  file,
unz_file_info pfile_info,
unz_file_info_internal pfile_info_internal,
char *  szFileName,
uLong  fileNameBufferSize,
void *  extraField,
uLong  extraFieldBufferSize,
char *  szComment,
uLong  commentBufferSize 
)

Definition at line 577 of file unzip.c.

592 {
593  unz_s* s;
594  unz_file_info file_info;
595  unz_file_info_internal file_info_internal;
596  int err=UNZ_OK;
597  uLong uMagic;
598  long lSeek=0;
599 
600  if (file==NULL)
601  return UNZ_PARAMERROR;
602  s=(unz_s*)file;
603  if (ZSEEK(s->z_filefunc, s->filestream,
606  err=UNZ_ERRNO;
607 
608 
609  /* we check the magic */
610  if (err==UNZ_OK)
611  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
612  err=UNZ_ERRNO;
613  else if (uMagic!=0x02014b50)
614  err=UNZ_BADZIPFILE;
615 
616  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK)
617  err=UNZ_ERRNO;
618 
619  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK)
620  err=UNZ_ERRNO;
621 
622  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK)
623  err=UNZ_ERRNO;
624 
626  err=UNZ_ERRNO;
627 
628  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK)
629  err=UNZ_ERRNO;
630 
631  unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date);
632 
633  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK)
634  err=UNZ_ERRNO;
635 
636  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
637  err=UNZ_ERRNO;
638 
640  err=UNZ_ERRNO;
641 
642  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK)
643  err=UNZ_ERRNO;
644 
645  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK)
646  err=UNZ_ERRNO;
647 
649  err=UNZ_ERRNO;
650 
651  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK)
652  err=UNZ_ERRNO;
653 
654  if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK)
655  err=UNZ_ERRNO;
656 
657  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK)
658  err=UNZ_ERRNO;
659 
660  if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
661  err=UNZ_ERRNO;
662 
663  lSeek+=file_info.size_filename;
664  if ((err==UNZ_OK) && (szFileName!=NULL))
665  {
666  uLong uSizeRead ;
667  if (file_info.size_filename<fileNameBufferSize)
668  {
669  *(szFileName+file_info.size_filename)='\0';
670  uSizeRead = file_info.size_filename;
671  }
672  else
673  uSizeRead = fileNameBufferSize;
674 
675  if ((file_info.size_filename>0) && (fileNameBufferSize>0))
676  if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead)
677  err=UNZ_ERRNO;
678  lSeek -= uSizeRead;
679  }
680 
681 
682  if ((err==UNZ_OK) && (extraField!=NULL))
683  {
684  uLong uSizeRead ;
685  if (file_info.size_file_extra<extraFieldBufferSize)
686  uSizeRead = file_info.size_file_extra;
687  else
688  uSizeRead = extraFieldBufferSize;
689 
690  if (lSeek!=0)
691  if (ZSEEK(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
692  lSeek=0;
693  else
694  err=UNZ_ERRNO;
695  if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0))
696  if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead)
697  err=UNZ_ERRNO;
698  lSeek += file_info.size_file_extra - uSizeRead;
699  }
700  else
701  lSeek+=file_info.size_file_extra;
702 
703 
704  if ((err==UNZ_OK) && (szComment!=NULL))
705  {
706  uLong uSizeRead ;
707  if (file_info.size_file_comment<commentBufferSize)
708  {
709  *(szComment+file_info.size_file_comment)='\0';
710  uSizeRead = file_info.size_file_comment;
711  }
712  else
713  uSizeRead = commentBufferSize;
714 
715  if (lSeek!=0)
716  if (ZSEEK(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
717  lSeek=0;
718  else
719  err=UNZ_ERRNO;
720  if ((file_info.size_file_comment>0) && (commentBufferSize>0))
721  if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead)
722  err=UNZ_ERRNO;
723  lSeek+=file_info.size_file_comment - uSizeRead;
724  }
725  else
726  lSeek+=file_info.size_file_comment;
727 
728  if ((err==UNZ_OK) && (pfile_info!=NULL))
729  *pfile_info=file_info;
730 
731  if ((err==UNZ_OK) && (pfile_info_internal!=NULL))
732  *pfile_info_internal=file_info_internal;
733 
734  return err;
735 }
uLong version
Definition: unzip.h:103
uLong compressed_size
Definition: unzip.h:109
uLong size_file_extra
Definition: unzip.h:112
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
uLong crc
Definition: unzip.h:108
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_BADZIPFILE
Definition: unzip.h:75
#define UNZ_ERRNO
Definition: unzip.h:72
uLong version_needed
Definition: unzip.h:104
uLong disk_num_start
Definition: unzip.h:115
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
uLong uncompressed_size
Definition: unzip.h:110
local int unzlocal_getShort(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:201
#define UNZ_PARAMERROR
Definition: unzip.h:74
uLong compression_method
Definition: unzip.h:106
uLong size_filename
Definition: unzip.h:111
#define ZLIB_FILEFUNC_SEEK_CUR
Definition: ioapi.h:13
uLong size_file_comment
Definition: unzip.h:113
uLong external_fa
Definition: unzip.h:117
tm_unz tmu_date
Definition: unzip.h:119
local int unzlocal_getLong(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:229
uLong byte_before_the_zipfile
Definition: unzip.c:133
local void unzlocal_DosDateToTmuDate(uLong ulDosDate, tm_unz *ptm)
Definition: unzip.c:548
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
uLong dosDate
Definition: unzip.h:107
uLong internal_fa
Definition: unzip.h:116
uLong flag
Definition: unzip.h:105
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzlocal_getLong()

local int unzlocal_getLong ( zlib_filefunc_def pzlib_filefunc_def,
voidpf  filestream,
uLong pX 
) const

Definition at line 229 of file unzip.c.

233 {
234  uLong x ;
235  int i;
236  int err;
237 
238  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
239  x = (uLong)i;
240 
241  if (err==UNZ_OK)
242  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
243  x += ((uLong)i)<<8;
244 
245  if (err==UNZ_OK)
246  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
247  x += ((uLong)i)<<16;
248 
249  if (err==UNZ_OK)
250  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
251  x += ((uLong)i)<<24;
252 
253  if (err==UNZ_OK)
254  *pX = x;
255  else
256  *pX = 0;
257  return err;
258 }
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_OK
Definition: unzip.h:70
local int unzlocal_getByte(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, int *pi) const
Definition: unzip.c:171

◆ unzlocal_getShort()

local int unzlocal_getShort ( zlib_filefunc_def pzlib_filefunc_def,
voidpf  filestream,
uLong pX 
) const

Definition at line 201 of file unzip.c.

205 {
206  uLong x ;
207  int i;
208  int err;
209 
210  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
211  x = (uLong)i;
212 
213  if (err==UNZ_OK)
214  err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
215  x += ((uLong)i)<<8;
216 
217  if (err==UNZ_OK)
218  *pX = x;
219  else
220  *pX = 0;
221  return err;
222 }
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_OK
Definition: unzip.h:70
local int unzlocal_getByte(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, int *pi) const
Definition: unzip.c:171

◆ unzlocal_SearchCentralDir()

local uLong unzlocal_SearchCentralDir ( zlib_filefunc_def pzlib_filefunc_def,
voidpf  filestream 
) const

Definition at line 331 of file unzip.c.

334 {
335  unsigned char* buf;
336  uLong uSizeFile;
337  uLong uBackRead;
338  uLong uMaxBack=0xffff; /* maximum size of global comment */
339  uLong uPosFound=0;
340 
341  if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
342  return 0;
343 
344 
345  uSizeFile = ZTELL(*pzlib_filefunc_def,filestream);
346 
347  if (uMaxBack>uSizeFile)
348  uMaxBack = uSizeFile;
349 
350  buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
351  if (buf==NULL)
352  return 0;
353 
354  uBackRead = 4;
355  while (uBackRead<uMaxBack)
356  {
357  uLong uReadSize,uReadPos ;
358  int i;
359  if (uBackRead+BUFREADCOMMENT>uMaxBack)
360  uBackRead = uMaxBack;
361  else
362  uBackRead+=BUFREADCOMMENT;
363  uReadPos = uSizeFile-uBackRead ;
364 
365  uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ?
366  (BUFREADCOMMENT+4) : (uSizeFile-uReadPos);
367  if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0)
368  break;
369 
370  if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize)
371  break;
372 
373  for (i=(int)uReadSize-3; (i--)>0;)
374  if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
375  ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
376  {
377  uPosFound = uReadPos+i;
378  break;
379  }
380 
381  if (uPosFound!=0)
382  break;
383  }
384  TRYFREE(buf);
385  return uPosFound;
386 }
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define ZTELL(filefunc, filestream)
Definition: ioapi.h:64
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
#define ALLOC(size)
Definition: unzip.c:78
#define BUFREADCOMMENT
Definition: unzip.c:320
#define ZLIB_FILEFUNC_SEEK_END
Definition: ioapi.h:14
#define TRYFREE(p)
Definition: unzip.c:81
voidpf void * buf
Definition: ioapi.h:39
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzLocateFile()

int ZEXPORT unzLocateFile ( unzFile  file,
const char *  szFileName,
int  iCaseSensitivity 
)

Definition at line 824 of file unzip.c.

828 {
829  unz_s* s;
830  int err;
831 
832  /* We remember the 'current' position in the file so that we can jump
833  * back there if we fail.
834  */
835  unz_file_info cur_file_infoSaved;
836  unz_file_info_internal cur_file_info_internalSaved;
837  uLong num_fileSaved;
838  uLong pos_in_central_dirSaved;
839 
840 
841  if (file==NULL)
842  return UNZ_PARAMERROR;
843 
844  if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP)
845  return UNZ_PARAMERROR;
846 
847  s=(unz_s*)file;
848  if (!s->current_file_ok)
850 
851  /* Save the current state */
852  num_fileSaved = s->num_file;
853  pos_in_central_dirSaved = s->pos_in_central_dir;
854  cur_file_infoSaved = s->cur_file_info;
855  cur_file_info_internalSaved = s->cur_file_info_internal;
856 
857  err = unzGoToFirstFile(file);
858 
859  while (err == UNZ_OK)
860  {
861  char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1];
862  err = unzGetCurrentFileInfo(file,NULL,
863  szCurrentFileName,sizeof(szCurrentFileName)-1,
864  NULL,0,NULL,0);
865  if (err == UNZ_OK)
866  {
867  if (unzStringFileNameCompare(szCurrentFileName,
868  szFileName,iCaseSensitivity)==0)
869  return UNZ_OK;
870  err = unzGoToNextFile(file);
871  }
872  }
873 
874  /* We failed, so restore the state of the 'current file' to where we
875  * were.
876  */
877  s->num_file = num_fileSaved ;
878  s->pos_in_central_dir = pos_in_central_dirSaved ;
879  s->cur_file_info = cur_file_infoSaved;
880  s->cur_file_info_internal = cur_file_info_internalSaved;
881  return err;
882 }
uLong num_file
Definition: unzip.c:134
#define UNZ_MAXFILENAMEINZIP
Definition: unzip.c:74
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
int ZEXPORT unzGoToNextFile(unzFile file)
Definition: unzip.c:790
#define UNZ_OK
Definition: unzip.h:70
int ZEXPORT unzGoToFirstFile(unzFile file)
Definition: unzip.c:768
#define UNZ_END_OF_LIST_OF_FILE
Definition: unzip.h:71
int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:744
int ZEXPORT unzStringFileNameCompare(char *fileName1, const char *fileName2, int iCaseSensitivity) const
Definition: unzip.c:305
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_file_info cur_file_info
Definition: unzip.c:143
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzOpen()

unzFile ZEXPORT unzOpen ( char *  path) const

Definition at line 500 of file unzip.c.

502 {
503  return unzOpen2(path, NULL);
504 }
unzFile ZEXPORT unzOpen2(char *path, zlib_filefunc_def *pzlib_filefunc_def) const
Definition: unzip.c:397

◆ unzOpen2()

unzFile ZEXPORT unzOpen2 ( char *  path,
zlib_filefunc_def pzlib_filefunc_def 
) const

Definition at line 397 of file unzip.c.

400 {
401  unz_s us;
402  unz_s *s;
403  uLong central_pos,uL;
404 
405  uLong number_disk; /* number of the current dist, used for
406  spaning ZIP, unsupported, always 0*/
407  uLong number_disk_with_CD; /* number the the disk with central dir, used
408  for spaning ZIP, unsupported, always 0*/
409  uLong number_entry_CD; /* total number of entries in
410  the central dir
411  (same than number_entry on nospan) */
412 
413  int err=UNZ_OK;
414 
415  if (unz_copyright[0]!=' ')
416  return NULL;
417 
418  if (pzlib_filefunc_def==NULL)
420  else
421  us.z_filefunc = *pzlib_filefunc_def;
422 
424  path,
427  if (us.filestream==NULL)
428  return NULL;
429 
430  central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream);
431  if (central_pos==0)
432  err=UNZ_ERRNO;
433 
434  if (ZSEEK(us.z_filefunc, us.filestream,
435  central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0)
436  err=UNZ_ERRNO;
437 
438  /* the signature, already checked */
439  if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK)
440  err=UNZ_ERRNO;
441 
442  /* number of this disk */
443  if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK)
444  err=UNZ_ERRNO;
445 
446  /* number of the disk with the start of the central directory */
447  if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK)
448  err=UNZ_ERRNO;
449 
450  /* total number of entries in the central dir on this disk */
452  err=UNZ_ERRNO;
453 
454  /* total number of entries in the central dir */
455  if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK)
456  err=UNZ_ERRNO;
457 
458  if ((number_entry_CD!=us.gi.number_entry) ||
459  (number_disk_with_CD!=0) ||
460  (number_disk!=0))
461  err=UNZ_BADZIPFILE;
462 
463  /* size of the central directory */
465  err=UNZ_ERRNO;
466 
467  /* offset of start of central directory with respect to the
468  starting disk number */
470  err=UNZ_ERRNO;
471 
472  /* zipfile comment length */
474  err=UNZ_ERRNO;
475 
476  if ((central_pos<us.offset_central_dir+us.size_central_dir) &&
477  (err==UNZ_OK))
478  err=UNZ_BADZIPFILE;
479 
480  if (err!=UNZ_OK)
481  {
482  ZCLOSE(us.z_filefunc, us.filestream);
483  return NULL;
484  }
485 
486  us.byte_before_the_zipfile = central_pos -
488  us.central_pos = central_pos;
489  us.pfile_in_zip_read = NULL;
490  us.encrypted = 0;
491 
492 
493  s=(unz_s*)ALLOC(sizeof(unz_s));
494  *s=us;
496  return (unzFile)s;
497 }
voidpf opaque
Definition: ioapi.h:55
uLong central_pos
Definition: unzip.c:137
#define ZCLOSE(filefunc, filestream)
Definition: ioapi.h:66
local uLong unzlocal_SearchCentralDir(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream) const
Definition: unzip.c:331
uLong number_entry
Definition: unzip.h:94
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_BADZIPFILE
Definition: unzip.h:75
#define UNZ_ERRNO
Definition: unzip.h:72
voidp unzFile
Definition: unzip.h:66
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
int ZEXPORT unzGoToFirstFile(unzFile file)
Definition: unzip.c:768
#define ALLOC(size)
Definition: unzip.c:78
void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
Definition: ioapi.c:166
local int unzlocal_getShort(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:201
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
open_file_func zopen_file
Definition: ioapi.h:48
int encrypted
Definition: unzip.c:147
unz_global_info gi
Definition: unzip.c:132
const char unz_copyright[]
Definition: unzip.c:90
uLong size_central_dir
Definition: unzip.c:139
uLong offset_central_dir
Definition: unzip.c:140
local int unzlocal_getLong(zlib_filefunc_def *pzlib_filefunc_def, voidpf filestream, uLong *pX) const
Definition: unzip.c:229
uLong byte_before_the_zipfile
Definition: unzip.c:133
#define ZLIB_FILEFUNC_MODE_EXISTING
Definition: ioapi.h:21
Definition: unzip.c:128
#define ZLIB_FILEFUNC_MODE_READ
Definition: ioapi.h:17
uLong size_comment
Definition: unzip.h:96
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzOpenCurrentFile()

int ZEXPORT unzOpenCurrentFile ( unzFile  file)

Definition at line 1192 of file unzip.c.

1194 {
1195  return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
1196 }
int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password)
Definition: unzip.c:1047

◆ unzOpenCurrentFile2()

int ZEXPORT unzOpenCurrentFile2 ( unzFile  file,
int method,
int level,
int  raw 
)

Definition at line 1205 of file unzip.c.

1210 {
1211  return unzOpenCurrentFile3(file, method, level, raw, NULL);
1212 }
int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password)
Definition: unzip.c:1047

◆ unzOpenCurrentFile3()

int ZEXPORT unzOpenCurrentFile3 ( unzFile  file,
int method,
int level,
int  raw,
const char*  password 
)

Definition at line 1047 of file unzip.c.

1053 {
1054  int err=UNZ_OK;
1055  uInt iSizeVar;
1056  unz_s* s;
1057  file_in_zip_read_info_s* pfile_in_zip_read_info;
1058  uLong offset_local_extrafield; /* offset of the local extra field */
1059  uInt size_local_extrafield; /* size of the local extra field */
1060 # ifndef NOUNCRYPT
1061  char source[12];
1062 # else
1063  if (password != NULL)
1064  return UNZ_PARAMERROR;
1065 # endif
1066 
1067  if (file==NULL)
1068  return UNZ_PARAMERROR;
1069  s=(unz_s*)file;
1070  if (!s->current_file_ok)
1071  return UNZ_PARAMERROR;
1072 
1073  if (s->pfile_in_zip_read != NULL)
1074  unzCloseCurrentFile(file);
1075 
1077  &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
1078  return UNZ_BADZIPFILE;
1079 
1080  pfile_in_zip_read_info = (file_in_zip_read_info_s*)
1081  ALLOC(sizeof(file_in_zip_read_info_s));
1082  if (pfile_in_zip_read_info==NULL)
1083  return UNZ_INTERNALERROR;
1084 
1085  pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE);
1086  pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield;
1087  pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield;
1088  pfile_in_zip_read_info->pos_local_extrafield=0;
1089  pfile_in_zip_read_info->raw=raw;
1090 
1091  if (pfile_in_zip_read_info->read_buffer==NULL)
1092  {
1093  TRYFREE(pfile_in_zip_read_info);
1094  return UNZ_INTERNALERROR;
1095  }
1096 
1097  pfile_in_zip_read_info->stream_initialised=0;
1098 
1099  if (method!=NULL)
1100  *method = (int)s->cur_file_info.compression_method;
1101 
1102  if (level!=NULL)
1103  {
1104  *level = 6;
1105  switch (s->cur_file_info.flag & 0x06)
1106  {
1107  case 6 : *level = 1; break;
1108  case 4 : *level = 2; break;
1109  case 2 : *level = 9; break;
1110  }
1111  }
1112 
1113  if ((s->cur_file_info.compression_method!=0) &&
1114  (s->cur_file_info.compression_method!=Z_DEFLATED))
1115  err=UNZ_BADZIPFILE;
1116 
1117  pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
1118  pfile_in_zip_read_info->crc32=0;
1119  pfile_in_zip_read_info->compression_method =
1121  pfile_in_zip_read_info->filestream=s->filestream;
1122  pfile_in_zip_read_info->z_filefunc=s->z_filefunc;
1123  pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile;
1124 
1125  pfile_in_zip_read_info->stream.total_out = 0;
1126 
1127  if ((s->cur_file_info.compression_method==Z_DEFLATED) &&
1128  (!raw))
1129  {
1130  pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
1131  pfile_in_zip_read_info->stream.zfree = (free_func)0;
1132  pfile_in_zip_read_info->stream.opaque = (voidpf)0;
1133  pfile_in_zip_read_info->stream.next_in = (voidpf)0;
1134  pfile_in_zip_read_info->stream.avail_in = 0;
1135 
1136  err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
1137  if (err == Z_OK)
1138  pfile_in_zip_read_info->stream_initialised=1;
1139  else
1140  {
1141  TRYFREE(pfile_in_zip_read_info);
1142  return err;
1143  }
1144  /* windowBits is passed < 0 to tell that there is no zlib header.
1145  * Note that in this case inflate *requires* an extra "dummy" byte
1146  * after the compressed stream in order to complete decompression and
1147  * return Z_STREAM_END.
1148  * In unzip, i don't wait absolutely Z_STREAM_END because I known the
1149  * size of both compressed and uncompressed data
1150  */
1151  }
1152  pfile_in_zip_read_info->rest_read_compressed =
1154  pfile_in_zip_read_info->rest_read_uncompressed =
1156 
1157 
1158  pfile_in_zip_read_info->pos_in_zipfile =
1160  iSizeVar;
1161 
1162  pfile_in_zip_read_info->stream.avail_in = (uInt)0;
1163 
1164  s->pfile_in_zip_read = pfile_in_zip_read_info;
1165 
1166 # ifndef NOUNCRYPT
1167  if (password != NULL)
1168  {
1169  int i;
1170  s->pcrc_32_tab = get_crc_table();
1171  init_keys(password,s->keys,s->pcrc_32_tab);
1172  if (ZSEEK(s->z_filefunc, s->filestream,
1175  SEEK_SET)!=0)
1176  return UNZ_INTERNALERROR;
1177  if(ZREAD(s->z_filefunc, s->filestream,source, 12)<12)
1178  return UNZ_INTERNALERROR;
1179 
1180  for (i = 0; i<12; i++)
1181  zdecode(s->keys,s->pcrc_32_tab,source[i]);
1182 
1184  s->encrypted=1;
1185  }
1186 # endif
1187 
1188 
1189  return UNZ_OK;
1190 }
zlib_filefunc_def z_filefunc
Definition: unzip.c:118
#define UNZ_INTERNALERROR
Definition: unzip.h:76
uLong compressed_size
Definition: unzip.h:109
uLong rest_read_compressed
Definition: unzip.c:116
zlib_filefunc_def z_filefunc
Definition: unzip.c:130
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
uLong crc
Definition: unzip.h:108
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
#define UNZ_BADZIPFILE
Definition: unzip.h:75
uInt size_local_extrafield
Definition: unzip.c:111
#define SIZEZIPLOCALHEADER
Definition: unzip.c:85
uLong byte_before_the_zipfile
Definition: unzip.c:121
uLong rest_read_uncompressed
Definition: unzip.c:117
#define SEEK_SET
Definition: ioapi.c:29
voidpf filestream
Definition: unzip.c:131
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_BUFSIZE
Definition: unzip.c:70
uLong pos_local_extrafield
Definition: unzip.c:112
#define ALLOC(size)
Definition: unzip.c:78
uLong uncompressed_size
Definition: unzip.h:110
local int unzlocal_CheckCurrentFileCoherencyHeader(unz_s *s, uInt *piSizeVar, uLong *poffset_local_extrafield, uInt *psize_local_extrafield)
Definition: unzip.c:957
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
uLong compression_method
Definition: unzip.h:106
#define TRYFREE(p)
Definition: unzip.c:81
unz_file_info cur_file_info
Definition: unzip.c:143
int encrypted
Definition: unzip.c:147
int ZEXPORT unzCloseCurrentFile(unzFile file)
Definition: unzip.c:1489
unsigned long keys[3]
Definition: unzip.c:149
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
uLong stream_initialised
Definition: unzip.c:108
uLong byte_before_the_zipfile
Definition: unzip.c:133
Definition: unzip.c:128
#define zdecode(pkeys, pcrc_32_tab, c)
Definition: crypt.h:76
const unsigned long * pcrc_32_tab
Definition: unzip.c:150
uLong offset_local_extrafield
Definition: unzip.c:110
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
uLong current_file_ok
Definition: unzip.c:136
typedef voidpf(ZCALLBACK *open_file_func) OF((voidpf opaque
uLong compression_method
Definition: unzip.c:120
uLong flag
Definition: unzip.h:105
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzOpenCurrentFilePassword()

int ZEXPORT unzOpenCurrentFilePassword ( unzFile  file,
const char*  password 
)

Definition at line 1198 of file unzip.c.

1201 {
1202  return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
1203 }
int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password)
Definition: unzip.c:1047

◆ unzReadCurrentFile()

int ZEXPORT unzReadCurrentFile ( unzFile  file,
voidp  buf,
unsigned  len 
)

Definition at line 1224 of file unzip.c.

1228 {
1229  int err=UNZ_OK;
1230  uInt iRead = 0;
1231  unz_s* s;
1232  file_in_zip_read_info_s* pfile_in_zip_read_info;
1233  if (file==NULL)
1234  return UNZ_PARAMERROR;
1235  s=(unz_s*)file;
1236  pfile_in_zip_read_info=s->pfile_in_zip_read;
1237 
1238  if (pfile_in_zip_read_info==NULL)
1239  return UNZ_PARAMERROR;
1240 
1241 
1242  if ((pfile_in_zip_read_info->read_buffer == NULL))
1243  return UNZ_END_OF_LIST_OF_FILE;
1244  if (len==0)
1245  return 0;
1246 
1247  pfile_in_zip_read_info->stream.next_out = (Bytef*)buf;
1248 
1249  pfile_in_zip_read_info->stream.avail_out = (uInt)len;
1250 
1251  if ((len>pfile_in_zip_read_info->rest_read_uncompressed) &&
1252  (!(pfile_in_zip_read_info->raw)))
1253  pfile_in_zip_read_info->stream.avail_out =
1254  (uInt)pfile_in_zip_read_info->rest_read_uncompressed;
1255 
1256  if ((len>pfile_in_zip_read_info->rest_read_compressed+
1257  pfile_in_zip_read_info->stream.avail_in) &&
1258  (pfile_in_zip_read_info->raw))
1259  pfile_in_zip_read_info->stream.avail_out =
1260  (uInt)pfile_in_zip_read_info->rest_read_compressed+
1261  pfile_in_zip_read_info->stream.avail_in;
1262 
1263  while (pfile_in_zip_read_info->stream.avail_out>0)
1264  {
1265  if ((pfile_in_zip_read_info->stream.avail_in==0) &&
1266  (pfile_in_zip_read_info->rest_read_compressed>0))
1267  {
1268  uInt uReadThis = UNZ_BUFSIZE;
1269  if (pfile_in_zip_read_info->rest_read_compressed<uReadThis)
1270  uReadThis = (uInt)pfile_in_zip_read_info->rest_read_compressed;
1271  if (uReadThis == 0)
1272  return UNZ_EOF;
1273  if (ZSEEK(pfile_in_zip_read_info->z_filefunc,
1274  pfile_in_zip_read_info->filestream,
1275  pfile_in_zip_read_info->pos_in_zipfile +
1276  pfile_in_zip_read_info->byte_before_the_zipfile,
1278  return UNZ_ERRNO;
1279  if (ZREAD(pfile_in_zip_read_info->z_filefunc,
1280  pfile_in_zip_read_info->filestream,
1281  pfile_in_zip_read_info->read_buffer,
1282  uReadThis)!=uReadThis)
1283  return UNZ_ERRNO;
1284 
1285 
1286 # ifndef NOUNCRYPT
1287  if(s->encrypted)
1288  {
1289  uInt i;
1290  for(i=0;i<uReadThis;i++)
1291  pfile_in_zip_read_info->read_buffer[i] =
1292  zdecode(s->keys,s->pcrc_32_tab,
1293  pfile_in_zip_read_info->read_buffer[i]);
1294  }
1295 # endif
1296 
1297 
1298  pfile_in_zip_read_info->pos_in_zipfile += uReadThis;
1299 
1300  pfile_in_zip_read_info->rest_read_compressed-=uReadThis;
1301 
1302  pfile_in_zip_read_info->stream.next_in =
1303  (Bytef*)pfile_in_zip_read_info->read_buffer;
1304  pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis;
1305  }
1306 
1307  if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw))
1308  {
1309  uInt uDoCopy,i ;
1310 
1311  if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
1312  (pfile_in_zip_read_info->rest_read_compressed == 0))
1313  return (iRead==0) ? UNZ_EOF : iRead;
1314 
1315  if (pfile_in_zip_read_info->stream.avail_out <
1316  pfile_in_zip_read_info->stream.avail_in)
1317  uDoCopy = pfile_in_zip_read_info->stream.avail_out ;
1318  else
1319  uDoCopy = pfile_in_zip_read_info->stream.avail_in ;
1320 
1321  for (i=0;i<uDoCopy;i++)
1322  *(pfile_in_zip_read_info->stream.next_out+i) =
1323  *(pfile_in_zip_read_info->stream.next_in+i);
1324 
1325  pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,
1326  pfile_in_zip_read_info->stream.next_out,
1327  uDoCopy);
1328  pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy;
1329  pfile_in_zip_read_info->stream.avail_in -= uDoCopy;
1330  pfile_in_zip_read_info->stream.avail_out -= uDoCopy;
1331  pfile_in_zip_read_info->stream.next_out += uDoCopy;
1332  pfile_in_zip_read_info->stream.next_in += uDoCopy;
1333  pfile_in_zip_read_info->stream.total_out += uDoCopy;
1334  iRead += uDoCopy;
1335  }
1336  else
1337  {
1338  uLong uTotalOutBefore,uTotalOutAfter;
1339  const Bytef *bufBefore;
1340  uLong uOutThis;
1341  int flush=Z_SYNC_FLUSH;
1342 
1343  uTotalOutBefore = pfile_in_zip_read_info->stream.total_out;
1344  bufBefore = pfile_in_zip_read_info->stream.next_out;
1345 
1346  /*
1347  if ((pfile_in_zip_read_info->rest_read_uncompressed ==
1348  pfile_in_zip_read_info->stream.avail_out) &&
1349  (pfile_in_zip_read_info->rest_read_compressed == 0))
1350  flush = Z_FINISH;
1351  */
1352  err=inflate(&pfile_in_zip_read_info->stream,flush);
1353 
1354  if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL))
1355  err = Z_DATA_ERROR;
1356 
1357  uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
1358  uOutThis = uTotalOutAfter-uTotalOutBefore;
1359 
1360  pfile_in_zip_read_info->crc32 =
1361  crc32(pfile_in_zip_read_info->crc32,bufBefore,
1362  (uInt)(uOutThis));
1363 
1364  pfile_in_zip_read_info->rest_read_uncompressed -=
1365  uOutThis;
1366 
1367  iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
1368 
1369  if (err==Z_STREAM_END)
1370  return (iRead==0) ? UNZ_EOF : iRead;
1371  if (err!=Z_OK)
1372  break;
1373  }
1374  }
1375 
1376  if (err==Z_OK)
1377  return iRead;
1378  return err;
1379 }
zlib_filefunc_def z_filefunc
Definition: unzip.c:118
uLong rest_read_compressed
Definition: unzip.c:116
#define UNZ_EOF
Definition: unzip.h:73
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
uLong byte_before_the_zipfile
Definition: unzip.c:121
#define UNZ_ERRNO
Definition: unzip.h:72
uLong rest_read_uncompressed
Definition: unzip.c:117
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_BUFSIZE
Definition: unzip.c:70
#define UNZ_END_OF_LIST_OF_FILE
Definition: unzip.h:71
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
int encrypted
Definition: unzip.c:147
unsigned long keys[3]
Definition: unzip.c:149
voidpf void * buf
Definition: ioapi.h:39
Definition: unzip.c:128
#define zdecode(pkeys, pcrc_32_tab, c)
Definition: crypt.h:76
const unsigned long * pcrc_32_tab
Definition: unzip.c:150
#define ZREAD(filefunc, filestream, buf, size)
Definition: ioapi.h:62
uLong compression_method
Definition: unzip.c:120
#define ZSEEK(filefunc, filestream, pos, mode)
Definition: ioapi.h:65

◆ unzSetOffset()

int ZEXPORT unzSetOffset ( unzFile  file,
uLong  pos 
)

Definition at line 1580 of file unzip.c.

1583 {
1584  unz_s* s;
1585  int err;
1586 
1587  if (file==NULL)
1588  return UNZ_PARAMERROR;
1589  s=(unz_s*)file;
1590 
1591  s->pos_in_central_dir = pos;
1592  s->num_file = s->gi.number_entry; /* hack */
1595  NULL,0,NULL,0,NULL,0);
1596  s->current_file_ok = (err == UNZ_OK);
1597  return err;
1598 }
uLong num_file
Definition: unzip.c:134
uLong number_entry
Definition: unzip.h:94
unz_file_info_internal cur_file_info_internal
Definition: unzip.c:144
#define UNZ_OK
Definition: unzip.h:70
#define UNZ_PARAMERROR
Definition: unzip.h:74
unz_file_info cur_file_info
Definition: unzip.c:143
unz_global_info gi
Definition: unzip.c:132
local int unzlocal_GetCurrentFileInfoInternal(unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:577
Definition: unzip.c:128
uLong pos_in_central_dir
Definition: unzip.c:135
uLong current_file_ok
Definition: unzip.c:136

◆ unzStringFileNameCompare()

int ZEXPORT unzStringFileNameCompare ( char*  fileName1,
const char*  fileName2,
int  iCaseSensitivity 
) const

Definition at line 305 of file unzip.c.

309 {
310  if (iCaseSensitivity==0)
311  iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
312 
313  if (iCaseSensitivity==1)
314  return strcmp(fileName1,fileName2);
315 
316  return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2);
317 }
#define STRCMPCASENOSENTIVEFUNCTION
Definition: unzip.c:293
#define CASESENSITIVITYDEFAULTVALUE
Definition: unzip.c:287

◆ unztell()

z_off_t ZEXPORT unztell ( unzFile  file)

Definition at line 1385 of file unzip.c.

1387 {
1388  unz_s* s;
1389  file_in_zip_read_info_s* pfile_in_zip_read_info;
1390  if (file==NULL)
1391  return UNZ_PARAMERROR;
1392  s=(unz_s*)file;
1393  pfile_in_zip_read_info=s->pfile_in_zip_read;
1394 
1395  if (pfile_in_zip_read_info==NULL)
1396  return UNZ_PARAMERROR;
1397 
1398  return (z_off_t)pfile_in_zip_read_info->stream.total_out;
1399 }
#define UNZ_PARAMERROR
Definition: unzip.h:74
file_in_zip_read_info_s * pfile_in_zip_read
Definition: unzip.c:145
Definition: unzip.c:128

Variable Documentation

◆ unz_copyright

const char unz_copyright[]
Initial value:
=
" unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"

Definition at line 90 of file unzip.c.