block_len = buf_len % 5552;
48 for(
i= 0;
i+ 7 < block_len;
i+= 8, ptr += 8)
50s1 += ptr[0], s2 += s1;
51s1 += ptr[1], s2 += s1;
52s1 += ptr[2], s2 += s1;
53s1 += ptr[3], s2 += s1;
54s1 += ptr[4], s2 += s1;
55s1 += ptr[5], s2 += s1;
56s1 += ptr[6], s2 += s1;
57s1 += ptr[7], s2 += s1;
59 for(;
i< block_len; ++
i)
60s1 += *ptr++, s2 += s1;
61s1 %= 65521U, s2 %= 65521U;
65 return(s2 << 16) + s1;
72 static const mz_uint32s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
730xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c };
81crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (
b& 0xF)];
82crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (
b>> 4)];
86 #elif defined(USE_EXTERNAL_MZCRC) 990x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535,
1000x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD,
1010xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D,
1020x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
1030x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
1040xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C,
1050xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC,
1060x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
1070x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB,
1080xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,
1090x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB,
1100x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
1110x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA,
1120xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE,
1130xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,
1140x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
1150x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409,
1160xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81,
1170xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739,
1180x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
1190xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268,
1200x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0,
1210x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8,
1220xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
1230xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
1240x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703,
1250x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7,
1260xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
1270x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE,
1280x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
1290x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6,
1300xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
1310xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D,
1320x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5,
1330x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,
1340xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
1350xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
169(void)opaque, (
void)items, (void)
size;
174(void)opaque, (
void)address;
179(void)opaque, (
void)address, (void)items, (
void)
size;
188 #ifndef MINIZ_NO_ZLIB_APIS 213 if(!pStream->
zfree)
220pStream->
state= (
structmz_internal_state *)pComp;
233 if((!pStream) || (!pStream->
state) || (!pStream->
zalloc) || (!pStream->
zfree))
242 size_tin_bytes, out_bytes;
243 mz_ulongorig_total_in, orig_total_out;
244 intmz_status =
MZ_OK;
257orig_total_in = pStream->
total_in;
289 if((flush) || (pStream->
total_in!= orig_total_in) || (pStream->
total_out!= orig_total_out))
302 if(pStream->
state)
314 return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5);
321memset(&stream, 0,
sizeof(stream));
324 if((source_len | *pDest_len) > 0xFFFFFFFFU)
333 if(status !=
MZ_OK)
360 mz_uintm_dict_ofs, m_dict_avail, m_first_call, m_has_flushed;
382 if(!pStream->
zfree)
389pStream->
state= (
structmz_internal_state *)pDecomp;
392pDecomp->m_dict_ofs = 0;
393pDecomp->m_dict_avail = 0;
395pDecomp->m_first_call = 1;
396pDecomp->m_has_flushed = 0;
397pDecomp->m_window_bits = window_bits;
423pDecomp->m_dict_ofs = 0;
424pDecomp->m_dict_avail = 0;
426pDecomp->m_first_call = 1;
427pDecomp->m_has_flushed = 0;
437 size_tin_bytes, out_bytes, orig_avail_in;
440 if((!pStream) || (!pStream->
state))
448 if(pState->m_window_bits > 0)
450orig_avail_in = pStream->
avail_in;
452first_call = pState->m_first_call;
453pState->m_first_call = 0;
454 if(pState->m_last_status < 0)
457 if(pState->m_has_flushed && (flush !=
MZ_FINISH))
459pState->m_has_flushed |= (flush ==
MZ_FINISH);
461 if((flush ==
MZ_FINISH) && (first_call))
468pState->m_last_status = status;
490 if(pState->m_dict_avail)
493memcpy(pStream->
next_out, pState->m_dict + pState->m_dict_ofs,
n);
497pState->m_dict_avail -=
n;
507status =
tinfl_decompress(&pState->m_decomp, pStream->
next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags);
508pState->m_last_status = status;
515pState->m_dict_avail = (
mz_uint)out_bytes;
518memcpy(pStream->
next_out, pState->m_dict + pState->m_dict_ofs,
n);
522pState->m_dict_avail -=
n;
549 if(pStream->
state)
560memset(&stream, 0,
sizeof(stream));
563 if((*pSource_len | *pDest_len) > 0xFFFFFFFFU)
572 if(status !=
MZ_OK)
576*pSource_len = *pSource_len - stream.
avail_in;
600{
MZ_OK,
""}, {
MZ_STREAM_END,
"stream end"}, {
MZ_NEED_DICT,
"need dictionary"}, {
MZ_ERRNO,
"file error"}, {
MZ_STREAM_ERROR,
"stream error"}, {
MZ_DATA_ERROR,
"data error"}, {
MZ_MEM_ERROR,
"out of memory"}, {
MZ_BUF_ERROR,
"buf error"}, {
MZ_VERSION_ERROR,
"version error"}, {
MZ_PARAM_ERROR,
"parameter error"}
603 for(
i= 0;
i<
sizeof(s_error_descs) /
sizeof(s_error_descs[0]); ++
i)
604 if(s_error_descs[
i].m_err == err)
605 returns_error_descs[
i].m_pDesc;
678257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272,
679273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276,
680277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
681279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
682281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
683282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
684283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
685284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285
6900, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
6914, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
6925, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6935, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0
6980, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,
69911, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
70013, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
70114, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
70214, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
70315, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
70416, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
70516, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
70616, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
70717, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
70817, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
70917, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17
7140, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
7155, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
7166, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
7176, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7187, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7197, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7207, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7217, 7, 7, 7, 7, 7, 7, 7
7260, 0, 18, 19, 20, 20, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
72726, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
72828, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
7330, 0, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
73412, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
73513, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
745 mz_uint32total_passes = 2, pass_shift, pass,
i, hist[256 * 2];
748 for(
i= 0;
i< num_syms;
i++)
752hist[256 + ((freq >> 8) & 0xFF)]++;
754 while((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256]))
756 for(pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8)
758 const mz_uint32*pHist = &hist[pass << 8];
760 for(
i= 0;
i< 256;
i++)
763cur_ofs += pHist[
i];
765 for(
i= 0;
i< num_syms;
i++)
766pNew_syms[
offsets[(pCur_syms[
i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[
i];
769pCur_syms = pNew_syms;
779 introot,
leaf,
next, avbl, used, dpth;
787 A[0].m_key +=
A[1].m_key;
792 if(
leaf>=
n||
A[root].m_key <
A[
leaf].m_key)
794 A[
next].m_key =
A[root].m_key;
807 A[
n- 2].m_key = 0;
809 A[
next].m_key =
A[
A[
next].m_key].m_key + 1;
816 while(root >= 0 && (
int)
A[root].m_key == dpth)
841 if(code_list_len <= 1)
844pNum_codes[max_code_size] += pNum_codes[
i];
845 for(
i= max_code_size;
i> 0;
i--)
846total += (((
mz_uint32)pNum_codes[
i]) << (max_code_size -
i));
847 while(total != (1UL << max_code_size))
849pNum_codes[max_code_size]--;
850 for(
i= max_code_size - 1;
i> 0;
i--)
854pNum_codes[
i+ 1] += 2;
868 for(
i= 0;
i< table_len;
i++)
874 intnum_used_syms = 0;
876 for(
i= 0;
i< table_len;
i++)
886 for(
i= 0;
i< num_used_syms;
i++)
887num_codes[pSyms[
i].m_key]++;
893 for(
i= 1, j = num_used_syms;
i<= code_size_limit;
i++)
894 for(
l= num_codes[
i];
l> 0;
l--)
899 for(j = 0,
i= 2;
i<= code_size_limit;
i++)
900next_code[
i] = j = ((j + num_codes[
i- 1]) << 1);
902 for(
i= 0;
i< table_len;
i++)
907 code= next_code[code_size]++;
908 for(
l= code_size;
l> 0;
l--,
code>>= 1)
909rev_code = (rev_code << 1) | (
code& 1);
914 #define TDEFL_PUT_BITS(b, l) \ 919 MZ_ASSERT(bits <= ((1U << len) - 1U)); \ 920 d->m_bit_buffer |= (bits << d->m_bits_in); \ 921 d->m_bits_in += len; \ 922 while (d->m_bits_in >= 8) \ 924 if (d->m_pOutput_buf < d->m_pOutput_buf_end) \ 925 *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \ 926 d->m_bit_buffer >>= 8; \ 932 #define TDEFL_RLE_PREV_CODE_SIZE() \ 934 if (rle_repeat_count) \ 936 if (rle_repeat_count < 3) \ 938 d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \ 939 while (rle_repeat_count--) \ 940 packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \ 944 d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); \ 945 packed_code_sizes[num_packed_code_sizes++] = 16; \ 946 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \ 948 rle_repeat_count = 0; \ 952 #define TDEFL_RLE_ZERO_CODE_SIZE() \ 956 if (rle_z_count < 3) \ 958 d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); \ 959 while (rle_z_count--) \ 960 packed_code_sizes[num_packed_code_sizes++] = 0; \ 962 else if (rle_z_count <= 10) \ 964 d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); \ 965 packed_code_sizes[num_packed_code_sizes++] = 17; \ 966 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \ 970 d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); \ 971 packed_code_sizes[num_packed_code_sizes++] = 18; \ 972 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \ 978 static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
982 intnum_lit_codes, num_dist_codes, num_bit_lengths;
983 mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index;
991 for(num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--)
994 for(num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--)
999memcpy(code_sizes_to_pack + num_lit_codes, &d->
m_huff_code_sizes[1][0], num_dist_codes);
1000total_code_sizes_to_pack = num_lit_codes + num_dist_codes;
1001num_packed_code_sizes = 0;
1003rle_repeat_count = 0;
1006 for(
i= 0;
i< total_code_sizes_to_pack;
i++)
1008 mz_uint8code_size = code_sizes_to_pack[
i];
1012 if(++rle_z_count == 138)
1020 if(code_size != prev_code_size)
1024packed_code_sizes[num_packed_code_sizes++] = code_size;
1026 else if(++rle_repeat_count == 6)
1031prev_code_size = code_size;
1033 if(rle_repeat_count)
1049 for(num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--)
1052num_bit_lengths =
MZ_MAX(4, (num_bit_lengths + 1));
1054 for(
i= 0; (
int)
i< num_bit_lengths;
i++)
1057 for(packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes;)
1059 mz_uint code= packed_code_sizes[packed_code_sizes_index++];
1063 TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++],
"\02\03\07"[
code- 16]);
1072 for(
i= 0;
i<= 143; ++
i)
1074 for(;
i<= 255; ++
i)
1076 for(;
i<= 279; ++
i)
1078 for(;
i<= 287; ++
i)
1089 static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
1091 #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS 1101 #define TDEFL_PUT_BITS_FAST(b, l) \ 1103 bit_buffer |= (((mz_uint64)(b)) << bits_in); \ 1108 for(pLZ_codes = d->
m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1)
1111 flags= *pLZ_codes++ | 0x100;
1115 mz_uints0, s1, n0, n1, sym, num_extra_bits;
1116 mz_uintmatch_len = pLZ_codes[0], match_dist = *(
const mz_uint16*)(pLZ_codes + 1);
1128sym = (match_dist < 512) ? s0 : s1;
1129num_extra_bits = (match_dist < 512) ? n0 : n1;
1133TDEFL_PUT_BITS_FAST(match_dist &
mz_bitmasks[num_extra_bits], num_extra_bits);
1141 if(((
flags& 2) == 0) && (pLZ_codes < pLZ_code_buf_end))
1148 if(((
flags& 2) == 0) && (pLZ_codes < pLZ_code_buf_end))
1161*(
mz_uint64*)pOutput_buf = bit_buffer;
1162pOutput_buf += (bits_in >> 3);
1163bit_buffer >>= (bits_in & ~7);
1167 #undef TDEFL_PUT_BITS_FAST 1195 flags= *pLZ_codes++ | 0x100;
1199 mz_uintmatch_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8));
1206 if(match_dist < 512)
1245 mz_uintsaved_bit_buf, saved_bits_in;
1298 else if(!comp_block_succeeded)
1316 for(
i= 0;
i< 4;
i++)
1331 for(
i= 2;
i; --
i, z ^= 0xFFFF)
1363 if((
n-= bytes_to_copy) != 0)
1378 #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1379 #ifdef MINIZ_UNALIGNED_USE_MEMCPY 1393 #define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16 *)(p) 1394 #define TDEFL_READ_UNALIGNED_WORD2(p) *(const mz_uint16 *)(p) 1401 mz_uint16c01 = TDEFL_READ_UNALIGNED_WORD(&d->
m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD2(s);
1403 if(max_match_len <= match_len)
1409 if(--num_probes_left == 0)
1411 #define TDEFL_PROBE \ 1412 next_probe_pos = d->m_next[probe_pos]; \ 1413 if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ 1415 probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ 1416 if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) \ 1425 if(TDEFL_READ_UNALIGNED_WORD2(q) != s01)
1431}
while((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) &&
1432(TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0));
1435*pMatch_dist = dist;
1441*pMatch_dist = dist;
1442 if((*pMatch_len = match_len =
MZ_MIN(max_match_len, probe_len)) == max_match_len)
1444c01 = TDEFL_READ_UNALIGNED_WORD(&d->
m_dict[pos + match_len - 1]);
1456 if(max_match_len <= match_len)
1462 if(--num_probes_left == 0)
1464 #define TDEFL_PROBE \ 1465 next_probe_pos = d->m_next[probe_pos]; \ 1466 if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ 1468 probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ 1469 if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) \ 1478q = d->
m_dict+ probe_pos;
1479 for(probe_len = 0; probe_len < max_match_len; probe_len++)
1482 if(probe_len > match_len)
1484*pMatch_dist = dist;
1485 if((*pMatch_len = match_len = probe_len) == max_match_len)
1487c0 = d->
m_dict[pos + match_len];
1488c1 = d->
m_dict[pos + match_len - 1];
1494 #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN 1495 #ifdef MINIZ_UNALIGNED_USE_MEMCPY 1503 #define TDEFL_READ_UNALIGNED_WORD32(p) *(const mz_uint32 *)(p) 1514 const mz_uintTDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096;
1518lookahead_size += num_bytes_to_process;
1520 while(num_bytes_to_process)
1528num_bytes_to_process -=
n;
1532 if((!d->
m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE))
1535 while(lookahead_size >= 4)
1537 mz_uintcur_match_dist, cur_match_len = 1;
1539 mz_uintfirst_trigram = TDEFL_READ_UNALIGNED_WORD32(pCur_dict) & 0xFFFFFF;
1544 if(((cur_match_dist = (
mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((TDEFL_READ_UNALIGNED_WORD32(d->
m_dict+ (probe_pos &=
TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram))
1551}
while((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) &&
1552(TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0));
1560*pLZ_code_buf++ = (
mz_uint8)first_trigram;
1561*pLZ_flags = (
mz_uint8)(*pLZ_flags >> 1);
1567cur_match_len =
MZ_MIN(cur_match_len, lookahead_size);
1574 #ifdef MINIZ_UNALIGNED_USE_MEMCPY 1575memcpy(&pLZ_code_buf[1], &cur_match_dist,
sizeof(cur_match_dist));
1580*pLZ_flags = (
mz_uint8)((*pLZ_flags >> 1) | 0x80);
1584d->
m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++;
1591*pLZ_code_buf++ = (
mz_uint8)first_trigram;
1592*pLZ_flags = (
mz_uint8)(*pLZ_flags >> 1);
1596 if(--num_flags_left == 0)
1599pLZ_flags = pLZ_code_buf++;
1602total_lz_bytes += cur_match_len;
1603lookahead_pos += cur_match_len;
1606 MZ_ASSERT(lookahead_size >= cur_match_len);
1607lookahead_size -= cur_match_len;
1628 while(lookahead_size)
1633*pLZ_code_buf++ = lit;
1634*pLZ_flags = (
mz_uint8)(*pLZ_flags >> 1);
1635 if(--num_flags_left == 0)
1638pLZ_flags = pLZ_code_buf++;
1728 mz_uintlen_to_move, cur_match_dist, cur_match_len, cur_pos;
1735 const mz_uint8*pSrc_end = pSrc + num_bytes_to_process;
1736src_buf_left -= num_bytes_to_process;
1738 while(pSrc != pSrc_end)
1741d->
m_dict[dst_pos] = c;
1758d->
m_dict[dst_pos] = c;
1785 while(cur_match_len < d->m_lookahead_size)
1787 if(d->
m_dict[cur_pos + cur_match_len] != c)
1803cur_match_dist = cur_match_len = 0;
1810 if(cur_match_len >= 128)
1814len_to_move = cur_match_len;
1830 else if(!cur_match_dist)
1835len_to_move = cur_match_len;
1907(d->
m_wants_to_finish&& (flush !=
TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf))
1920 #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN 1925 if(!tdefl_compress_fast(d))
2010 if(((buf_len) && (!pBuf)) || (!pPut_buf_func))
2040new_capacity =
MZ_MAX(128U, new_capacity << 1U);
2041}
while(new_size > new_capacity);
2064*pOut_len = out_buf.
m_size;
2081 static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };
2087 if(window_bits > 0)
2105 #pragma warning(push) 2106 #pragma warning(disable : 4204) 2115 static const mz_uints_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };
2118 int i, bpl = w * num_chans, y, z;
2132 for(z = 41; z; --z)
2136 for(y = 0; y < h; ++y)
2148*pLen_out = out_buf.
m_size- 41;
2150 static const mz_uint8chans[] = { 0x00, 0x00, 0x04, 0x02, 0x06 };
2151 mz_uint8pnghdr[41] = { 0x89, 0x50, 0x4e, 0x47, 0x0d,
21520x0a, 0x1a, 0x0a, 0x00, 0x00,
21530x00, 0x0d, 0x49, 0x48, 0x44,
21540x52, 0x00, 0x00, 0x00, 0x00,
21550x00, 0x00, 0x00, 0x00, 0x08,
21560x00, 0x00, 0x00, 0x00, 0x00,
21570x00, 0x00, 0x00, 0x00, 0x00,
21580x00, 0x00, 0x49, 0x44, 0x41,
2164pnghdr[25] = chans[num_chans];
2165pnghdr[33] = (
mz_uint8)(*pLen_out >> 24);
2166pnghdr[34] = (
mz_uint8)(*pLen_out >> 16);
2167pnghdr[35] = (
mz_uint8)(*pLen_out >> 8);
2168pnghdr[36] = (
mz_uint8)*pLen_out;
2170 for(
i= 0;
i< 4; ++
i, c <<= 8)
2172memcpy(out_buf.
m_pBuf, pnghdr, 41);
2183 for(
i= 0;
i< 4; ++
i, c <<= 8)
2196 #ifndef MINIZ_NO_MALLOC 2212 #pragma warning(pop) 2252 #define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) 2253 #define TINFL_MEMSET(p, c, l) memset(p, c, l) 2255 #define TINFL_CR_BEGIN \ 2256 switch (r->m_state) \ 2259 #define TINFL_CR_RETURN(state_index, result) \ 2263 r->m_state = state_index; \ 2265 case state_index:; \ 2268 #define TINFL_CR_RETURN_FOREVER(state_index, result) \ 2273 TINFL_CR_RETURN(state_index, result); \ 2277 #define TINFL_CR_FINISH } 2279 #define TINFL_GET_BYTE(state_index, c) \ 2282 while (pIn_buf_cur >= pIn_buf_end) \ 2284 TINFL_CR_RETURN(state_index, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \ 2286 c = *pIn_buf_cur++; \ 2290 #define TINFL_NEED_BITS(state_index, n) \ 2294 TINFL_GET_BYTE(state_index, c); \ 2295 bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ 2297 } while (num_bits < (mz_uint)(n)) 2298 #define TINFL_SKIP_BITS(state_index, n) \ 2301 if (num_bits < (mz_uint)(n)) \ 2303 TINFL_NEED_BITS(state_index, n); \ 2309 #define TINFL_GET_BITS(state_index, b, n) \ 2312 if (num_bits < (mz_uint)(n)) \ 2314 TINFL_NEED_BITS(state_index, n); \ 2316 b = bit_buf & ((1 << (n)) - 1); \ 2326 #define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ 2329 temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ 2332 code_len = temp >> 9; \ 2333 if ((code_len) && (num_bits >= code_len)) \ 2336 else if (num_bits > TINFL_FAST_LOOKUP_BITS) \ 2338 code_len = TINFL_FAST_LOOKUP_BITS; \ 2341 temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ 2342 } while ((temp < 0) && (num_bits >= (code_len + 1))); \ 2346 TINFL_GET_BYTE(state_index, c); \ 2347 bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ 2349 } while (num_bits < 15); 2357 #define TINFL_HUFF_DECODE(state_index, sym, pHuff) \ 2361 mz_uint code_len, c; \ 2362 if (num_bits < 15) \ 2364 if ((pIn_buf_end - pIn_buf_cur) < 2) \ 2366 TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ 2370 bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \ 2375 if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ 2376 code_len = temp >> 9, temp &= 511; \ 2379 code_len = TINFL_FAST_LOOKUP_BITS; \ 2382 temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ 2383 } while (temp < 0); \ 2386 bit_buf >>= code_len; \ 2387 num_bits -= code_len; \ 2393 static const ints_length_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 };
2394 static const ints_length_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 };
2395 static const ints_dist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 };
2396 static const ints_dist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 };
2397 static const mz_uint8s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
2398 static const ints_min_table_sizes[3] = { 257, 1, 4 };
2401 mz_uint32num_bits, dist, counter, num_extra;
2403 const mz_uint8*pIn_buf_cur = pIn_buf_next, *
constpIn_buf_end = pIn_buf_next + *pIn_buf_size;
2404 mz_uint8*pOut_buf_cur = pOut_buf_next, *
constpOut_buf_end = pOut_buf_next + *pOut_buf_size;
2408 if(((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start))
2410*pIn_buf_size = *pOut_buf_size = 0;
2414num_bits =
r->m_num_bits;
2415bit_buf =
r->m_bit_buf;
2417counter =
r->m_counter;
2418num_extra =
r->m_num_extra;
2419dist_from_out_buf_start =
r->m_dist_from_out_buf_start;
2422bit_buf = num_bits = dist = counter = num_extra =
r->m_zhdr0 =
r->m_zhdr1 = 0;
2423 r->m_z_adler32 =
r->m_check_adler32 = 1;
2428counter = (((
r->m_zhdr0 * 256 +
r->m_zhdr1) % 31 != 0) || (
r->m_zhdr1 & 32) || ((
r->m_zhdr0 & 15) != 8));
2432counter |= (((1U << (8U + (
r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (
r->m_zhdr0 >> 4)))));
2437counter |= ((
t> 32768U) || ((out_buf_size_mask + 1) < (size_t)(
t)));
2449 r->m_type =
r->m_final >> 1;
2450 if(
r->m_type == 0)
2453 for(counter = 0; counter < 4; ++counter)
2460 if((counter = (
r->m_raw_header[0] | (
r->m_raw_header[1] << 8))) != (
mz_uint)(0xFFFF ^ (
r->m_raw_header[2] | (
r->m_raw_header[3] << 8))))
2464 while((counter) && (num_bits))
2467 while(pOut_buf_cur >= pOut_buf_end)
2471*pOut_buf_cur++ = (
mz_uint8)dist;
2477 while(pOut_buf_cur >= pOut_buf_end)
2481 while(pIn_buf_cur >= pIn_buf_end)
2485 n=
MZ_MIN(
MZ_MIN((
size_t)(pOut_buf_end - pOut_buf_cur), (
size_t)(pIn_buf_end - pIn_buf_cur)), counter);
2492 else if(
r->m_type == 3)
2498 if(
r->m_type == 1)
2500 mz_uint8*p =
r->m_tables[0].m_code_size;
2502 r->m_table_sizes[0] = 288;
2503 r->m_table_sizes[1] = 32;
2505 for(
i= 0;
i<= 143; ++
i)
2507 for(;
i<= 255; ++
i)
2509 for(;
i<= 279; ++
i)
2511 for(;
i<= 287; ++
i)
2516 for(counter = 0; counter < 3; counter++)
2518 TINFL_GET_BITS(11,
r->m_table_sizes[counter],
"\05\05\04"[counter]);
2519 r->m_table_sizes[counter] += s_min_table_sizes[counter];
2522 for(counter = 0; counter <
r->m_table_sizes[2]; counter++)
2526 r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (
mz_uint8)s;
2528 r->m_table_sizes[2] = 19;
2530 for(; (
int)
r->m_type >= 0;
r->m_type--)
2532 inttree_next, tree_cur;
2534 mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16];
2535pTable = &
r->m_tables[
r->m_type];
2539 for(
i= 0;
i<
r->m_table_sizes[
r->m_type]; ++
i)
2541used_syms = 0, total = 0;
2542next_code[0] = next_code[1] = 0;
2543 for(
i= 1;
i<= 15; ++
i)
2545used_syms += total_syms[
i];
2546next_code[
i+ 1] = (total = ((total + total_syms[
i]) << 1));
2548 if((65536 != total) && (used_syms > 1))
2552 for(tree_next = -1, sym_index = 0; sym_index <
r->m_table_sizes[
r->m_type]; ++sym_index)
2557cur_code = next_code[code_size]++;
2558 for(
l= code_size;
l> 0;
l--, cur_code >>= 1)
2559rev_code = (rev_code << 1) | (cur_code & 1);
2566rev_code += (1 << code_size);
2573tree_cur = tree_next;
2579tree_cur -= ((rev_code >>= 1) & 1);
2580 if(!pTable->
m_tree[-tree_cur - 1])
2583tree_cur = tree_next;
2587tree_cur = pTable->
m_tree[-tree_cur - 1];
2589tree_cur -= ((rev_code >>= 1) & 1);
2592 if(
r->m_type == 2)
2594 for(counter = 0; counter < (
r->m_table_sizes[0] +
r->m_table_sizes[1]);)
2600 r->m_len_codes[counter++] = (
mz_uint8)dist;
2603 if((dist == 16) && (!counter))
2607num_extra =
"\02\03\07"[dist - 16];
2609s +=
"\03\03\013"[dist - 16];
2610 TINFL_MEMSET(
r->m_len_codes + counter, (dist == 16) ?
r->m_len_codes[counter - 1] : 0, s);
2613 if((
r->m_table_sizes[0] +
r->m_table_sizes[1]) != counter)
2617 TINFL_MEMCPY(
r->m_tables[0].m_code_size,
r->m_len_codes,
r->m_table_sizes[0]);
2618 TINFL_MEMCPY(
r->m_tables[1].m_code_size,
r->m_len_codes +
r->m_table_sizes[0],
r->m_table_sizes[1]);
2626 if(((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2))
2631 while(pOut_buf_cur >= pOut_buf_end)
2635*pOut_buf_cur++ = (
mz_uint8)counter;
2641 #if TINFL_USE_64BIT_BITBUF 2657code_len = sym2 >> 9;
2663sym2 =
r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)];
2667bit_buf >>= code_len;
2668num_bits -= code_len;
2672 #if !TINFL_USE_64BIT_BITBUF 2681code_len = sym2 >> 9;
2687sym2 =
r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)];
2690bit_buf >>= code_len;
2691num_bits -= code_len;
2693pOut_buf_cur[0] = (
mz_uint8)counter;
2700pOut_buf_cur[1] = (
mz_uint8)sym2;
2704 if((counter &= 511) == 256)
2707num_extra = s_length_extra[counter - 257];
2708counter = s_length_base[counter - 257];
2713counter += extra_bits;
2717num_extra = s_dist_extra[dist];
2718dist = s_dist_base[dist];
2726dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start;
2732pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask);
2734 if((
MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end)
2738 while(pOut_buf_cur >= pOut_buf_end)
2742*pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask];
2746 #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES 2747 else if((counter >= 9) && (counter <= dist))
2749 const mz_uint8*pSrc_end = pSrc + (counter & ~7);
2752 #ifdef MINIZ_UNALIGNED_USE_MEMCPY 2753memcpy(pOut_buf_cur, pSrc,
sizeof(
mz_uint32)*2);
2759}
while((pSrc += 8) < pSrc_end);
2760 if((counter &= 7) < 3)
2764pOut_buf_cur[0] = pSrc[0];
2766pOut_buf_cur[1] = pSrc[1];
2767pOut_buf_cur += counter;
2775pOut_buf_cur[0] = pSrc[0];
2776pOut_buf_cur[1] = pSrc[1];
2777pOut_buf_cur[2] = pSrc[2];
2784pOut_buf_cur[0] = pSrc[0];
2786pOut_buf_cur[1] = pSrc[1];
2787pOut_buf_cur += counter;
2791}
while(!(
r->m_final & 1));
2796 while((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8))
2806 for(counter = 0; counter < 4; ++counter)
2813 r->m_z_adler32 = (
r->m_z_adler32 << 8) | s;
2826 while((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8))
2832 r->m_num_bits = num_bits;
2835 r->m_counter = counter;
2836 r->m_num_extra = num_extra;
2837 r->m_dist_from_out_buf_start = dist_from_out_buf_start;
2838*pIn_buf_size = pIn_buf_cur - pIn_buf_next;
2839*pOut_buf_size = pOut_buf_cur - pOut_buf_next;
2842 const mz_uint8*ptr = pOut_buf_next;
2843 size_tbuf_len = *pOut_buf_size;
2844 mz_uint32 i, s1 =
r->m_check_adler32 & 0xffff, s2 =
r->m_check_adler32 >> 16;
2845 size_tblock_len = buf_len % 5552;
2848 for(
i= 0;
i+ 7 < block_len;
i+= 8, ptr += 8)
2850s1 += ptr[0], s2 += s1;
2851s1 += ptr[1], s2 += s1;
2852s1 += ptr[2], s2 += s1;
2853s1 += ptr[3], s2 += s1;
2854s1 += ptr[4], s2 += s1;
2855s1 += ptr[5], s2 += s1;
2856s1 += ptr[6], s2 += s1;
2857s1 += ptr[7], s2 += s1;
2859 for(;
i< block_len; ++
i)
2860s1 += *ptr++, s2 += s1;
2861s1 %= 65521U, s2 %= 65521U;
2862buf_len -= block_len;
2865 r->m_check_adler32 = (s2 << 16) + s1;
2876 void*pBuf =
NULL, *pNew_buf;
2877 size_tsrc_buf_ofs = 0, out_buf_capacity = 0;
2882 size_tsrc_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity;
2891src_buf_ofs += src_buf_size;
2892*pOut_len += dst_buf_size;
2895new_out_buf_capacity = out_buf_capacity * 2;
2896 if(new_out_buf_capacity < 128)
2897new_out_buf_capacity = 128;
2898pNew_buf =
MZ_REALLOC(pBuf, new_out_buf_capacity);
2906out_buf_capacity = new_out_buf_capacity;
2925 size_tin_buf_ofs = 0, dict_ofs = 0;
2931 size_tin_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size =
TINFL_LZ_DICT_SIZE- dict_ofs;
2934in_buf_ofs += in_buf_size;
2935 if((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (
int)dst_buf_size, pPut_buf_user)))
2945*pIn_buf_size = in_buf_ofs;
2949 #ifndef MINIZ_NO_MALLOC 2995 #ifndef MINIZ_NO_ARCHIVE_APIS 3003 #ifdef MINIZ_NO_STDIO 3004 #define MZ_FILE void * 3006 #include <sys/stat.h> 3008 #if defined(_MSC_VER) || defined(__MINGW64__) 3009 staticFILE *mz_fopen(
const char*pFilename,
const char*pMode)
3011FILE *pFile =
NULL;
3012fopen_s(&pFile, pFilename, pMode);
3015 staticFILE *mz_freopen(
const char*pPath,
const char*pMode, FILE *pStream)
3017FILE *pFile =
NULL;
3018 if(freopen_s(&pFile, pPath, pMode, pStream))
3022 #ifndef MINIZ_NO_TIME 3023 #include <sys/utime.h> 3025 #define MZ_FOPEN mz_fopen 3026 #define MZ_FCLOSE fclose 3027 #define MZ_FREAD fread 3028 #define MZ_FWRITE fwrite 3029 #define MZ_FTELL64 _ftelli64 3030 #define MZ_FSEEK64 _fseeki64 3031 #define MZ_FILE_STAT_STRUCT _stat64 3032 #define MZ_FILE_STAT _stat64 3033 #define MZ_FFLUSH fflush 3034 #define MZ_FREOPEN mz_freopen 3035 #define MZ_DELETE_FILE remove 3036 #elif defined(__MINGW32__) 3037 #ifndef MINIZ_NO_TIME 3038 #include <sys/utime.h> 3040 #define MZ_FOPEN(f, m) fopen(f, m) 3041 #define MZ_FCLOSE fclose 3042 #define MZ_FREAD fread 3043 #define MZ_FWRITE fwrite 3044 #define MZ_FTELL64 ftello64 3045 #define MZ_FSEEK64 fseeko64 3046 #define MZ_FILE_STAT_STRUCT _stat 3047 #define MZ_FILE_STAT _stat 3048 #define MZ_FFLUSH fflush 3049 #define MZ_FREOPEN(f, m, s) freopen(f, m, s) 3050 #define MZ_DELETE_FILE remove 3051 #elif defined(__TINYC__) 3052 #ifndef MINIZ_NO_TIME 3053 #include <sys/utime.h> 3055 #define MZ_FOPEN(f, m) fopen(f, m) 3056 #define MZ_FCLOSE fclose 3057 #define MZ_FREAD fread 3058 #define MZ_FWRITE fwrite 3059 #define MZ_FTELL64 ftell 3060 #define MZ_FSEEK64 fseek 3061 #define MZ_FILE_STAT_STRUCT stat 3062 #define MZ_FILE_STAT stat 3063 #define MZ_FFLUSH fflush 3064 #define MZ_FREOPEN(f, m, s) freopen(f, m, s) 3065 #define MZ_DELETE_FILE remove 3066 #elif defined(__USE_LARGEFILE64) 3067 #ifndef MINIZ_NO_TIME 3070 #define MZ_FOPEN(f, m) fopen64(f, m) 3071 #define MZ_FCLOSE fclose 3072 #define MZ_FREAD fread 3073 #define MZ_FWRITE fwrite 3074 #define MZ_FTELL64 ftello64 3075 #define MZ_FSEEK64 fseeko64 3076 #define MZ_FILE_STAT_STRUCT stat64 3077 #define MZ_FILE_STAT stat64 3078 #define MZ_FFLUSH fflush 3079 #define MZ_FREOPEN(p, m, s) freopen64(p, m, s) 3080 #define MZ_DELETE_FILE remove 3081 #elif defined(__APPLE__) 3082 #ifndef MINIZ_NO_TIME 3085 #define MZ_FOPEN(f, m) fopen(f, m) 3086 #define MZ_FCLOSE fclose 3087 #define MZ_FREAD fread 3088 #define MZ_FWRITE fwrite 3089 #define MZ_FTELL64 ftello 3090 #define MZ_FSEEK64 fseeko 3091 #define MZ_FILE_STAT_STRUCT stat 3092 #define MZ_FILE_STAT stat 3093 #define MZ_FFLUSH fflush 3094 #define MZ_FREOPEN(p, m, s) freopen(p, m, s) 3095 #define MZ_DELETE_FILE remove 3098 #pragma message("Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.")
3099 #ifndef MINIZ_NO_TIME 3102 #define MZ_FOPEN(f, m) fopen(f, m) 3103 #define MZ_FCLOSE fclose 3104 #define MZ_FREAD fread 3105 #define MZ_FWRITE fwrite 3106 #ifdef __STRICT_ANSI__ 3107 #define MZ_FTELL64 ftell 3108 #define MZ_FSEEK64 fseek 3110 #define MZ_FTELL64 ftello 3111 #define MZ_FSEEK64 fseeko 3113 #define MZ_FILE_STAT_STRUCT stat 3114 #define MZ_FILE_STAT stat 3115 #define MZ_FFLUSH fflush 3116 #define MZ_FREOPEN(f, m, s) freopen(f, m, s) 3117 #define MZ_DELETE_FILE remove 3121 #define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) 3244 #define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size 3246 #if defined(DEBUG) || defined(_DEBUG) 3252 #define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)] 3254 #define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] 3272 size_tnew_capacity = min_new_capacity;
3279 while(new_capacity < min_new_capacity)
3284pArray->
m_p= pNew_p;
3306pArray->
m_size= new_size;
3317 size_torig_size = pArray->
m_size;
3325 #ifndef MINIZ_NO_TIME 3329memset(&tm, 0,
sizeof(tm));
3331tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900;
3332tm.tm_mon = ((dos_date >> 5) & 15) - 1;
3333tm.tm_mday = dos_date & 31;
3334tm.tm_hour = (dos_time >> 11) & 31;
3335tm.tm_min = (dos_time >> 5) & 63;
3336tm.tm_sec = (dos_time << 1) & 62;
3340 #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS 3344 structtm tm_struct;
3345 structtm *tm = &tm_struct;
3346errno_t err = localtime_s(tm, &time);
3354 structtm *tm = localtime(&time);
3357*pDOS_time = (
mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1));
3358*pDOS_date = (
mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday);
3362 #ifndef MINIZ_NO_STDIO 3363 #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS 3372*pTime = file_stat.st_mtime;
3382memset(&
t, 0,
sizeof(
t));
3383 t.actime = access_time;
3384 t.modtime = modified_time;
3386 return!utime(pFilename, &
t);
3440pE = pL +
MZ_MIN(l_len, r_len);
3448 return(pL == pE) ? (l_len < r_len) : (
l<
r);
3451 #define MZ_SWAP_UINT32(a, b) \ 3475start = (
size- 2U) >> 1U;
3481 if((child = (root << 1U) + 1U) >=
size)
3501 if((child = (root << 1U) + 1U) >= end)
3503child += (((child + 1U) < end) &&
mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U]));
3532 for(
i=
n- 4;
i>= 0; --
i)
3535 if(s == record_sig)
3552cur_file_ofs =
MZ_MAX(cur_file_ofs - (
sizeof(buf_u32) - 3), 0);
3555*pOfs = cur_file_ofs;
3561 mz_uintcdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0, cdir_disk_index = 0;
3570 mz_uint8*pZip64_locator = (
mz_uint8*)zip64_end_of_central_dir_locator_u32;
3573 mz_uint8*pZip64_end_of_central_dir = (
mz_uint8*)zip64_end_of_central_dir_header_u32;
3575 mz_uint64zip64_end_of_central_dir_ofs = 0;
3630 if(zip64_total_num_of_disks != 1U)
3642cdir_entries_on_this_disk = (
mz_uint32)zip64_cdir_total_entries_on_this_disk;
3648cdir_size = (
mz_uint32)zip64_size_of_central_directory;
3660 if(((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1)))
3679 if(sort_central_dir)
3692 mz_uinttotal_header_size, disk_index, bit_flags, filename_size, ext_data_size;
3693 mz_uint64comp_size, decomp_size, local_header_ofs;
3700 if(sort_central_dir)
3714 mz_uint32extra_size_remaining = ext_data_size;
3716 if(extra_size_remaining)
3745 if(extra_size_remaining < (
sizeof(
mz_uint16) * 2))
3754 if((field_data_size +
sizeof(
mz_uint16) * 2) > extra_size_remaining)
3768pExtra_data +=
sizeof(
mz_uint16) * 2 + field_data_size;
3769extra_size_remaining = extra_size_remaining -
sizeof(
mz_uint16) * 2 - field_data_size;
3770}
while(extra_size_remaining);
3784 if((disk_index ==
MZ_UINT16_MAX) || ((disk_index != num_this_disk) && (disk_index != 1)))
3800 n-= total_header_size;
3801p += total_header_size;
3805 if(sort_central_dir)
3841 #ifndef MINIZ_NO_STDIO 3870 if((!pZip) || (!pZip->
m_pRead))
3930 #ifndef MINIZ_NO_STDIO 3957pFile =
MZ_FOPEN(pFilename,
"rb");
3961file_size = archive_size;
4007 if((!pZip) || (!pFile))
4017archive_size =
MZ_FTELL64(pFile) - cur_file_ofs;
4104 mz_uintfilename_len, attribute_mapping_id, external_attr;
4123(void)attribute_mapping_id;
4137 const mz_uint8*p = pCentral_dir_header;
4139 if(pFound_zip64_extra_data)
4140*pFound_zip64_extra_data =
MZ_FALSE;
4142 if((!p) || (!pStat))
4152 #ifndef MINIZ_NO_TIME 4186 if(extra_size_remaining)
4195 if(extra_size_remaining < (
sizeof(
mz_uint16) * 2))
4201 if((field_data_size +
sizeof(
mz_uint16) * 2) > extra_size_remaining)
4207 mz_uint32field_data_remaining = field_data_size;
4209 if(pFound_zip64_extra_data)
4210*pFound_zip64_extra_data =
MZ_TRUE;
4214 if(field_data_remaining <
sizeof(
mz_uint64))
4219field_data_remaining -=
sizeof(
mz_uint64);
4224 if(field_data_remaining <
sizeof(
mz_uint64))
4229field_data_remaining -=
sizeof(
mz_uint64);
4234 if(field_data_remaining <
sizeof(
mz_uint64))
4239field_data_remaining -=
sizeof(
mz_uint64);
4245pExtra_data +=
sizeof(
mz_uint16) * 2 + field_data_size;
4246extra_size_remaining = extra_size_remaining -
sizeof(
mz_uint16) * 2 - field_data_size;
4247}
while(extra_size_remaining);
4258 return0 == memcmp(pA, pB,
len);
4259 for(
i= 0;
i<
len; ++
i)
4271pE = pL +
MZ_MIN(l_len, r_len);
4279 return(pL == pE) ? (
int)(l_len - r_len) : (
l-
r);
4309*pIndex = file_index;
4328 return(
int)index;
4334 size_tname_len, comment_len;
4339 if((!pZip) || (!pZip->
m_pState) || (!pName))
4351name_len = strlen(pName);
4355comment_len = pComment ? strlen(pComment) : 0;
4359 for(file_index = 0; file_index < pZip->
m_total_files; file_index++)
4364 if(filename_len < name_len)
4369 const char*pFile_comment = pFilename + filename_len + file_extra_len;
4370 if((file_comment_len != comment_len) || (!
mz_zip_string_equal(pComment, pFile_comment, file_comment_len,
flags)))
4375 intofs = filename_len - 1;
4378 if((pFilename[ofs] ==
'/') || (pFilename[ofs] ==
'\\') || (pFilename[ofs] ==
':'))
4380}
while(--ofs >= 0);
4383filename_len -= ofs;
4388*pIndex = file_index;
4399 mz_uint64needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail;
4406 if((!pZip) || (!pZip->
m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->
m_pRead))
4426 if(buf_size < needed_size)
4444 if(pZip->
m_pRead(pZip->
m_pIO_opaque, cur_file_ofs, pBuf, (
size_t)needed_size) != needed_size)
4447 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4465read_buf_size = read_buf_avail = file_stat.
m_comp_size;
4468 else if(pUser_read_buf)
4471 if(!user_read_buf_size)
4473pRead_buf = (
mz_uint8*)pUser_read_buf;
4474read_buf_size = user_read_buf_size;
4482 if(((
sizeof(
size_t) ==
sizeof(
mz_uint32))) && (read_buf_size > 0x7FFFFFFF))
4495 size_tin_buf_size, out_buf_size = (size_t)(file_stat.
m_uncomp_size- out_buf_ofs);
4498read_buf_avail =
MZ_MIN(read_buf_size, comp_remaining);
4499 if(pZip->
m_pRead(pZip->
m_pIO_opaque, cur_file_ofs, pRead_buf, (
size_t)read_buf_avail) != read_buf_avail)
4505cur_file_ofs += read_buf_avail;
4506comp_remaining -= read_buf_avail;
4509in_buf_size = (size_t)read_buf_avail;
4511read_buf_avail -= in_buf_size;
4512read_buf_ofs += in_buf_size;
4513out_buf_ofs += out_buf_size;
4524 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4559 mz_uint64comp_size, uncomp_size, alloc_size;
4576 if(((
sizeof(
size_t) ==
sizeof(
mz_uint32))) && (alloc_size > 0x7FFFFFFF))
4595*pSize = (size_t)alloc_size;
4614 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4617 mz_uint64read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs;
4619 void*pRead_buf =
NULL;
4620 void*pWrite_buf =
NULL;
4624 if((!pZip) || (!pZip->
m_pState) || (!pCallback) || (!pZip->
m_pRead))
4658read_buf_size = read_buf_avail = file_stat.
m_comp_size;
4679 if(pCallback(pOpaque, out_buf_ofs, pRead_buf, (
size_t)file_stat.
m_comp_size) != file_stat.
m_comp_size)
4686 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4697 while(comp_remaining)
4699read_buf_avail =
MZ_MIN(read_buf_size, comp_remaining);
4700 if(pZip->
m_pRead(pZip->
m_pIO_opaque, cur_file_ofs, pRead_buf, (
size_t)read_buf_avail) != read_buf_avail)
4707 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4714 if(pCallback(pOpaque, out_buf_ofs, pRead_buf, (
size_t)read_buf_avail) != read_buf_avail)
4721cur_file_ofs += read_buf_avail;
4722out_buf_ofs += read_buf_avail;
4723comp_remaining -= read_buf_avail;
4745read_buf_avail =
MZ_MIN(read_buf_size, comp_remaining);
4746 if(pZip->
m_pRead(pZip->
m_pIO_opaque, cur_file_ofs, pRead_buf, (
size_t)read_buf_avail) != read_buf_avail)
4752cur_file_ofs += read_buf_avail;
4753comp_remaining -= read_buf_avail;
4757in_buf_size = (size_t)read_buf_avail;
4759read_buf_avail -= in_buf_size;
4760read_buf_ofs += in_buf_size;
4764 if(pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size)
4771 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4774 if((out_buf_ofs += out_buf_size) > file_stat.
m_uncomp_size)
4793 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4794 else if(file_crc32 != file_stat.
m_crc32)
4827 if((!pZip) || (!pZip->
m_pState))
4862pState->
pZip= pZip;
4867 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 4962 size_tcopied_to_caller = 0;
4965 if((!pState) || (!pState->
pZip) || (!pState->
pZip->
m_pState) || (!pvBuf))
4977memcpy( pvBuf, pState->
pRead_buf, copied_to_caller );
4988copied_to_caller = 0;
4992 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 5049memcpy( (
uint8_t*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy );
5051 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 5068copied_to_caller += to_copy;
5074 returncopied_to_caller;
5094 #ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS 5110status = pState->
status;
5118 #ifndef MINIZ_NO_STDIO 5138pFile =
MZ_FOPEN(pDst_filename,
"wb");
5152 #if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) 5204 const mz_uint8*pCentral_dir_header;
5210 mz_uint32local_header_filename_len, local_header_extra_len, local_header_crc32;
5211 mz_uint64local_header_comp_size, local_header_uncomp_size;
5261has_data_descriptor = (local_header_bit_flags & 8) != 0;
5263 if(local_header_filename_len != strlen(file_stat.
m_filename))
5272 gotohandle_failure;
5275 if(local_header_filename_len)
5280 gotohandle_failure;
5284 if(memcmp(file_stat.
m_filename, file_data_array.
m_p, local_header_filename_len) != 0)
5287 gotohandle_failure;
5291 if((local_header_extra_len) && ((local_header_comp_size ==
MZ_UINT32_MAX) || (local_header_uncomp_size ==
MZ_UINT32_MAX)))
5293 mz_uint32extra_size_remaining = local_header_extra_len;
5299 gotohandle_failure;
5304 mz_uint32field_id, field_data_size, field_total_size;
5306 if(extra_size_remaining < (
sizeof(
mz_uint16) * 2))
5309 gotohandle_failure;
5314field_total_size = field_data_size +
sizeof(
mz_uint16) * 2;
5316 if(field_total_size > extra_size_remaining)
5319 gotohandle_failure;
5326 if(field_data_size <
sizeof(
mz_uint64) * 2)
5329 gotohandle_failure;
5332local_header_uncomp_size =
MZ_READ_LE64(pSrc_field_data);
5335found_zip64_ext_data_in_ldir =
MZ_TRUE;
5339pExtra_data += field_total_size;
5340extra_size_remaining -= field_total_size;
5341}
while(extra_size_remaining);
5346 if((has_data_descriptor) && (!local_header_comp_size) && (!local_header_crc32))
5352 mz_uint64comp_size = 0, uncomp_size = 0;
5354 mz_uint32num_descriptor_uint32s = ((pState->
m_zip64) || (found_zip64_ext_data_in_ldir)) ? 6 : 4;
5359 gotohandle_failure;
5363pSrc = has_id ? (descriptor_buf +
sizeof(
mz_uint32)) : descriptor_buf;
5367 if((pState->
m_zip64) || (found_zip64_ext_data_in_ldir))
5381 gotohandle_failure;
5386 if((local_header_crc32 != file_stat.
m_crc32) || (local_header_comp_size != file_stat.
m_comp_size) || (local_header_uncomp_size != file_stat.
m_uncomp_size))
5389 gotohandle_failure;
5401 if(uncomp_crc32 != file_stat.
m_crc32)
5457 if(found_index !=
i)
5474 if((!pMem) || (!
size))
5509 #ifndef MINIZ_NO_STDIO 5554 #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS 5574 #define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v)) 5575 #define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v)) 5576 #define MZ_WRITE_LE64(p, v) mz_write_le64((mz_uint8 *)(p), (mz_uint64)(v)) 5588 if((
sizeof(
size_t) ==
sizeof(
mz_uint32)) && (new_size > 0x7FFFFFFF))
5599 while(new_capacity < new_size)
5608pState->
m_pMem= pNew_block;
5634 #ifndef MINIZ_NO_STDIO 5731 if(0 != (initial_allocation_size =
MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning)))
5749 #ifndef MINIZ_NO_STDIO 5798 if(size_to_reserve_at_beginning)
5807 size_t n= (size_t)
MZ_MIN(
sizeof(
buf), size_to_reserve_at_beginning);
5814size_to_reserve_at_beginning -=
n;
5815}
while(size_to_reserve_at_beginning);
5875 #ifdef MINIZ_NO_STDIO 5900 else if(pState->
m_pMem)
5958 #define MZ_ZIP64_MAX_LOCAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 2) 5959 #define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 3) 5983 if(pLocal_header_ofs)
5995 static mz_bool mz_zip_writer_create_local_dir_header(
mz_zip_archive*pZip,
mz_uint8*pDst,
mz_uint16filename_size,
mz_uint16extra_size,
mz_uint64uncomp_size,
mz_uint64comp_size,
mz_uint32uncomp_crc32,
mz_uint16method,
mz_uint16bit_flags,
mz_uint16dos_time,
mz_uint16dos_date)
6039 const void*pExtra,
mz_uint16extra_size,
const void*pComment,
mz_uint16comment_size,
6043 const char*user_extra_data,
mz_uintuser_extra_data_len)
6052 if(local_header_ofs > 0xFFFFFFFF)
6060 if(!
mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, (
mz_uint16)(extra_size + user_extra_data_len), comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes))
6081 if(*pArchive_name ==
'/')
6117 return mz_zip_writer_add_mem_ex_v2(pZip, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, uncomp_size, uncomp_crc32,
NULL,
NULL, 0,
NULL, 0);
6122 const char*user_extra_data,
mz_uintuser_extra_data_len,
const char*user_extra_data_central,
mz_uintuser_extra_data_central_len)
6124 mz_uint16method = 0, dos_time = 0, dos_date = 0;
6125 mz_uintlevel, ext_attributes = 0, num_alignment_padding_bytes;
6127 size_tarchive_name_size;
6130 mz_boolstore_data_uncompressed;
6137 if((
int)level_and_flags < 0)
6146level = level_and_flags & 0xF;
6166 if((buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF))
6179 #ifndef MINIZ_NO_TIME 6180 if(last_modified !=
NULL)
6195uncomp_size = buf_size;
6196 if(uncomp_size <= 3)
6199store_data_uncompressed =
MZ_TRUE;
6203archive_name_size = strlen(pArchive_name);
6226 if((archive_name_size) && (pArchive_name[archive_name_size - 1] ==
'/'))
6232 if((buf_size) || (uncomp_size))
6240 if((!store_data_uncompressed) && (buf_size))
6252local_dir_header_ofs += num_alignment_padding_bytes;
6257cur_archive_file_ofs += num_alignment_padding_bytes;
6270pExtra_data = extra_data;
6275 if(!
mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (
mz_uint16)archive_name_size, (
mz_uint16)(extra_size + user_extra_data_len), 0, 0, 0, method, bit_flags, dos_time, dos_date))
6278 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, local_dir_header_ofs, local_dir_header,
sizeof(local_dir_header)) !=
sizeof(local_dir_header))
6281cur_archive_file_ofs +=
sizeof(local_dir_header);
6283 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)
6288cur_archive_file_ofs += archive_name_size;
6290 if(pExtra_data !=
NULL)
6292 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size)
6295cur_archive_file_ofs += extra_size;
6302 if(!
mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (
mz_uint16)archive_name_size, (
mz_uint16)user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date))
6305 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, local_dir_header_ofs, local_dir_header,
sizeof(local_dir_header)) !=
sizeof(local_dir_header))
6308cur_archive_file_ofs +=
sizeof(local_dir_header);
6310 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)
6315cur_archive_file_ofs += archive_name_size;
6318 if(user_extra_data_len > 0)
6320 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len)
6323cur_archive_file_ofs += user_extra_data_len;
6326 if(store_data_uncompressed)
6334cur_archive_file_ofs += buf_size;
6335comp_size = buf_size;
6341 state.m_pZip = pZip;
6342 state.m_cur_archive_file_ofs = cur_archive_file_ofs;
6343 state.m_comp_size = 0;
6352comp_size =
state.m_comp_size;
6353cur_archive_file_ofs =
state.m_cur_archive_file_ofs;
6368 if(pExtra_data ==
NULL)
6383 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size)
6386cur_archive_file_ofs += local_dir_footer_size;
6389 if(pExtra_data !=
NULL)
6396comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes,
6397user_extra_data_central, user_extra_data_central_len))
6407 const char*user_extra_data,
mz_uintuser_extra_data_len,
const char*user_extra_data_central,
mz_uintuser_extra_data_central_len)
6411 mz_uint16method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0;
6412 mz_uint64local_dir_header_ofs, cur_archive_file_ofs = pZip->
m_archive_size, uncomp_size = 0, comp_size = 0;
6413 size_tarchive_name_size;
6419 mz_uint64file_ofs = 0, cur_archive_header_file_ofs;
6424 if((
int)level_and_flags < 0)
6426level = level_and_flags & 0xF;
6462archive_name_size = strlen(pArchive_name);
6484 #ifndef MINIZ_NO_TIME 6499cur_archive_file_ofs += num_alignment_padding_bytes;
6500local_dir_header_ofs = cur_archive_file_ofs;
6507 if(max_size && level)
6517pExtra_data = extra_data;
6528 if(!
mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (
mz_uint16)archive_name_size, (
mz_uint16)(extra_size + user_extra_data_len), 0, 0, 0, method, gen_flags, dos_time, dos_date))
6531 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, local_dir_header,
sizeof(local_dir_header)) !=
sizeof(local_dir_header))
6534cur_archive_file_ofs +=
sizeof(local_dir_header);
6536 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)
6541cur_archive_file_ofs += archive_name_size;
6543 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size)
6546cur_archive_file_ofs += extra_size;
6552 if(!
mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (
mz_uint16)archive_name_size, (
mz_uint16)user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date))
6555 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, local_dir_header,
sizeof(local_dir_header)) !=
sizeof(local_dir_header))
6558cur_archive_file_ofs +=
sizeof(local_dir_header);
6560 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)
6565cur_archive_file_ofs += archive_name_size;
6568 if(user_extra_data_len > 0)
6570 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len)
6573cur_archive_file_ofs += user_extra_data_len;
6604cur_archive_file_ofs +=
n;
6606uncomp_size = file_ofs;
6607comp_size = uncomp_size;
6620 state.m_pZip = pZip;
6621 state.m_cur_archive_file_ofs = cur_archive_file_ofs;
6622 state.m_comp_size = 0;
6673uncomp_size = file_ofs;
6674comp_size =
state.m_comp_size;
6675cur_archive_file_ofs =
state.m_cur_archive_file_ofs;
6688 if(pExtra_data ==
NULL)
6703 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size)
6706cur_archive_file_ofs += local_dir_footer_size;
6711 if(pExtra_data !=
NULL)
6721uncomp_crc32, method, gen_flags, dos_time, dos_date))
6724cur_archive_header_file_ofs = local_dir_header_ofs;
6726 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_header_file_ofs, local_dir_header,
sizeof(local_dir_header)) !=
sizeof(local_dir_header))
6729 if(pExtra_data !=
NULL)
6731cur_archive_header_file_ofs +=
sizeof(local_dir_header);
6733 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_header_file_ofs, pArchive_name, archive_name_size) != archive_name_size)
6738cur_archive_header_file_ofs += archive_name_size;
6740 if(pZip->
m_pWrite(pZip->
m_pIO_opaque, cur_archive_header_file_ofs, extra_data, extra_size) != extra_size)
6743cur_archive_header_file_ofs += extra_size;
6747 if(pExtra_data !=
NULL)
6754uncomp_size, comp_size, uncomp_crc32, method, gen_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes,
6755user_extra_data_central, user_extra_data_central_len))
6764 #ifndef MINIZ_NO_STDIO 6774 return MZ_FREAD(pBuf, 1,
n, pSrc_file);
6778 const char*user_extra_data,
mz_uintuser_extra_data_len,
const char*user_extra_data_central,
mz_uintuser_extra_data_central_len)
6781user_extra_data, user_extra_data_len, user_extra_data_central, user_extra_data_central_len);
6792memset(&file_modified_time, 0,
sizeof(file_modified_time));
6794 #if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) 6795pFile_time = &file_modified_time;
6800pSrc_file =
MZ_FOPEN(pSrc_filename,
"rb");
6808status =
mz_zip_writer_add_cfile(pZip, pArchive_name, pSrc_file, uncomp_size, pFile_time, pComment, comment_size, level_and_flags,
NULL, 0,
NULL, 0);
6824 if((pUncomp_size) || (pComp_size) || (pLocal_header_ofs) || (pDisk_start))
6844 if(pLocal_header_ofs)
6862 if((pExt) && (ext_len))
6864 mz_uint32extra_size_remaining = ext_len;
6865 const mz_uint8*pExtra_data = pExt;
6869 mz_uint32field_id, field_data_size, field_total_size;
6871 if(extra_size_remaining < (
sizeof(
mz_uint16) * 2))
6876field_total_size = field_data_size +
sizeof(
mz_uint16) * 2;
6878 if(field_total_size > extra_size_remaining)
6887pExtra_data += field_total_size;
6888extra_size_remaining -= field_total_size;
6889}
while(extra_size_remaining);
6898 mz_uint n, bit_flags, num_alignment_padding_bytes, src_central_dir_following_data_size;
6899 mz_uint64src_archive_bytes_remaining, local_dir_header_ofs;
6900 mz_uint64cur_src_file_ofs, cur_dst_file_ofs;
6904 size_torig_central_dir_size;
6907 const mz_uint8*pSrc_central_header;
6909 mz_uint32src_filename_len, src_comment_len, src_ext_len;
6910 mz_uint32local_header_filename_size, local_header_extra_len;
6911 mz_uint64local_header_comp_size, local_header_uncomp_size;
6934src_central_dir_following_data_size = src_filename_len + src_ext_len + src_comment_len;
6974src_archive_bytes_remaining = local_header_filename_size + local_header_extra_len + src_file_stat.
m_comp_size;
6977 if((local_header_extra_len) && ((local_header_comp_size ==
MZ_UINT32_MAX) || (local_header_uncomp_size ==
MZ_UINT32_MAX)))
6981 mz_uint32extra_size_remaining = local_header_extra_len;
6995pExtra_data = (
const mz_uint8*)file_data_array.
m_p;
6999 mz_uint32field_id, field_data_size, field_total_size;
7001 if(extra_size_remaining < (
sizeof(
mz_uint16) * 2))
7009field_total_size = field_data_size +
sizeof(
mz_uint16) * 2;
7011 if(field_total_size > extra_size_remaining)
7021 if(field_data_size <
sizeof(
mz_uint64) * 2)
7027local_header_uncomp_size =
MZ_READ_LE64(pSrc_field_data);
7030found_zip64_ext_data_in_ldir =
MZ_TRUE;
7034pExtra_data += field_total_size;
7035extra_size_remaining -= field_total_size;
7036}
while(extra_size_remaining);
7041 if(!pState->m_zip64)
7056cur_dst_file_ofs += num_alignment_padding_bytes;
7058local_dir_header_ofs = cur_dst_file_ofs;
7059 if(pZip->m_file_offset_alignment)
7061 MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0);
7074 while(src_archive_bytes_remaining)
7077 if(pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf,
n) !=
n)
7079pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7082cur_src_file_ofs +=
n;
7084 if(pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf,
n) !=
n)
7086pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7089cur_dst_file_ofs +=
n;
7091src_archive_bytes_remaining -=
n;
7099 if((pSource_zip->m_pState->m_zip64) || (found_zip64_ext_data_in_ldir))
7108 if(pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, (
sizeof(
mz_uint32) * 6)) != (
sizeof(
mz_uint32) * 6))
7110pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7121 if(pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf,
sizeof(
mz_uint32) * 4) !=
sizeof(
mz_uint32) * 4)
7123pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7129 if(pZip->m_pState->m_zip64)
7133 const mz_uint32src_crc32 = pSrc_descriptor[0];
7134 const mz_uint64src_comp_size = pSrc_descriptor[1];
7135 const mz_uint64src_uncomp_size = pSrc_descriptor[2];
7151 if(pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf,
n) !=
n)
7153pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7157cur_src_file_ofs +=
n;
7158cur_dst_file_ofs +=
n;
7160pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
7163orig_central_dir_size = pState->m_central_dir.m_size;
7167 if(pState->m_zip64)
7252pZip->m_total_files++;
7253pZip->m_archive_size = cur_dst_file_ofs;
7261 mz_uint64central_dir_ofs, central_dir_size;
7280central_dir_ofs = 0;
7281central_dir_size = 0;
7335 #ifndef MINIZ_NO_STDIO 7348 if((!ppBuf) || (!pSize))
7354 if((!pZip) || (!pZip->
m_pState))
7376 #ifndef MINIZ_NO_STDIO 7390 if((
int)level_and_flags < 0)
7393 if((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) >
MZ_UBER_COMPRESSION))
7419created_new_archive =
MZ_TRUE;
7442status =
mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0);
7462 if((!status) && (created_new_archive))
7466(void)ignoredStatus;
7484 if((!pZip_filename) || (!pArchive_name))
7581 return "undefined error";
7583 return "too many files";
7585 return "file too large";
7587 return "unsupported method";
7589 return "unsupported encryption";
7591 return "unsupported feature";
7593 return "failed finding central directory";
7595 return "not a ZIP archive";
7597 return "invalid header or archive is corrupted";
7599 return "unsupported multidisk archive";
7601 return "decompression failed or archive is corrupted";
7603 return "compression failed";
7605 return "unexpected decompressed size";
7607 return "CRC-32 check failed";
7609 return "unsupported central directory size";
7611 return "allocation failed";
7613 return "file open failed";
7615 return "file create failed";
7617 return "file write failed";
7619 return "file read failed";
7621 return "file close failed";
7623 return "file seek failed";
7625 return "file stat failed";
7627 return "invalid parameter";
7629 return "invalid filename";
7631 return "buffer too small";
7633 return "internal error";
7635 return "file not found";
7637 return "archive is too large";
7639 return "validation failed";
7641 return "write calledback failed";
7646 return "unknown error";
7652 if((!pZip) || (!pZip->
m_pState))
7660 if((!pZip) || (!pZip->
m_pState))
7680 if((!pZip) || (!pZip->
m_pState))
7687 if((!pZip) || (!pZip->
m_pState))
7706 if(filename_buf_size)
7707pFilename[0] =
'\0';
7712 if(filename_buf_size)
7714 n=
MZ_MIN(
n, filename_buf_size - 1);
7716pFilename[
n] =
'\0';
7733 #ifndef MINIZ_NO_ARCHIVE_WRITING_APISstatic DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
strategy
Block allocation strategies.
unsigned int
A callback function used to compare two keys in a database.
for(len=0;yy_str[len];++len)
if(yy_accept[yy_current_state])
mz_zip_reader_extract_iter_state * mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags)
static tdefl_sym_freq * tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *pSyms0, tdefl_sym_freq *pSyms1)
#define MZ_WRITE_LE32(p, v)
void * tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out)
mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len)
static mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes, const char *user_extra_data, mz_uint user_extra_data_len)
mz_bool mz_zip_is_zip64(mz_zip_archive *pZip)
static const mz_uint8 s_tdefl_len_extra[256]
mz_bool mz_zip_reader_end(mz_zip_archive *pZip)
mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags)
mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)
mz_zip_type mz_zip_get_type(mz_zip_archive *pZip)
static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)
mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)
static const mz_uint16 s_tdefl_len_sym[256]
mz_bool mz_zip_end(mz_zip_archive *pZip)
static int tdefl_flush_block(tdefl_compressor *d, int flush)
mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip)
mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning)
#define MZ_WRITE_LE16(p, v)
mz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pArchive_name, mz_file_read_func read_callback, void *callback_opaque, mz_uint64 max_size, const time_t *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)
static void mz_zip_array_init(mz_zip_array *pArray, mz_uint32 element_size)
static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip)
static void tdefl_start_dynamic_block(tdefl_compressor *d)
mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags)
static void mz_write_le64(mz_uint8 *p, mz_uint64 v)
#define TINFL_GET_BYTE(state_index, c)
#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size)
@ TDEFL_MAX_SUPPORTED_HUFF_CODESIZE
static mz_bool mz_zip_writer_end_internal(mz_zip_archive *pZip, mz_bool set_last_error)
size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip)
static int mz_zip_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len)
static mz_bool mz_zip_file_stat_internal(mz_zip_archive *pZip, mz_uint file_index, const mz_uint8 *pCentral_dir_header, mz_zip_archive_file_stat *pStat, mz_bool *pFound_zip64_extra_data)
void * tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)
mz_uint32 tdefl_get_adler32(tdefl_compressor *d)
mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)
static mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index)
#define TDEFL_RLE_ZERO_CODE_SIZE()
static void mz_write_le32(mz_uint8 *p, mz_uint32 v)
static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip, mz_uint32 record_sig, mz_uint32 record_size, mz_int64 *pOfs)
mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)
size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)
mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip)
#define MZ_FREOPEN(f, m, s)
static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n)
static const mz_uint8 s_tdefl_small_dist_sym[512]
tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)
static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)
@ MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS
@ MZ_ZIP_CDH_FILENAME_LEN_OFS
@ MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR
@ MZ_ZIP_LOCAL_DIR_HEADER_SIG
@ MZ_ZIP_CDH_FILE_DATE_OFS
@ MZ_ZIP_LDH_BIT_FLAG_OFS
@ MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS
@ MZ_ZIP_CDH_VERSION_NEEDED_OFS
@ MZ_ZIP_DATA_DESCRIPTER_SIZE64
@ MZ_ZIP_CDH_LOCAL_HEADER_OFS
@ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG
@ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8
@ MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS
@ MZ_ZIP_CDH_COMPRESSED_SIZE_OFS
@ MZ_ZIP_DATA_DESCRIPTER_SIZE32
@ MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS
@ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG
@ MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS
@ MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS
@ MZ_ZIP_ECDH_CDIR_SIZE_OFS
@ MZ_ZIP_LDH_FILENAME_LEN_OFS
@ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE
@ MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG
@ MZ_ZIP_LDH_FILE_TIME_OFS
@ MZ_ZIP64_ECDH_VERSION_NEEDED_OFS
@ MZ_ZIP_CDH_EXTRA_LEN_OFS
@ MZ_ZIP_LDH_FILE_DATE_OFS
@ MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS
@ MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS
@ MZ_ZIP_LDH_COMPRESSED_SIZE_OFS
@ MZ_ZIP_CDH_FILE_TIME_OFS
@ MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID
@ MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS
@ MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID
@ MZ_ZIP_CENTRAL_DIR_HEADER_SIG
@ MZ_ZIP_ECDH_COMMENT_SIZE_OFS
@ MZ_ZIP64_ECDH_CDIR_SIZE_OFS
@ MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS
@ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION
@ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG
@ MZ_ZIP_CDH_DISK_START_OFS
@ MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS
@ MZ_ZIP_CDH_INTERNAL_ATTR_OFS
@ MZ_ZIP_LDH_VERSION_NEEDED_OFS
@ MZ_ZIP_ECDH_CDIR_OFS_OFS
@ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG
@ MZ_ZIP_LDH_EXTRA_LEN_OFS
@ MZ_ZIP_CDH_EXTERNAL_ATTR_OFS
@ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED
@ MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS
@ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE
@ MZ_ZIP_LOCAL_DIR_HEADER_SIZE
@ MZ_ZIP64_ECDH_CDIR_OFS_OFS
@ MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS
@ MZ_ZIP_CDH_BIT_FLAG_OFS
@ MZ_ZIP_CDH_COMMENT_LEN_OFS
@ MZ_ZIP_CENTRAL_DIR_HEADER_SIZE
@ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE
@ MZ_ZIP_DATA_DESCRIPTOR_ID
@ MZ_ZIP_CDH_VERSION_MADE_BY_OFS
@ MZ_ZIP_ECDH_NUM_THIS_DISK_OFS
@ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED
@ MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS
const char * mz_version(void)
size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n)
int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)
mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags)
static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)
mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index)
static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser)
mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr)
mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)
unsigned char mz_validate_uint32[sizeof(mz_uint32)==4 ? 1 :-1]
mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32)
#define TINFL_MEMCPY(d, s, l)
static mz_bool mz_zip_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags)
#define TINFL_GET_BITS(state_index, b, n)
mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *pIndex)
mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, FILE *pFile, mz_uint flags)
static const mz_uint8 s_tdefl_small_dist_extra[512]
tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d)
mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size)
static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags)
mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, time_t *last_modified, const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)
static mz_uint mz_zip_array_range_check(const mz_zip_array *pArray, mz_uint index)
static mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error)
mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip)
mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags)
#define TINFL_HUFF_DECODE(state_index, sym, pHuff)
void * miniz_def_alloc_func(void *opaque, size_t items, size_t size)
static time_t mz_zip_dos_to_time_t(int dos_time, int dos_date)
mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip)
mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags)
tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush)
mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)
mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr)
static const mz_uint8 s_tdefl_large_dist_extra[128]
void * tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip)
static void mz_zip_time_t_to_dos_time(time_t time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date)
tinfl_decompressor * tinfl_decompressor_alloc()
static const mz_uint s_tdefl_num_probes[11]
mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags)
static mz_bool tdefl_compress_normal(tdefl_compressor *d)
mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, FILE *pFile, mz_uint flags)
static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n)
static void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist)
const char * mz_zip_get_error_string(mz_zip_error mz_err)
static mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing)
mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, FILE *pSrc_file, mz_uint64 max_size, const time_t *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)
mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, FILE *pFile, mz_uint64 archive_size, mz_uint flags)
void * mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags)
void miniz_def_free_func(void *opaque, void *address)
static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size)
static mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n)
static void tdefl_start_static_block(tdefl_compressor *d)
static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flags)
mz_bool mz_zip_writer_end(mz_zip_archive *pZip)
static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes)
#define TINFL_MEMSET(p, c, l)
mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)
static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)
int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags)
tdefl_compressor * tdefl_compressor_alloc()
mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index)
mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size)
mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len)
void mz_zip_zero_struct(mz_zip_archive *pZip)
static mz_uint32 mz_zip_writer_create_zip64_extra_data(mz_uint8 *pBuf, mz_uint64 *pUncomp_size, mz_uint64 *pComp_size, mz_uint64 *pLocal_header_ofs)
static void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len)
mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, FILE *pFile, mz_uint flags)
mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip)
size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state *pState, void *pvBuf, size_t buf_size)
static mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip)
static void mz_write_le16(mz_uint8 *p, mz_uint16 v)
void * mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr)
static mz_bool mz_zip_writer_add_put_buf_callback(const void *pBuf, int len, void *pUser)
static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name)
static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)
mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index)
mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index)
static void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit)
mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags)
#define TINFL_CR_RETURN(state_index, result)
#define TINFL_CR_RETURN_FOREVER(state_index, result)
static const mz_uint8 * mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index)
mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num)
#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE
mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat)
mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags)
static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename, mz_uint32 *pIndex)
mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size)
void tdefl_compressor_free(tdefl_compressor *pComp)
mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip)
static mz_bool mz_zip_set_error(mz_zip_archive *pZip, mz_zip_error err_num)
unsigned char mz_validate_uint64[sizeof(mz_uint64)==8 ? 1 :-1]
mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags)
static const mz_uint mz_bitmasks[17]
mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags)
#define MZ_FILE_STAT_STRUCT
static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[]
static void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray)
void * mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags)
static mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n)
mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)
static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n)
size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)
tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags)
#define MZ_SWAP_UINT32(a, b)
static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table)
static const mz_uint8 s_tdefl_large_dist_sym[128]
static mz_bool mz_zip_get_file_modified_time(const char *pFilename, time_t *pTime)
mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr)
mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags)
mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy)
static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block)
static size_t mz_zip_compute_crc32_callback(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)
#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index)
static mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, uint32_t ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start)
mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state *pState)
static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time, time_t modified_time)
static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date)
mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize)
static mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing)
unsigned char mz_validate_uint16[sizeof(mz_uint16)==2 ? 1 :-1]
void * miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size)
#define MZ_WRITE_LE64(p, v)
mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags)
tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush)
mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename)
static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing)
void * mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags)
mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip)
#define TINFL_SKIP_BITS(state_index, n)
FILE * mz_zip_get_cfile(mz_zip_archive *pZip)
#define TDEFL_RLE_PREV_CODE_SIZE()
mz_zip_reader_extract_iter_state * mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags)
mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags)
mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags)
mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size)
static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d)
void tinfl_decompressor_free(tinfl_decompressor *pDecomp)
#define TDEFL_PUT_BITS(b, l)
void * tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)
static size_t mz_file_read_func_stdio(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)
@ MZ_ZIP_FLAG_ASCII_FILENAME
@ MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE
@ MZ_ZIP_FLAG_WRITE_ZIP64
@ MZ_ZIP_FLAG_WRITE_ALLOW_READING
@ MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY
@ MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG
@ MZ_ZIP_FLAG_COMPRESSED_DATA
@ MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY
@ MZ_ZIP_FLAG_CASE_SENSITIVE
@ MZ_ZIP_FLAG_IGNORE_PATH
int mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong *pSource_len)
size_t(* mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)
int mz_deflateReset(mz_streamp pStream)
int mz_inflateInit(mz_streamp pStream)
int mz_inflate(mz_streamp pStream, int flush)
int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)
mz_ulong mz_compressBound(mz_ulong source_len)
@ TDEFL_MAX_HUFF_SYMBOLS_0
@ TDEFL_LZ_DICT_SIZE_MASK
@ TDEFL_MAX_HUFF_SYMBOLS_1
@ TDEFL_MAX_HUFF_SYMBOLS_2
int mz_deflateEnd(mz_streamp pStream)
@ TINFL_STATUS_ADLER32_MISMATCH
@ TINFL_STATUS_NEEDS_MORE_INPUT
@ TINFL_STATUS_HAS_MORE_OUTPUT
@ TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS
#define TINFL_LZ_DICT_SIZE
#define MZ_CLEAR_OBJ(obj)
@ TDEFL_FORCE_ALL_RAW_BLOCKS
@ TDEFL_GREEDY_PARSING_FLAG
@ TDEFL_FORCE_ALL_STATIC_BLOCKS
@ TDEFL_WRITE_ZLIB_HEADER
@ TDEFL_NONDETERMINISTIC_PARSING_FLAG
int(* tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser)
#define tinfl_get_adler32(r)
@ TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF
@ TINFL_FLAG_HAS_MORE_INPUT
@ TINFL_FLAG_COMPUTE_ADLER32
@ TINFL_FLAG_PARSE_ZLIB_HEADER
#define MZ_DEFAULT_WINDOW_BITS
int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy)
int mz_deflateInit(mz_streamp pStream, int level)
int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level)
int mz_inflateReset(mz_streamp pStream)
size_t(* mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)
@ TDEFL_LEVEL1_HASH_SIZE_MASK
@ MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE
@ MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE
int mz_inflateInit2(mz_streamp pStream, int window_bits)
int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)
int mz_inflateEnd(mz_streamp pStream)
int mz_deflate(mz_streamp pStream, int flush)
#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED
@ TDEFL_STATUS_PUT_BUF_FAILED
const char * mz_error(int err)
mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len)
@ MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED
mz_bool(* tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser)
@ MZ_ZIP_UNSUPPORTED_METHOD
@ MZ_ZIP_UNSUPPORTED_FEATURE
@ MZ_ZIP_FILE_OPEN_FAILED
@ MZ_ZIP_WRITE_CALLBACK_FAILED
@ MZ_ZIP_CRC_CHECK_FAILED
@ MZ_ZIP_FILE_CLOSE_FAILED
@ MZ_ZIP_FILE_CREATE_FAILED
@ MZ_ZIP_VALIDATION_FAILED
@ MZ_ZIP_FILE_STAT_FAILED
@ MZ_ZIP_INVALID_FILENAME
@ MZ_ZIP_COMPRESSION_FAILED
@ MZ_ZIP_UNSUPPORTED_ENCRYPTION
@ MZ_ZIP_UNSUPPORTED_MULTIDISK
@ MZ_ZIP_ARCHIVE_TOO_LARGE
@ MZ_ZIP_DECOMPRESSION_FAILED
@ MZ_ZIP_FILE_WRITE_FAILED
@ MZ_ZIP_INVALID_PARAMETER
@ MZ_ZIP_INVALID_HEADER_OR_CORRUPTED
@ MZ_ZIP_UNSUPPORTED_CDIR_SIZE
@ MZ_ZIP_FILE_READ_FAILED
@ MZ_ZIP_FAILED_FINDING_CENTRAL_DIR
@ MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE
@ MZ_ZIP_FILE_SEEK_FAILED
mz_uint32 tinfl_bit_buf_t
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static PCRE2_SIZE * offsets
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
struct mz_internal_state * state
const unsigned char * next_in
mz_uint32 m_external_attr
mz_uint16 m_version_needed
mz_uint16 m_version_made_by
mz_uint64 m_central_dir_ofs
mz_uint64 m_local_header_ofs
mz_uint16 m_internal_attr
char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE]
char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE]
mz_uint64 m_central_directory_file_ofs
mz_zip_error m_last_error
mz_file_needs_keepalive m_pNeeds_keepalive
mz_file_write_func m_pWrite
mz_zip_internal_state * m_pState
mz_realloc_func m_pRealloc
mz_file_read_func m_pRead
mz_uint64 m_file_offset_alignment
mz_bool m_zip64_has_extended_info_fields
mz_zip_array m_sorted_central_dir_offsets
mz_uint64 m_file_archive_start_ofs
mz_zip_array m_central_dir_offsets
mz_zip_array m_central_dir
mz_uint64 m_cur_archive_file_ofs
mz_uint m_saved_match_dist
mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE]
mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]
mz_uint m_output_flush_remaining
mz_uint m_wants_to_finish
tdefl_status m_prev_return_status
mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE+TDEFL_MAX_MATCH_LEN - 1]
tdefl_put_buf_func_ptr m_pPut_buf_func
mz_uint m_output_flush_ofs
mz_uint16 m_next[TDEFL_LZ_DICT_SIZE]
mz_uint8 * m_pOutput_buf_end
mz_uint m_saved_match_len
mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]
mz_uint m_lz_code_buf_dict_pos
mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE]
mz_uint8 * m_pLZ_code_buf
mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]
mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE]
mz_int16 m_tree[TINFL_MAX_HUFF_SYMBOLS_0 *2]
mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0]
mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4