MCPcopy Create free account
hub / github.com/TheRealMJP/BakingLab / mz_zip_reader_file_stat

Function mz_zip_reader_file_stat

SampleFramework11/v1.02/TinyEXR.cpp:4810–4853  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4808}
4809
4810mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index,
4811 mz_zip_archive_file_stat *pStat) {
4812 mz_uint n;
4813 const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);
4814 if ((!p) || (!pStat))
4815 return MZ_FALSE;
4816
4817 // Unpack the central directory record.
4818 pStat->m_file_index = file_index;
4819 pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(
4820 &pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index);
4821 pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS);
4822 pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS);
4823 pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);
4824 pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS);
4825#ifndef MINIZ_NO_TIME
4826 pStat->m_time =
4827 mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS),
4828 MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS));
4829#endif
4830 pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS);
4831 pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);
4832 pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);
4833 pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS);
4834 pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS);
4835 pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);
4836
4837 // Copy as much of the filename and comment as possible.
4838 n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);
4839 n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1);
4840 memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n);
4841 pStat->m_filename[n] = '\0';
4842
4843 n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS);
4844 n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1);
4845 pStat->m_comment_size = n;
4846 memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
4847 MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
4848 MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS),
4849 n);
4850 pStat->m_comment[n] = '\0';
4851
4852 return MZ_TRUE;
4853}
4854
4855mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index,
4856 char *pFilename, mz_uint filename_buf_size) {

Calls 2

mz_zip_reader_get_cdhFunction · 0.85
mz_zip_dos_to_time_tFunction · 0.85

Tested by

no test coverage detected