LCOV - code coverage report
Current view: top level - Core/MiniZip - ioapi.c (source / functions) Hit Total Coverage
Test: coverxygen.info Lines: 0 22 0.0 %
Date: 2025-05-28 07:50:54 Functions: 0 0 -

          Line data    Source code
       1           0 : /* ioapi.h -- IO base function header for compress/uncompress .zip
       2             :    part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
       3             : 
       4             :          Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
       5             : 
       6             :          Modifications for Zip64 support
       7             :          Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
       8             : 
       9             :          For more info read MiniZip_info.txt
      10             : 
      11             : */
      12             : 
      13             : #if (defined(_WIN32))
      14             :         #define _CRT_SECURE_NO_WARNINGS
      15             : #endif
      16             : 
      17             : #if (defined(__APPLE__))
      18             :     // I/O is always 64-bit on Darwin
      19             :         #define fopen64 fopen
      20             :         #define ftello64 ftello
      21             :         #define fseeko64 fseeko
      22             : #endif
      23             : 
      24             : #include "ioapi.h"
      25             : 
      26           0 : voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
      27             : {
      28             :     if (pfilefunc->zfile_func64.zopen64_file != NULL)
      29             :         return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
      30             :     else
      31             :     {
      32             :         return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode);
      33             :     }
      34             : }
      35             : 
      36           0 : long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
      37             : {
      38             :     if (pfilefunc->zfile_func64.zseek64_file != NULL)
      39             :         return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
      40             :     else
      41             :     {
      42             :         uLong offsetTruncated = (uLong)offset;
      43             :         if (offsetTruncated != offset)
      44             :             return -1;
      45             :         else
      46             :             return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
      47             :     }
      48             : }
      49             : 
      50           0 : ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
      51             : {
      52             :     if (pfilefunc->zfile_func64.zseek64_file != NULL)
      53             :         return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
      54             :     else
      55             :     {
      56             :         uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
      57             :         if ((tell_uLong) == ((uLong)-1))
      58             :             return (ZPOS64_T)-1;
      59             :         else
      60             :             return tell_uLong;
      61             :     }
      62             : }
      63             : 
      64           0 : void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
      65             : {
      66             :     p_filefunc64_32->zfile_func64.zopen64_file = NULL;
      67             :     p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
      68             :     p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
      69             :     p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
      70             :     p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
      71             :     p_filefunc64_32->zfile_func64.ztell64_file = NULL;
      72             :     p_filefunc64_32->zfile_func64.zseek64_file = NULL;
      73             :     p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
      74             :     p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
      75             :     p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
      76             :     p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
      77             :     p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
      78             : }
      79             : 
      80             : 
      81             : 
      82           0 : static voidpf  ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
      83           0 : static uLong   ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
      84           0 : static uLong   ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
      85           0 : static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
      86           0 : static long    ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
      87             : static int     ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
      88             : static int     ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
      89             : 
      90           0 : static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
      91             : {
      92             :     FILE* file = NULL;
      93             :     const char* mode_fopen = NULL;
      94             :     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
      95             :         mode_fopen = "rb";
      96             :     else
      97             :     if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
      98             :         mode_fopen = "r+b";
      99             :     else
     100             :     if (mode & ZLIB_FILEFUNC_MODE_CREATE)
     101             :         mode_fopen = "wb";
     102             : 
     103             :     if ((filename!=NULL) && (mode_fopen != NULL))
     104             :         file = fopen(filename, mode_fopen);
     105             :     return file;
     106             : }
     107             : 
     108           0 : static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
     109             : {
     110             :     FILE* file = NULL;
     111             :     const char* mode_fopen = NULL;
     112             :     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
     113             :         mode_fopen = "rb";
     114             :     else
     115             :     if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
     116             :         mode_fopen = "r+b";
     117             :     else
     118             :     if (mode & ZLIB_FILEFUNC_MODE_CREATE)
     119             :         mode_fopen = "wb";
     120             : 
     121             :     if ((filename!=NULL) && (mode_fopen != NULL))
     122             :         file = fopen64((const char*)filename, mode_fopen);
     123             :     return file;
     124             : }
     125             : 
     126             : 
     127           0 : static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
     128             : {
     129             :     uLong ret;
     130             :     ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
     131             :     return ret;
     132             : }
     133             : 
     134           0 : static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
     135             : {
     136             :     uLong ret;
     137             :     ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
     138             :     return ret;
     139             : }
     140             : 
     141           0 : static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
     142             : {
     143             :     long ret;
     144             :     ret = ftell((FILE *)stream);
     145             :     return ret;
     146             : }
     147             : 
     148             : 
     149           0 : static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
     150             : {
     151             :     ZPOS64_T ret;
     152             :     ret = ftello64((FILE *)stream);
     153             :     return ret;
     154             : }
     155             : 
     156           0 : static long ZCALLBACK fseek_file_func (voidpf  opaque, voidpf stream, uLong offset, int origin)
     157             : {
     158             :     int fseek_origin=0;
     159             :     long ret;
     160             :     switch (origin)
     161             :     {
     162             :     case ZLIB_FILEFUNC_SEEK_CUR :
     163             :         fseek_origin = SEEK_CUR;
     164             :         break;
     165             :     case ZLIB_FILEFUNC_SEEK_END :
     166             :         fseek_origin = SEEK_END;
     167             :         break;
     168             :     case ZLIB_FILEFUNC_SEEK_SET :
     169             :         fseek_origin = SEEK_SET;
     170             :         break;
     171             :     default: return -1;
     172             :     }
     173             :     ret = 0;
     174             :     if (fseek((FILE *)stream, offset, fseek_origin) != 0)
     175             :         ret = -1;
     176             :     return ret;
     177             : }
     178             : 
     179           0 : static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T offset, int origin)
     180             : {
     181             :     int fseek_origin=0;
     182             :     long ret;
     183             :     switch (origin)
     184             :     {
     185             :     case ZLIB_FILEFUNC_SEEK_CUR :
     186             :         fseek_origin = SEEK_CUR;
     187             :         break;
     188             :     case ZLIB_FILEFUNC_SEEK_END :
     189             :         fseek_origin = SEEK_END;
     190             :         break;
     191             :     case ZLIB_FILEFUNC_SEEK_SET :
     192             :         fseek_origin = SEEK_SET;
     193             :         break;
     194             :     default: return -1;
     195             :     }
     196             :     ret = 0;
     197             : 
     198             :     if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
     199             :                         ret = -1;
     200             : 
     201             :     return ret;
     202             : }
     203             : 
     204             : 
     205           0 : static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
     206             : {
     207             :     int ret;
     208             :     ret = fclose((FILE *)stream);
     209             :     return ret;
     210             : }
     211             : 
     212           0 : static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
     213             : {
     214             :     int ret;
     215             :     ret = ferror((FILE *)stream);
     216             :     return ret;
     217             : }
     218             : 
     219           0 : void fill_fopen_filefunc (pzlib_filefunc_def)
     220             :   zlib_filefunc_def* pzlib_filefunc_def;
     221             : {
     222             :     pzlib_filefunc_def->zopen_file = fopen_file_func;
     223             :     pzlib_filefunc_def->zread_file = fread_file_func;
     224             :     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
     225             :     pzlib_filefunc_def->ztell_file = ftell_file_func;
     226             :     pzlib_filefunc_def->zseek_file = fseek_file_func;
     227             :     pzlib_filefunc_def->zclose_file = fclose_file_func;
     228             :     pzlib_filefunc_def->zerror_file = ferror_file_func;
     229             :     pzlib_filefunc_def->opaque = NULL;
     230             : }
     231             : 
     232           0 : void fill_fopen64_filefunc (zlib_filefunc64_def*  pzlib_filefunc_def)
     233             : {
     234             :     pzlib_filefunc_def->zopen64_file = fopen64_file_func;
     235             :     pzlib_filefunc_def->zread_file = fread_file_func;
     236             :     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
     237             :     pzlib_filefunc_def->ztell64_file = ftell64_file_func;
     238             :     pzlib_filefunc_def->zseek64_file = fseek64_file_func;
     239             :     pzlib_filefunc_def->zclose_file = fclose_file_func;
     240             :     pzlib_filefunc_def->zerror_file = ferror_file_func;
     241             :     pzlib_filefunc_def->opaque = NULL;
     242             : }

Generated by: LCOV version 1.14