29#pragma warning(disable:4242)
31#pragma warning(disable:4244)
33#pragma warning(disable:4365)
35#pragma warning(disable:4548)
37#pragma warning(disable:4061)
39#pragma warning(disable:4334)
41#pragma warning(disable:5039)
65 for(i = 0; i + 7 <
block_len; i += 8, ptr += 8)
78 s1 %= 65521U,
s2 %= 65521U;
82 return (
s2 << 16) +
s1;
89 static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
90 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c };
110 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535,
111 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD,
112 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D,
113 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
114 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
115 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C,
116 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC,
117 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
118 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB,
119 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,
120 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB,
121 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
122 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA,
123 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE,
124 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,
125 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
126 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409,
127 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81,
128 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739,
129 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
130 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268,
131 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0,
132 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8,
133 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
134 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
135 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703,
136 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7,
137 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
138 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE,
139 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
140 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6,
141 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
142 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D,
143 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5,
144 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,
145 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
146 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
178#ifndef MINIZ_NO_ZLIB_APIS
182 (
void)opaque, (
void)items, (
void)size;
187 (
void)opaque, (
void)address;
192 (
void)opaque, (
void)address, (
void)items, (
void)size;
433 if(
pState->m_window_bits > 0)
439 if(
pState->m_last_status < 0)
453 pState->m_last_status = status;
493 pState->m_last_status = status;
580 {
MZ_OK,
"" }, {
MZ_STREAM_END,
"stream end" }, {
MZ_NEED_DICT,
"need dictionary" }, {
MZ_ERRNO,
"file error" }, {
MZ_STREAM_ERROR,
"stream error" },
660 257, 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,
661 273, 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,
662 277, 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,
663 279, 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,
664 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, 281,
665 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, 282,
666 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, 283,
667 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, 284, 285
672 0, 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,
673 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, 4,
674 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, 5,
675 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, 0
680 0, 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,
681 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, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
682 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, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
683 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, 14,
684 14, 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,
685 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, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
686 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, 16,
687 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, 16,
688 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, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
689 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, 17,
690 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, 17,
691 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
696 0, 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,
697 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, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
698 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, 6,
699 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, 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,
700 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, 7,
701 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, 7,
702 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, 7,
703 7, 7, 7, 7, 7, 7, 7, 7
708 0, 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,
709 26, 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,
710 28, 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
715 0, 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,
716 12, 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,
717 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
742 for(i = 0; i < 256; i++)
769 A[0].m_key +=
A[1].m_key;
772 for(next = 1; next <
n - 1; next++)
774 if(leaf >=
n ||
A[root].m_key <
A[leaf].m_key)
776 A[next].m_key =
A[root].m_key;
780 A[next].m_key =
A[leaf++].m_key;
781 if(leaf >=
n || (root < next &&
A[root].m_key <
A[leaf].m_key))
783 A[next].m_key = (
mz_uint16)(
A[next].m_key +
A[root].m_key);
787 A[next].m_key = (
mz_uint16)(
A[next].m_key +
A[leaf++].m_key);
790 for(next =
n - 3; next >= 0; next--)
791 A[next].m_key =
A[
A[next].m_key].m_key + 1;
798 while(root >= 0 && (
int)
A[root].m_key ==
dpth)
890 for(l =
code_size; l > 0; l--, code >>= 1)
896#define TDEFL_PUT_BITS(b, l) \
901 MZ_ASSERT(bits <= ((1U << len) - 1U)); \
902 d->m_bit_buffer |= (bits << d->m_bits_in); \
903 d->m_bits_in += len; \
904 while(d->m_bits_in >= 8) \
906 if(d->m_pOutput_buf < d->m_pOutput_buf_end) \
907 *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \
908 d->m_bit_buffer >>= 8; \
914#define TDEFL_RLE_PREV_CODE_SIZE() \
916 if(rle_repeat_count) \
918 if(rle_repeat_count < 3) \
920 d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \
921 while(rle_repeat_count--) \
922 packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \
926 d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); \
927 packed_code_sizes[num_packed_code_sizes++] = 16; \
928 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \
930 rle_repeat_count = 0; \
934#define TDEFL_RLE_ZERO_CODE_SIZE() \
938 if(rle_z_count < 3) \
940 d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); \
941 while(rle_z_count--) \
942 packed_code_sizes[num_packed_code_sizes++] = 0; \
944 else if(rle_z_count <= 10) \
946 d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); \
947 packed_code_sizes[num_packed_code_sizes++] = 17; \
948 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \
952 d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); \
953 packed_code_sizes[num_packed_code_sizes++] = 18; \
954 packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \
960static 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 };
1054 for(i = 0; i <= 143; ++i)
1056 for(; i <= 255; ++i)
1058 for(; i <= 279; ++i)
1060 for(; i <= 287; ++i)
1071static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
1073#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES &&MINIZ_LITTLE_ENDIAN &&MINIZ_HAS_64BIT_REGISTERS
1083#define TDEFL_PUT_BITS_FAST(b, l) \
1085 bit_buffer |= (((mz_uint64)(b)) << bits_in); \
1149#undef TDEFL_PUT_BITS_FAST
1298 for(i = 0; i < 4; i++)
1313 for(i = 2; i; --i,
z ^= 0xFFFF)
1360#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES
1361#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16 *)(p)
1377#define TDEFL_PROBE \
1378 next_probe_pos = d->m_next[probe_pos]; \
1379 if((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \
1381 probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \
1382 if(TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) \
1430#define TDEFL_PROBE \
1431 next_probe_pos = d->m_next[probe_pos]; \
1432 if((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \
1434 probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \
1435 if((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) \
1460#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES &&MINIZ_LITTLE_ENDIAN
1874#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES &&MINIZ_LITTLE_ENDIAN
1921 d->
m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3;
2032#ifndef MINIZ_NO_ZLIB_APIS
2033static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };
2058#pragma warning(push)
2059#pragma warning(disable : 4204)
2068 static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };
2089 for(
y = 0;
y <
h; ++
y)
2103 static const mz_uint8 chans[] = { 0x00, 0x00, 0x04, 0x02, 0x06 };
2104 mz_uint8 pnghdr[41] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
2105 0, 0, (
mz_uint8)(
w >> 8), (
mz_uint8)
w, 0, 0, (
mz_uint8)(
h >> 8), (
mz_uint8)
h, 8,
chans[
num_chans], 0, 0, 0, 0, 0, 0, 0,
2108 for(i = 0; i < 4; ++i,
c <<= 8)
2121 for(i = 0; i < 4; ++i,
c <<= 8)
2188#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l)
2189#define TINFL_MEMSET(p, c, l) memset(p, c, l)
2191#define TINFL_CR_BEGIN \
2192 switch(r->m_state) \
2195#define TINFL_CR_RETURN(state_index, result) \
2199 r->m_state = state_index; \
2205#define TINFL_CR_RETURN_FOREVER(state_index, result) \
2210 TINFL_CR_RETURN(state_index, result); \
2214#define TINFL_CR_FINISH }
2216#define TINFL_GET_BYTE(state_index, c) \
2219 while(pIn_buf_cur >= pIn_buf_end) \
2221 TINFL_CR_RETURN(state_index, (decomp_flags &TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \
2223 c = *pIn_buf_cur++; \
2227#define TINFL_NEED_BITS(state_index, n) \
2231 TINFL_GET_BYTE(state_index, c); \
2232 bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \
2234 } while(num_bits < (mz_uint)(n))
2235#define TINFL_SKIP_BITS(state_index, n) \
2238 if(num_bits < (mz_uint)(n)) \
2240 TINFL_NEED_BITS(state_index, n); \
2246#define TINFL_GET_BITS(state_index, b, n) \
2249 if(num_bits < (mz_uint)(n)) \
2251 TINFL_NEED_BITS(state_index, n); \
2253 b = bit_buf & ((1 << (n)) - 1); \
2263#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \
2266 temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \
2269 code_len = temp >> 9; \
2270 if((code_len) && (num_bits >= code_len)) \
2273 else if(num_bits > TINFL_FAST_LOOKUP_BITS) \
2275 code_len = TINFL_FAST_LOOKUP_BITS; \
2278 temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \
2279 } while((temp < 0) && (num_bits >= (code_len + 1))); \
2283 TINFL_GET_BYTE(state_index, c); \
2284 bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \
2286 } while(num_bits < 15);
2294#define TINFL_HUFF_DECODE(state_index, sym, pHuff) \
2298 mz_uint code_len, c; \
2301 if((pIn_buf_end - pIn_buf_cur) < 2) \
2303 TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \
2307 bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \
2312 if((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \
2313 code_len = temp >> 9, temp &= 511; \
2316 code_len = TINFL_FAST_LOOKUP_BITS; \
2319 temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \
2320 } while(temp < 0); \
2323 bit_buf >>= code_len; \
2324 num_bits -= code_len; \
2330 static const int s_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 };
2331 static const int s_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 };
2332 static const int s_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 };
2333 static const int s_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 };
2334 static const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
2351 num_bits =
r->m_num_bits;
2354 counter =
r->m_counter;
2360 r->m_z_adler32 =
r->m_check_adler32 = 1;
2365 counter = (((
r->m_zhdr0 * 256 +
r->m_zhdr1) % 31 != 0) || (
r->m_zhdr1 & 32) || ((
r->m_zhdr0 & 15) != 8));
2367 counter |= (((1U << (8U + (
r->m_zhdr0 >> 4))) > 32768U) || ((
out_buf_size_mask + 1) < (
size_t)(1U << (8U + (
r->m_zhdr0 >> 4)))));
2377 r->m_type =
r->m_final >> 1;
2381 for(counter = 0; counter < 4; ++counter)
2388 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))))
2392 while((counter) && (num_bits))
2420 else if(
r->m_type == 3)
2428 mz_uint8 *p =
r->m_tables[0].m_code_size;
2430 r->m_table_sizes[0] = 288;
2431 r->m_table_sizes[1] = 32;
2433 for(i = 0; i <= 143; ++i)
2435 for(; i <= 255; ++i)
2437 for(; i <= 279; ++i)
2439 for(; i <= 287; ++i)
2444 for(counter = 0; counter < 3; counter++)
2450 for(counter = 0; counter <
r->m_table_sizes[2]; counter++)
2456 r->m_table_sizes[2] = 19;
2458 for(; (
int)
r->m_type >= 0;
r->m_type--)
2467 for(i = 0; i <
r->m_table_sizes[
r->m_type]; ++i)
2471 for(i = 1; i <= 15; ++i)
2522 for(counter = 0; counter < (
r->m_table_sizes[0] +
r->m_table_sizes[1]);)
2531 if((
dist == 16) && (!counter))
2537 s +=
"\03\03\013"[
dist - 16];
2538 TINFL_MEMSET(
r->m_len_codes + counter, (
dist == 16) ?
r->m_len_codes[counter - 1] : 0, s);
2541 if((
r->m_table_sizes[0] +
r->m_table_sizes[1]) != counter)
2545 TINFL_MEMCPY(
r->m_tables[0].m_code_size,
r->m_len_codes,
r->m_table_sizes[0]);
2546 TINFL_MEMCPY(
r->m_tables[1].m_code_size,
r->m_len_codes +
r->m_table_sizes[0],
r->m_table_sizes[1]);
2569#if TINFL_USE_64BIT_BITBUF
2600#if !TINFL_USE_64BIT_BITBUF
2632 if((counter &= 511) == 256)
2674#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES
2675 else if((counter >= 9) && (counter <=
dist))
2684 if((counter &= 7) < 3)
2704 }
while((
int)(counter -= 3) > 2);
2705 if((
int)counter > 0)
2708 if((
int)counter > 1)
2714 }
while(!(
r->m_final & 1));
2729 for(counter = 0; counter < 4; ++counter)
2736 r->m_z_adler32 = (
r->m_z_adler32 << 8) | s;
2755 r->m_num_bits = num_bits;
2758 r->m_counter = counter;
2767 mz_uint32 i,
s1 =
r->m_check_adler32 & 0xffff,
s2 =
r->m_check_adler32 >> 16;
2771 for(i = 0; i + 7 <
block_len; i += 8, ptr += 8)
2784 s1 %= 65521U,
s2 %= 65521U;
2788 r->m_check_adler32 = (
s2 << 16) +
s1;
2922#ifdef MINIZ_NO_STDIO
2923#define MZ_FILE void *
2925#include <sys/stat.h>
2927#if defined(_MSC_VER) || defined(__MINGW64__)
2941#ifndef MINIZ_NO_TIME
2942#include <sys/utime.h>
2944#define MZ_FOPEN mz_fopen
2945#define MZ_FCLOSE fclose
2946#define MZ_FREAD fread
2947#define MZ_FWRITE fwrite
2948#define MZ_FTELL64 _ftelli64
2949#define MZ_FSEEK64 _fseeki64
2950#define MZ_FILE_STAT_STRUCT _stat
2951#define MZ_FILE_STAT _stat
2952#define MZ_FFLUSH fflush
2953#define MZ_FREOPEN mz_freopen
2954#define MZ_DELETE_FILE remove
2955#elif defined(__MINGW32__)
2956#ifndef MINIZ_NO_TIME
2957#include <sys/utime.h>
2959#define MZ_FOPEN(f, m) fopen(f, m)
2960#define MZ_FCLOSE fclose
2961#define MZ_FREAD fread
2962#define MZ_FWRITE fwrite
2963#define MZ_FTELL64 ftello64
2964#define MZ_FSEEK64 fseeko64
2965#define MZ_FILE_STAT_STRUCT _stat
2966#define MZ_FILE_STAT _stat
2967#define MZ_FFLUSH fflush
2968#define MZ_FREOPEN(f, m, s) freopen(f, m, s)
2969#define MZ_DELETE_FILE remove
2970#elif defined(__TINYC__)
2971#ifndef MINIZ_NO_TIME
2972#include <sys/utime.h>
2974#define MZ_FOPEN(f, m) fopen(f, m)
2975#define MZ_FCLOSE fclose
2976#define MZ_FREAD fread
2977#define MZ_FWRITE fwrite
2978#define MZ_FTELL64 ftell
2979#define MZ_FSEEK64 fseek
2980#define MZ_FILE_STAT_STRUCT stat
2981#define MZ_FILE_STAT stat
2982#define MZ_FFLUSH fflush
2983#define MZ_FREOPEN(f, m, s) freopen(f, m, s)
2984#define MZ_DELETE_FILE remove
2985#elif defined(__GNUC__) && _LARGEFILE64_SOURCE
2986#ifndef MINIZ_NO_TIME
2989#define MZ_FOPEN(f, m) fopen64(f, m)
2990#define MZ_FCLOSE fclose
2991#define MZ_FREAD fread
2992#define MZ_FWRITE fwrite
2993#define MZ_FTELL64 ftello64
2994#define MZ_FSEEK64 fseeko64
2995#define MZ_FILE_STAT_STRUCT stat64
2996#define MZ_FILE_STAT stat64
2997#define MZ_FFLUSH fflush
2998#define MZ_FREOPEN(p, m, s) freopen64(p, m, s)
2999#define MZ_DELETE_FILE remove
3000#elif defined(__APPLE__) && _LARGEFILE64_SOURCE
3001#ifndef MINIZ_NO_TIME
3004#define MZ_FOPEN(f, m) fopen(f, m)
3005#define MZ_FCLOSE fclose
3006#define MZ_FREAD fread
3007#define MZ_FWRITE fwrite
3008#define MZ_FTELL64 ftello
3009#define MZ_FSEEK64 fseeko
3010#define MZ_FILE_STAT_STRUCT stat
3011#define MZ_FILE_STAT stat
3012#define MZ_FFLUSH fflush
3013#define MZ_FREOPEN(p, m, s) freopen(p, m, s)
3014#define MZ_DELETE_FILE remove
3017#pragma message("Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.")
3018#ifndef MINIZ_NO_TIME
3021#define MZ_FOPEN(f, m) fopen(f, m)
3022#define MZ_FCLOSE fclose
3023#define MZ_FREAD fread
3024#define MZ_FWRITE fwrite
3025#define MZ_FTELL64 ftello
3026#define MZ_FSEEK64 fseeko
3027#define MZ_FILE_STAT_STRUCT stat
3028#define MZ_FILE_STAT stat
3029#define MZ_FFLUSH fflush
3030#define MZ_FREOPEN(f, m, s) freopen(f, m, s)
3031#define MZ_DELETE_FILE remove
3035#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c))
3158#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size
3160#if defined(DEBUG) || defined(_DEBUG) || defined(NDEBUG)
3166#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)]
3168#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index]
3238#ifndef MINIZ_NO_TIME
3244 tm.tm_year = ((
dos_date >> 9) & 127) + 1980 - 1900;
3273#ifndef MINIZ_NO_STDIO
3291 memset(&t, 0,
sizeof(t));
3317 if(!
pZip->m_pRealloc)
3320 pZip->m_archive_size = 0;
3321 pZip->m_central_directory_file_ofs = 0;
3322 pZip->m_total_files = 0;
3332 pZip->m_pState->m_init_flags = flags;
3334 pZip->m_pState->m_zip64_has_extended_info_fields =
MZ_FALSE;
3360#define MZ_SWAP_UINT32(a, b) \
3384 start = (size - 2U) >> 1U;
3390 if((
child = (root << 1U) + 1U) >= size)
3410 if((
child = (root << 1U) + 1U) >= end)
3441 for(i =
n - 4; i >= 0; --i)
3528 if(
pZip->m_pState->m_zip64)
3580 if(
pZip->m_total_files)
3598 p = (
const mz_uint8 *)
pZip->m_pState->m_central_dir.m_p;
3618 if((!
pZip->m_pState->m_zip64_has_extended_info_fields) &&
3644 pZip->m_pState->m_zip64_has_extended_info_fields =
MZ_TRUE;
3719#ifndef MINIZ_NO_STDIO
3755 pZip->m_archive_size = size;
3786 pZip->m_archive_size = size;
3791 pZip->m_pState->m_pMem =
const_cast<void *
>(
pMem);
3793 pZip->m_pState->m_pMem = (
void *)
pMem;
3796 pZip->m_pState->m_mem_size = size;
3807#ifndef MINIZ_NO_STDIO
4014 if((!p) || (!
pStat))
4024#ifndef MINIZ_NO_TIME
4038 pStat->m_filename[
n] =
'\0';
4042 pStat->m_comment_size =
n;
4044 pStat->m_comment[
n] =
'\0';
4128 for(i = 0; i < len; ++i)
4249 }
while(--
ofs >= 0);
4316#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4330 if(
pZip->m_pState->m_pMem)
4393#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4522 if(
pZip->m_pState->m_pMem)
4541 if(
pZip->m_pState->m_pMem)
4553#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4574#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4638#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4660#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
4669 if(!
pZip->m_pState->m_pMem)
4687#ifndef MINIZ_NO_STDIO
4721#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO)
5000 for(i = 0; i <
pZip->m_total_files; i++)
5031 if((!
pMem) || (!size))
5066#ifndef MINIZ_NO_STDIO
5111#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS
5131#define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v))
5132#define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v))
5133#define MZ_WRITE_LE64(p, v) mz_write_le64((mz_uint8 *)(p), (mz_uint64)(v))
5191#ifndef MINIZ_NO_STDIO
5232 if(
pZip->m_file_offset_alignment)
5235 if(
pZip->m_file_offset_alignment & (
pZip->m_file_offset_alignment - 1))
5243 if(!
pZip->m_pRealloc)
5247 pZip->m_central_directory_file_ofs = 0;
5248 pZip->m_total_files = 0;
5260 pZip->m_pState->m_zip64_has_extended_info_fields =
zip64;
5305#ifndef MINIZ_NO_STDIO
5403 if(!
pZip->m_pState->m_zip64)
5408 if(
pZip->m_pState->m_zip64)
5426#ifdef MINIZ_NO_STDIO
5460 else if(!
pZip->m_pWrite)
5465 pZip->m_archive_size =
pZip->m_central_directory_file_ofs;
5466 pZip->m_central_directory_file_ofs = 0;
5499 if((
int)
pState->m_pZip->m_pWrite(
pState->m_pZip->m_pIO_opaque,
pState->m_cur_archive_file_ofs,
pBuf, len) != len)
5502 pState->m_cur_archive_file_ofs += len;
5503 pState->m_comp_size += len;
5507#define MZ_ZIP64_MAX_LOCAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 2)
5508#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 3)
5545static 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)
5600 if(!
pZip->m_pState->m_zip64)
5610 if(!
mz_zip_writer_create_central_dir_header(
pZip,
central_dir_header,
filename_size,
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))
5648 if(!
pZip->m_file_offset_alignment)
5651 return (
mz_uint)((
pZip->m_file_offset_alignment -
n) & (
pZip->m_file_offset_alignment - 1));
5673 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);
5740#ifndef MINIZ_NO_TIME
5796 if(
pZip->m_file_offset_alignment)
5818 if(!
mz_zip_writer_create_local_dir_header(
pZip,
local_dir_header, (
mz_uint16)
archive_name_size,
extra_size +
user_extra_data_len, 0, 0, 0, method,
bit_flags,
dos_time,
dos_date))
5845 if(!
mz_zip_writer_create_local_dir_header(
pZip,
local_dir_header, (
mz_uint16)
archive_name_size,
user_extra_data_len, 0, 0, 0, method,
bit_flags,
dos_time,
dos_date))
5950 comment_size,
uncomp_size,
comp_size,
uncomp_crc32, method,
bit_flags,
dos_time,
dos_date,
local_dir_header_ofs,
ext_attributes,
5954 pZip->m_total_files++;
5960#ifndef MINIZ_NO_STDIO
6036#ifndef MINIZ_NO_TIME
6054 if(
pZip->m_file_offset_alignment)
6074 if(!
mz_zip_writer_create_local_dir_header(
pZip,
local_dir_header, (
mz_uint16)
archive_name_size,
extra_size +
user_extra_data_len, 0, 0, 0, method,
gen_flags,
dos_time,
dos_date))
6098 if(!
mz_zip_writer_create_local_dir_header(
pZip,
local_dir_header, (
mz_uint16)
archive_name_size,
user_extra_data_len, 0, 0, 0, method,
gen_flags,
dos_time,
dos_date))
6247 pZip->m_total_files++;
6262#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO)
6276 mz_bool status =
mz_zip_writer_add_cfile(
pZip,
pArchive_name,
pSrc_file,
uncomp_size,
pFile_time,
pComment,
comment_size,
level_and_flags,
NULL, 0,
NULL, 0);
6525 if(
pZip->m_file_offset_alignment)
6595 if(
pZip->m_pState->m_zip64)
6718 pZip->m_total_files++;
6748 if(
pZip->m_total_files)
6801#ifndef MINIZ_NO_STDIO
6832 pZip->m_pState->m_mem_size =
pZip->m_pState->m_mem_capacity = 0;
6842#ifndef MINIZ_NO_STDIO
7019 return pZip->m_last_error;
7047 return "undefined error";
7049 return "too many files";
7051 return "file too large";
7053 return "unsupported method";
7055 return "unsupported encryption";
7057 return "unsupported feature";
7059 return "failed finding central directory";
7061 return "not a ZIP archive";
7063 return "invalid header or archive is corrupted";
7065 return "unsupported multidisk archive";
7067 return "decompression failed or archive is corrupted";
7069 return "compression failed";
7071 return "unexpected decompressed size";
7073 return "CRC-32 check failed";
7075 return "unsupported central directory size";
7077 return "allocation failed";
7079 return "file open failed";
7081 return "file create failed";
7083 return "file write failed";
7085 return "file read failed";
7087 return "file close failed";
7089 return "file seek failed";
7091 return "file stat failed";
7093 return "invalid parameter";
7095 return "invalid filename";
7097 return "buffer too small";
7099 return "internal error";
7101 return "file not found";
7103 return "archive is too large";
7105 return "validation failed";
7107 return "write calledback failed";
7113 return "unknown error";
7122 return pZip->m_pState->m_zip64;
7130 return pZip->m_pState->m_central_dir.m_size;
7135 return pZip ?
pZip->m_total_files : 0;
7142 return pZip->m_archive_size;
7149 return pZip->m_pState->m_file_archive_start_ofs;
7156 return pZip->m_pState->m_pFile;
static bool has_id(const jsont &json)
Return true iff the argument has a "@id" key.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
#define MZ_WRITE_LE32(p, v)
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)
void * miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size)
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)
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)
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)
void * tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)
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)
int mz_deflateReset(mz_streamp pStream)
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)
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)
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_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()
mz_ulong mz_compressBound(mz_ulong source_len)
static const mz_uint8 * mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index)
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)
int mz_deflateEnd(mz_streamp pStream)
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)
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)
void * tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)
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)
void * miniz_def_alloc_func(void *opaque, size_t items, size_t size)
#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_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)
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]
static void mz_zip_time_t_to_dos_time(time_t time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date)
static const mz_uint s_tdefl_num_probes[11]
int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy)
mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags)
const char * mz_version(void)
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)
int mz_deflateInit(mz_streamp pStream, int level)
static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n)
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 void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist)
static mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing)
const char * mz_zip_get_error_string(mz_zip_error mz_err)
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)
FILE * mz_zip_get_cfile(mz_zip_archive *pZip)
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)
int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level)
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)
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)
const char * mz_error(int err)
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)
tdefl_compressor * tdefl_compressor_alloc()
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)
int mz_inflateInit2(mz_streamp pStream, int window_bits)
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)
mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num)
int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)
#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE
void * mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags)
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)
@ 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
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]
int mz_inflateEnd(mz_streamp pStream)
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]
void * mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags)
int mz_deflate(mz_streamp pStream, int flush)
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[]
@ TDEFL_MAX_SUPPORTED_HUFF_CODESIZE
static void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray)
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)
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_deflateBound(mz_streamp pStream, mz_ulong source_len)
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)
static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time, time_t modified_time)
tinfl_decompressor * tinfl_decompressor_alloc()
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]
#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)
mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip)
#define TINFL_SKIP_BITS(state_index, n)
#define TDEFL_RLE_PREV_CODE_SIZE()
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)
mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, FILE *pSrc_file, mz_uint64 size_to_add, 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)
#define TDEFL_PUT_BITS(b, l)
static tdefl_sym_freq * tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *pSyms0, tdefl_sym_freq *pSyms1)
@ MZ_ZIP_FLAG_WRITE_ZIP64
@ MZ_ZIP_FLAG_WRITE_ALLOW_READING
@ MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY
@ MZ_ZIP_FLAG_UTF8_FILENAME
@ 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
size_t(* mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)
@ 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)
int(* tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser)
#define tinfl_get_adler32(r)
#define MZ_DEFAULT_WINDOW_BITS
@ TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF
@ TINFL_FLAG_HAS_MORE_INPUT
@ TINFL_FLAG_COMPUTE_ADLER32
@ TINFL_FLAG_PARSE_ZLIB_HEADER
@ TDEFL_LEVEL1_HASH_SIZE_MASK
@ TDEFL_MAX_HUFF_SYMBOLS_0
@ TDEFL_LZ_DICT_SIZE_MASK
@ TDEFL_MAX_HUFF_SYMBOLS_1
@ TDEFL_MAX_HUFF_SYMBOLS_2
@ TDEFL_FORCE_ALL_RAW_BLOCKS
@ TDEFL_GREEDY_PARSING_FLAG
@ TDEFL_FORCE_ALL_STATIC_BLOCKS
@ TDEFL_WRITE_ZLIB_HEADER
@ TDEFL_NONDETERMINISTIC_PARSING_FLAG
#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED
@ TDEFL_STATUS_PUT_BUF_FAILED
@ MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED
mz_bool(* tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser)
@ MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE
@ MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE
@ 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
tinfl_status m_last_status
tinfl_decompressor m_decomp
mz_zip_error m_last_error
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]