MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / unzReadCurrentFile

Function unzReadCurrentFile

extlibs/minizip/src/unzip.c:1679–1878  ·  view source on GitHub ↗

Read bytes from the current file. buf contain buffer where data must be copied len the size of buf. return the number of byte copied if somes bytes are copied return 0 if the end of file was reached return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */

Source from the content-addressed store, hash-verified

1677 (UNZ_ERRNO for IO error, or zLib error for uncompress error)
1678*/
1679extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, unsigned len)
1680{
1681 int err = UNZ_OK;
1682 uInt iRead = 0;
1683 unz64_s* s;
1684 file_in_zip64_read_info_s* pfile_in_zip_read_info;
1685 if (file == NULL)
1686 return UNZ_PARAMERROR;
1687 s = (unz64_s*)file;
1688 pfile_in_zip_read_info = s->pfile_in_zip_read;
1689
1690 if (pfile_in_zip_read_info == NULL)
1691 return UNZ_PARAMERROR;
1692
1693
1694 if (pfile_in_zip_read_info->read_buffer == NULL)
1695 return UNZ_END_OF_LIST_OF_FILE;
1696 if (len == 0)
1697 return 0;
1698
1699 pfile_in_zip_read_info->stream.next_out = (Bytef*)buf;
1700
1701 pfile_in_zip_read_info->stream.avail_out = (uInt)len;
1702
1703 if ((len > pfile_in_zip_read_info->rest_read_uncompressed) &&
1704 (!(pfile_in_zip_read_info->raw)))
1705 pfile_in_zip_read_info->stream.avail_out =
1706 (uInt)pfile_in_zip_read_info->rest_read_uncompressed;
1707
1708 if ((len > pfile_in_zip_read_info->rest_read_compressed +
1709 pfile_in_zip_read_info->stream.avail_in) &&
1710 (pfile_in_zip_read_info->raw))
1711 pfile_in_zip_read_info->stream.avail_out =
1712 (uInt)pfile_in_zip_read_info->rest_read_compressed +
1713 pfile_in_zip_read_info->stream.avail_in;
1714
1715 while (pfile_in_zip_read_info->stream.avail_out > 0)
1716 {
1717 if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
1718 (pfile_in_zip_read_info->rest_read_compressed > 0))
1719 {
1720 uInt uReadThis = UNZ_BUFSIZE;
1721 if (pfile_in_zip_read_info->rest_read_compressed < uReadThis)
1722 uReadThis = (uInt)pfile_in_zip_read_info->rest_read_compressed;
1723 if (uReadThis == 0)
1724 return UNZ_EOF;
1725 if (ZSEEK64(pfile_in_zip_read_info->z_filefunc,
1726 pfile_in_zip_read_info->filestream,
1727 pfile_in_zip_read_info->pos_in_zipfile +
1728 pfile_in_zip_read_info->byte_before_the_zipfile,
1729 ZLIB_FILEFUNC_SEEK_SET) != 0)
1730 return UNZ_ERRNO;
1731 if (ZREAD64(pfile_in_zip_read_info->z_filefunc,
1732 pfile_in_zip_read_info->filestream,
1733 pfile_in_zip_read_info->read_buffer,
1734 uReadThis) != uReadThis)
1735 return UNZ_ERRNO;
1736

Callers 3

unzipper.cppFile · 0.85
dumpMethod · 0.85
do_extract_currentfileFunction · 0.85

Calls 1

crc32Function · 0.85

Tested by

no test coverage detected