1381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes/* ioapi.h -- IO base function header for compress/uncompress .zip 2381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) 39e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 4381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) 59e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 6381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes Modifications for Zip64 support 7381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) 89e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 9381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes For more info read MiniZip_info.txt 109e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 11381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes*/ 129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 13ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS))) 14381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes #define _CRT_SECURE_NO_WARNINGS 159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project#endif 169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 17ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#if defined(__APPLE__) || defined(IOAPI_NO_64) 18ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions 19ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FOPEN_FUNC(filename, mode) fopen(filename, mode) 20ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FTELLO_FUNC(stream) ftello(stream) 21ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) 22ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#else 23ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) 24ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FTELLO_FUNC(stream) ftello64(stream) 25ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) 26ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes#endif 27ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes 28ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes 29381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes#include "ioapi.h" 309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 31381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesvoidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) 32381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 33381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (pfilefunc->zfile_func64.zopen64_file != NULL) 34381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode); 35381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 36381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes { 37381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode); 38381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes } 39381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 409e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 41381716e9396b55b1adb8235b020c37344f60ab07Elliott Hugheslong call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) 42381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 43381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (pfilefunc->zfile_func64.zseek64_file != NULL) 44381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); 45381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 46381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes { 47381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes uLong offsetTruncated = (uLong)offset; 48381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (offsetTruncated != offset) 49381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return -1; 50381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 51381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); 52381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes } 53381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 549e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 55381716e9396b55b1adb8235b020c37344f60ab07Elliott HughesZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) 56381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 57381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (pfilefunc->zfile_func64.zseek64_file != NULL) 58381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); 59381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 60381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes { 61381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); 62ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes if ((tell_uLong) == MAXU32) 63381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return (ZPOS64_T)-1; 64381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 65381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return tell_uLong; 66381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes } 67381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 689e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 69381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesvoid fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32) 70381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 71381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zopen64_file = NULL; 72381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; 73381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; 74381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; 75381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; 76381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.ztell64_file = NULL; 77381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zseek64_file = NULL; 78381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; 79381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; 80381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; 81381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; 82381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; 83381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 849e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 859e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 869e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 87381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode)); 88381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); 89381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); 90381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); 91381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); 92381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); 93381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream)); 949e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 95381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode) 96381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 97381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes FILE* file = NULL; 98381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes const char* mode_fopen = NULL; 99381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) 100381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes mode_fopen = "rb"; 101381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 102381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (mode & ZLIB_FILEFUNC_MODE_EXISTING) 103381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes mode_fopen = "r+b"; 104381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes else 105381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (mode & ZLIB_FILEFUNC_MODE_CREATE) 106381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes mode_fopen = "wb"; 1079e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 108381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if ((filename!=NULL) && (mode_fopen != NULL)) 109381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes file = fopen(filename, mode_fopen); 110381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return file; 111381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 1129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 113381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode) 1149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 1159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project FILE* file = NULL; 1169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project const char* mode_fopen = NULL; 1179e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) 1189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project mode_fopen = "rb"; 1199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project else 1209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project if (mode & ZLIB_FILEFUNC_MODE_EXISTING) 1219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project mode_fopen = "r+b"; 1229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project else 1239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project if (mode & ZLIB_FILEFUNC_MODE_CREATE) 1249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project mode_fopen = "wb"; 1259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 1269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project if ((filename!=NULL) && (mode_fopen != NULL)) 127ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes file = FOPEN_FUNC((const char*)filename, mode_fopen); 1289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return file; 1299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 1309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 1319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 132381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) 1339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 1349e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project uLong ret; 1359e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); 1369e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 1379e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 1389e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 139381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) 1409e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 1419e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project uLong ret; 1429e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); 1439e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 1449e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 1459e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 146381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) 1479e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 1489e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project long ret; 1499e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = ftell((FILE *)stream); 1509e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 1519e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 1529e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 153381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 154381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) 155381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 156381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes ZPOS64_T ret; 157ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes ret = FTELLO_FUNC((FILE *)stream); 158381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return ret; 159381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 160381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 161381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin) 1629e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 1639e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project int fseek_origin=0; 1649e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project long ret; 1659e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project switch (origin) 1669e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project { 1679e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project case ZLIB_FILEFUNC_SEEK_CUR : 1689e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project fseek_origin = SEEK_CUR; 1699e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project break; 1709e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project case ZLIB_FILEFUNC_SEEK_END : 1719e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project fseek_origin = SEEK_END; 1729e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project break; 1739e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project case ZLIB_FILEFUNC_SEEK_SET : 1749e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project fseek_origin = SEEK_SET; 1759e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project break; 1769e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project default: return -1; 1779e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project } 1789e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = 0; 179381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes if (fseek((FILE *)stream, offset, fseek_origin) != 0) 180381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes ret = -1; 1819e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 1829e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 1839e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 184381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) 185381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 186381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes int fseek_origin=0; 187381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes long ret; 188381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes switch (origin) 189381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes { 190381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes case ZLIB_FILEFUNC_SEEK_CUR : 191381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes fseek_origin = SEEK_CUR; 192381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes break; 193381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes case ZLIB_FILEFUNC_SEEK_END : 194381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes fseek_origin = SEEK_END; 195381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes break; 196381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes case ZLIB_FILEFUNC_SEEK_SET : 197381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes fseek_origin = SEEK_SET; 198381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes break; 199381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes default: return -1; 200381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes } 201381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes ret = 0; 202381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 203ee9e11d0d4e3361533860bf04896abb86a291bfbElliott Hughes if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0) 204381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes ret = -1; 205381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 206381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes return ret; 207381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 208381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 209381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 210381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream) 2119e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 2129e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project int ret; 2139e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = fclose((FILE *)stream); 2149e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 2159e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 2169e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 217381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesstatic int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream) 2189e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 2199e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project int ret; 2209e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project ret = ferror((FILE *)stream); 2219e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project return ret; 2229e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 2239e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project 2249e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Projectvoid fill_fopen_filefunc (pzlib_filefunc_def) 2259e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project zlib_filefunc_def* pzlib_filefunc_def; 2269e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project{ 2279e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zopen_file = fopen_file_func; 2289e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zread_file = fread_file_func; 2299e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zwrite_file = fwrite_file_func; 2309e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->ztell_file = ftell_file_func; 2319e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zseek_file = fseek_file_func; 2329e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zclose_file = fclose_file_func; 2339e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->zerror_file = ferror_file_func; 2349e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project pzlib_filefunc_def->opaque = NULL; 2359e38dfa2f95fce609707a0941f10af9a785288deThe Android Open Source Project} 236381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes 237381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughesvoid fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def) 238381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes{ 239381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zopen64_file = fopen64_file_func; 240381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zread_file = fread_file_func; 241381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zwrite_file = fwrite_file_func; 242381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->ztell64_file = ftell64_file_func; 243381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zseek64_file = fseek64_file_func; 244381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zclose_file = fclose_file_func; 245381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->zerror_file = ferror_file_func; 246381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes pzlib_filefunc_def->opaque = NULL; 247381716e9396b55b1adb8235b020c37344f60ab07Elliott Hughes} 248