zstdlib 0.13.0-x86-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +6 -0
  3. data/CHANGES.md +107 -0
  4. data/Gemfile +3 -0
  5. data/README.md +107 -0
  6. data/Rakefile +59 -0
  7. data/ext/zstdlib_c/extconf.rb +59 -0
  8. data/ext/zstdlib_c/ruby/zlib-2.2/zstdlib.c +4675 -0
  9. data/ext/zstdlib_c/ruby/zlib-2.3/zstdlib.c +4702 -0
  10. data/ext/zstdlib_c/ruby/zlib-2.4/zstdlib.c +4859 -0
  11. data/ext/zstdlib_c/ruby/zlib-2.5/zstdlib.c +4864 -0
  12. data/ext/zstdlib_c/ruby/zlib-2.6/zstdlib.c +4906 -0
  13. data/ext/zstdlib_c/ruby/zlib-2.7/zstdlib.c +4895 -0
  14. data/ext/zstdlib_c/ruby/zlib-3.0/zstdlib.c +4994 -0
  15. data/ext/zstdlib_c/ruby/zlib-3.1/zstdlib.c +5076 -0
  16. data/ext/zstdlib_c/ruby/zlib-3.2/zstdlib.c +5090 -0
  17. data/ext/zstdlib_c/ruby/zlib-3.3/zstdlib.c +5090 -0
  18. data/ext/zstdlib_c/zlib-1.3.1/adler32.c +164 -0
  19. data/ext/zstdlib_c/zlib-1.3.1/compress.c +75 -0
  20. data/ext/zstdlib_c/zlib-1.3.1/crc32.c +1049 -0
  21. data/ext/zstdlib_c/zlib-1.3.1/crc32.h +9446 -0
  22. data/ext/zstdlib_c/zlib-1.3.1/deflate.c +2139 -0
  23. data/ext/zstdlib_c/zlib-1.3.1/deflate.h +377 -0
  24. data/ext/zstdlib_c/zlib-1.3.1/gzclose.c +23 -0
  25. data/ext/zstdlib_c/zlib-1.3.1/gzguts.h +214 -0
  26. data/ext/zstdlib_c/zlib-1.3.1/gzlib.c +582 -0
  27. data/ext/zstdlib_c/zlib-1.3.1/gzread.c +602 -0
  28. data/ext/zstdlib_c/zlib-1.3.1/gzwrite.c +631 -0
  29. data/ext/zstdlib_c/zlib-1.3.1/infback.c +628 -0
  30. data/ext/zstdlib_c/zlib-1.3.1/inffast.c +320 -0
  31. data/ext/zstdlib_c/zlib-1.3.1/inffast.h +11 -0
  32. data/ext/zstdlib_c/zlib-1.3.1/inffixed.h +94 -0
  33. data/ext/zstdlib_c/zlib-1.3.1/inflate.c +1526 -0
  34. data/ext/zstdlib_c/zlib-1.3.1/inflate.h +126 -0
  35. data/ext/zstdlib_c/zlib-1.3.1/inftrees.c +299 -0
  36. data/ext/zstdlib_c/zlib-1.3.1/inftrees.h +62 -0
  37. data/ext/zstdlib_c/zlib-1.3.1/trees.c +1117 -0
  38. data/ext/zstdlib_c/zlib-1.3.1/trees.h +128 -0
  39. data/ext/zstdlib_c/zlib-1.3.1/uncompr.c +85 -0
  40. data/ext/zstdlib_c/zlib-1.3.1/zconf.h +543 -0
  41. data/ext/zstdlib_c/zlib-1.3.1/zlib.h +1938 -0
  42. data/ext/zstdlib_c/zlib-1.3.1/zutil.c +299 -0
  43. data/ext/zstdlib_c/zlib-1.3.1/zutil.h +254 -0
  44. data/ext/zstdlib_c/zlib.mk +14 -0
  45. data/ext/zstdlib_c/zlibwrapper/zlibwrapper.c +10 -0
  46. data/ext/zstdlib_c/zlibwrapper.mk +14 -0
  47. data/ext/zstdlib_c/zstd-1.5.6/lib/common/allocations.h +55 -0
  48. data/ext/zstdlib_c/zstd-1.5.6/lib/common/bits.h +200 -0
  49. data/ext/zstdlib_c/zstd-1.5.6/lib/common/bitstream.h +457 -0
  50. data/ext/zstdlib_c/zstd-1.5.6/lib/common/compiler.h +450 -0
  51. data/ext/zstdlib_c/zstd-1.5.6/lib/common/cpu.h +249 -0
  52. data/ext/zstdlib_c/zstd-1.5.6/lib/common/debug.c +30 -0
  53. data/ext/zstdlib_c/zstd-1.5.6/lib/common/debug.h +116 -0
  54. data/ext/zstdlib_c/zstd-1.5.6/lib/common/entropy_common.c +340 -0
  55. data/ext/zstdlib_c/zstd-1.5.6/lib/common/error_private.c +63 -0
  56. data/ext/zstdlib_c/zstd-1.5.6/lib/common/error_private.h +168 -0
  57. data/ext/zstdlib_c/zstd-1.5.6/lib/common/fse.h +640 -0
  58. data/ext/zstdlib_c/zstd-1.5.6/lib/common/fse_decompress.c +313 -0
  59. data/ext/zstdlib_c/zstd-1.5.6/lib/common/huf.h +286 -0
  60. data/ext/zstdlib_c/zstd-1.5.6/lib/common/mem.h +426 -0
  61. data/ext/zstdlib_c/zstd-1.5.6/lib/common/pool.c +371 -0
  62. data/ext/zstdlib_c/zstd-1.5.6/lib/common/pool.h +90 -0
  63. data/ext/zstdlib_c/zstd-1.5.6/lib/common/portability_macros.h +158 -0
  64. data/ext/zstdlib_c/zstd-1.5.6/lib/common/threading.c +182 -0
  65. data/ext/zstdlib_c/zstd-1.5.6/lib/common/threading.h +150 -0
  66. data/ext/zstdlib_c/zstd-1.5.6/lib/common/xxhash.c +18 -0
  67. data/ext/zstdlib_c/zstd-1.5.6/lib/common/xxhash.h +7020 -0
  68. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_common.c +48 -0
  69. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_deps.h +111 -0
  70. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_internal.h +392 -0
  71. data/ext/zstdlib_c/zstd-1.5.6/lib/common/zstd_trace.h +163 -0
  72. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/clevels.h +134 -0
  73. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/fse_compress.c +625 -0
  74. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/hist.c +181 -0
  75. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/hist.h +75 -0
  76. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/huf_compress.c +1464 -0
  77. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress.c +7153 -0
  78. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_internal.h +1534 -0
  79. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_literals.c +235 -0
  80. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_literals.h +39 -0
  81. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_sequences.c +442 -0
  82. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_sequences.h +54 -0
  83. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_superblock.c +688 -0
  84. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_compress_superblock.h +32 -0
  85. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_cwksp.h +748 -0
  86. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_double_fast.c +770 -0
  87. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_double_fast.h +50 -0
  88. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_fast.c +968 -0
  89. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_fast.h +38 -0
  90. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_lazy.c +2199 -0
  91. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_lazy.h +202 -0
  92. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm.c +730 -0
  93. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm.h +117 -0
  94. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_ldm_geartab.h +106 -0
  95. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_opt.c +1576 -0
  96. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstd_opt.h +80 -0
  97. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstdmt_compress.c +1882 -0
  98. data/ext/zstdlib_c/zstd-1.5.6/lib/compress/zstdmt_compress.h +113 -0
  99. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/huf_decompress.c +1944 -0
  100. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/huf_decompress_amd64.S +595 -0
  101. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_ddict.c +244 -0
  102. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_ddict.h +44 -0
  103. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress.c +2407 -0
  104. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_block.c +2215 -0
  105. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_block.h +73 -0
  106. data/ext/zstdlib_c/zstd-1.5.6/lib/decompress/zstd_decompress_internal.h +240 -0
  107. data/ext/zstdlib_c/zstd-1.5.6/lib/zdict.h +474 -0
  108. data/ext/zstdlib_c/zstd-1.5.6/lib/zstd.h +3089 -0
  109. data/ext/zstdlib_c/zstd-1.5.6/lib/zstd_errors.h +114 -0
  110. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzclose.c +26 -0
  111. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzcompatibility.h +68 -0
  112. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzguts.h +229 -0
  113. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzlib.c +587 -0
  114. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzread.c +637 -0
  115. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/gzwrite.c +631 -0
  116. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/zstd_zlibwrapper.c +1200 -0
  117. data/ext/zstdlib_c/zstd-1.5.6/zlibWrapper/zstd_zlibwrapper.h +91 -0
  118. data/ext/zstdlib_c/zstd.mk +15 -0
  119. data/lib/2.4/zstdlib_c.so +0 -0
  120. data/lib/2.5/zstdlib_c.so +0 -0
  121. data/lib/2.6/zstdlib_c.so +0 -0
  122. data/lib/2.7/zstdlib_c.so +0 -0
  123. data/lib/3.0/zstdlib_c.so +0 -0
  124. data/lib/3.1/zstdlib_c.so +0 -0
  125. data/lib/3.2/zstdlib_c.so +0 -0
  126. data/lib/3.3/zstdlib_c.so +0 -0
  127. data/lib/zstdlib.rb +6 -0
  128. data/test/zstdlib_test.rb +21 -0
  129. metadata +243 -0
@@ -0,0 +1,377 @@
1
+ /* deflate.h -- internal compression state
2
+ * Copyright (C) 1995-2024 Jean-loup Gailly
3
+ * For conditions of distribution and use, see copyright notice in zlib.h
4
+ */
5
+
6
+ /* WARNING: this file should *not* be used by applications. It is
7
+ part of the implementation of the compression library and is
8
+ subject to change. Applications should only use zlib.h.
9
+ */
10
+
11
+ /* @(#) $Id$ */
12
+
13
+ #ifndef DEFLATE_H
14
+ #define DEFLATE_H
15
+
16
+ #include "zutil.h"
17
+
18
+ /* define NO_GZIP when compiling if you want to disable gzip header and
19
+ trailer creation by deflate(). NO_GZIP would be used to avoid linking in
20
+ the crc code when it is not needed. For shared libraries, gzip encoding
21
+ should be left enabled. */
22
+ #ifndef NO_GZIP
23
+ # define GZIP
24
+ #endif
25
+
26
+ /* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at
27
+ the cost of a larger memory footprint */
28
+ /* #define LIT_MEM */
29
+
30
+ /* ===========================================================================
31
+ * Internal compression state.
32
+ */
33
+
34
+ #define LENGTH_CODES 29
35
+ /* number of length codes, not counting the special END_BLOCK code */
36
+
37
+ #define LITERALS 256
38
+ /* number of literal bytes 0..255 */
39
+
40
+ #define L_CODES (LITERALS+1+LENGTH_CODES)
41
+ /* number of Literal or Length codes, including the END_BLOCK code */
42
+
43
+ #define D_CODES 30
44
+ /* number of distance codes */
45
+
46
+ #define BL_CODES 19
47
+ /* number of codes used to transfer the bit lengths */
48
+
49
+ #define HEAP_SIZE (2*L_CODES+1)
50
+ /* maximum heap size */
51
+
52
+ #define MAX_BITS 15
53
+ /* All codes must not exceed MAX_BITS bits */
54
+
55
+ #define Buf_size 16
56
+ /* size of bit buffer in bi_buf */
57
+
58
+ #define INIT_STATE 42 /* zlib header -> BUSY_STATE */
59
+ #ifdef GZIP
60
+ # define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */
61
+ #endif
62
+ #define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */
63
+ #define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */
64
+ #define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */
65
+ #define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */
66
+ #define BUSY_STATE 113 /* deflate -> FINISH_STATE */
67
+ #define FINISH_STATE 666 /* stream complete */
68
+ /* Stream status */
69
+
70
+
71
+ /* Data structure describing a single value and its code string. */
72
+ typedef struct ct_data_s {
73
+ union {
74
+ ush freq; /* frequency count */
75
+ ush code; /* bit string */
76
+ } fc;
77
+ union {
78
+ ush dad; /* father node in Huffman tree */
79
+ ush len; /* length of bit string */
80
+ } dl;
81
+ } FAR ct_data;
82
+
83
+ #define Freq fc.freq
84
+ #define Code fc.code
85
+ #define Dad dl.dad
86
+ #define Len dl.len
87
+
88
+ typedef struct static_tree_desc_s static_tree_desc;
89
+
90
+ typedef struct tree_desc_s {
91
+ ct_data *dyn_tree; /* the dynamic tree */
92
+ int max_code; /* largest code with non zero frequency */
93
+ const static_tree_desc *stat_desc; /* the corresponding static tree */
94
+ } FAR tree_desc;
95
+
96
+ typedef ush Pos;
97
+ typedef Pos FAR Posf;
98
+ typedef unsigned IPos;
99
+
100
+ /* A Pos is an index in the character window. We use short instead of int to
101
+ * save space in the various tables. IPos is used only for parameter passing.
102
+ */
103
+
104
+ typedef struct internal_state {
105
+ z_streamp strm; /* pointer back to this zlib stream */
106
+ int status; /* as the name implies */
107
+ Bytef *pending_buf; /* output still pending */
108
+ ulg pending_buf_size; /* size of pending_buf */
109
+ Bytef *pending_out; /* next pending byte to output to the stream */
110
+ ulg pending; /* nb of bytes in the pending buffer */
111
+ int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
112
+ gz_headerp gzhead; /* gzip header information to write */
113
+ ulg gzindex; /* where in extra, name, or comment */
114
+ Byte method; /* can only be DEFLATED */
115
+ int last_flush; /* value of flush param for previous deflate call */
116
+
117
+ /* used by deflate.c: */
118
+
119
+ uInt w_size; /* LZ77 window size (32K by default) */
120
+ uInt w_bits; /* log2(w_size) (8..16) */
121
+ uInt w_mask; /* w_size - 1 */
122
+
123
+ Bytef *window;
124
+ /* Sliding window. Input bytes are read into the second half of the window,
125
+ * and move to the first half later to keep a dictionary of at least wSize
126
+ * bytes. With this organization, matches are limited to a distance of
127
+ * wSize-MAX_MATCH bytes, but this ensures that IO is always
128
+ * performed with a length multiple of the block size. Also, it limits
129
+ * the window size to 64K, which is quite useful on MSDOS.
130
+ * To do: use the user input buffer as sliding window.
131
+ */
132
+
133
+ ulg window_size;
134
+ /* Actual size of window: 2*wSize, except when the user input buffer
135
+ * is directly used as sliding window.
136
+ */
137
+
138
+ Posf *prev;
139
+ /* Link to older string with same hash index. To limit the size of this
140
+ * array to 64K, this link is maintained only for the last 32K strings.
141
+ * An index in this array is thus a window index modulo 32K.
142
+ */
143
+
144
+ Posf *head; /* Heads of the hash chains or NIL. */
145
+
146
+ uInt ins_h; /* hash index of string to be inserted */
147
+ uInt hash_size; /* number of elements in hash table */
148
+ uInt hash_bits; /* log2(hash_size) */
149
+ uInt hash_mask; /* hash_size-1 */
150
+
151
+ uInt hash_shift;
152
+ /* Number of bits by which ins_h must be shifted at each input
153
+ * step. It must be such that after MIN_MATCH steps, the oldest
154
+ * byte no longer takes part in the hash key, that is:
155
+ * hash_shift * MIN_MATCH >= hash_bits
156
+ */
157
+
158
+ long block_start;
159
+ /* Window position at the beginning of the current output block. Gets
160
+ * negative when the window is moved backwards.
161
+ */
162
+
163
+ uInt match_length; /* length of best match */
164
+ IPos prev_match; /* previous match */
165
+ int match_available; /* set if previous match exists */
166
+ uInt strstart; /* start of string to insert */
167
+ uInt match_start; /* start of matching string */
168
+ uInt lookahead; /* number of valid bytes ahead in window */
169
+
170
+ uInt prev_length;
171
+ /* Length of the best match at previous step. Matches not greater than this
172
+ * are discarded. This is used in the lazy match evaluation.
173
+ */
174
+
175
+ uInt max_chain_length;
176
+ /* To speed up deflation, hash chains are never searched beyond this
177
+ * length. A higher limit improves compression ratio but degrades the
178
+ * speed.
179
+ */
180
+
181
+ uInt max_lazy_match;
182
+ /* Attempt to find a better match only when the current match is strictly
183
+ * smaller than this value. This mechanism is used only for compression
184
+ * levels >= 4.
185
+ */
186
+ # define max_insert_length max_lazy_match
187
+ /* Insert new strings in the hash table only if the match length is not
188
+ * greater than this length. This saves time but degrades compression.
189
+ * max_insert_length is used only for compression levels <= 3.
190
+ */
191
+
192
+ int level; /* compression level (1..9) */
193
+ int strategy; /* favor or force Huffman coding*/
194
+
195
+ uInt good_match;
196
+ /* Use a faster search when the previous match is longer than this */
197
+
198
+ int nice_match; /* Stop searching when current match exceeds this */
199
+
200
+ /* used by trees.c: */
201
+ /* Didn't use ct_data typedef below to suppress compiler warning */
202
+ struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
203
+ struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
204
+ struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
205
+
206
+ struct tree_desc_s l_desc; /* desc. for literal tree */
207
+ struct tree_desc_s d_desc; /* desc. for distance tree */
208
+ struct tree_desc_s bl_desc; /* desc. for bit length tree */
209
+
210
+ ush bl_count[MAX_BITS+1];
211
+ /* number of codes at each bit length for an optimal tree */
212
+
213
+ int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
214
+ int heap_len; /* number of elements in the heap */
215
+ int heap_max; /* element of largest frequency */
216
+ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
217
+ * The same heap array is used to build all trees.
218
+ */
219
+
220
+ uch depth[2*L_CODES+1];
221
+ /* Depth of each subtree used as tie breaker for trees of equal frequency
222
+ */
223
+
224
+ #ifdef LIT_MEM
225
+ # define LIT_BUFS 5
226
+ ushf *d_buf; /* buffer for distances */
227
+ uchf *l_buf; /* buffer for literals/lengths */
228
+ #else
229
+ # define LIT_BUFS 4
230
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
231
+ #endif
232
+
233
+ uInt lit_bufsize;
234
+ /* Size of match buffer for literals/lengths. There are 4 reasons for
235
+ * limiting lit_bufsize to 64K:
236
+ * - frequencies can be kept in 16 bit counters
237
+ * - if compression is not successful for the first block, all input
238
+ * data is still in the window so we can still emit a stored block even
239
+ * when input comes from standard input. (This can also be done for
240
+ * all blocks if lit_bufsize is not greater than 32K.)
241
+ * - if compression is not successful for a file smaller than 64K, we can
242
+ * even emit a stored file instead of a stored block (saving 5 bytes).
243
+ * This is applicable only for zip (not gzip or zlib).
244
+ * - creating new Huffman trees less frequently may not provide fast
245
+ * adaptation to changes in the input data statistics. (Take for
246
+ * example a binary file with poorly compressible code followed by
247
+ * a highly compressible string table.) Smaller buffer sizes give
248
+ * fast adaptation but have of course the overhead of transmitting
249
+ * trees more frequently.
250
+ * - I can't count above 4
251
+ */
252
+
253
+ uInt sym_next; /* running index in symbol buffer */
254
+ uInt sym_end; /* symbol table full when sym_next reaches this */
255
+
256
+ ulg opt_len; /* bit length of current block with optimal trees */
257
+ ulg static_len; /* bit length of current block with static trees */
258
+ uInt matches; /* number of string matches in current block */
259
+ uInt insert; /* bytes at end of window left to insert */
260
+
261
+ #ifdef ZLIB_DEBUG
262
+ ulg compressed_len; /* total bit length of compressed file mod 2^32 */
263
+ ulg bits_sent; /* bit length of compressed data sent mod 2^32 */
264
+ #endif
265
+
266
+ ush bi_buf;
267
+ /* Output buffer. bits are inserted starting at the bottom (least
268
+ * significant bits).
269
+ */
270
+ int bi_valid;
271
+ /* Number of valid bits in bi_buf. All bits above the last valid bit
272
+ * are always zero.
273
+ */
274
+
275
+ ulg high_water;
276
+ /* High water mark offset in window for initialized bytes -- bytes above
277
+ * this are set to zero in order to avoid memory check warnings when
278
+ * longest match routines access bytes past the input. This is then
279
+ * updated to the new high water mark.
280
+ */
281
+
282
+ } FAR deflate_state;
283
+
284
+ /* Output a byte on the stream.
285
+ * IN assertion: there is enough room in pending_buf.
286
+ */
287
+ #define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);}
288
+
289
+
290
+ #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
291
+ /* Minimum amount of lookahead, except at the end of the input file.
292
+ * See deflate.c for comments about the MIN_MATCH+1.
293
+ */
294
+
295
+ #define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
296
+ /* In order to simplify the code, particularly on 16 bit machines, match
297
+ * distances are limited to MAX_DIST instead of WSIZE.
298
+ */
299
+
300
+ #define WIN_INIT MAX_MATCH
301
+ /* Number of bytes after end of data in window to initialize in order to avoid
302
+ memory checker errors from longest match routines */
303
+
304
+ /* in trees.c */
305
+ void ZLIB_INTERNAL _tr_init(deflate_state *s);
306
+ int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc);
307
+ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf,
308
+ ulg stored_len, int last);
309
+ void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s);
310
+ void ZLIB_INTERNAL _tr_align(deflate_state *s);
311
+ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf,
312
+ ulg stored_len, int last);
313
+
314
+ #define d_code(dist) \
315
+ ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
316
+ /* Mapping from a distance to a distance code. dist is the distance - 1 and
317
+ * must not have side effects. _dist_code[256] and _dist_code[257] are never
318
+ * used.
319
+ */
320
+
321
+ #ifndef ZLIB_DEBUG
322
+ /* Inline versions of _tr_tally for speed: */
323
+
324
+ #if defined(GEN_TREES_H) || !defined(STDC)
325
+ extern uch ZLIB_INTERNAL _length_code[];
326
+ extern uch ZLIB_INTERNAL _dist_code[];
327
+ #else
328
+ extern const uch ZLIB_INTERNAL _length_code[];
329
+ extern const uch ZLIB_INTERNAL _dist_code[];
330
+ #endif
331
+
332
+ #ifdef LIT_MEM
333
+ # define _tr_tally_lit(s, c, flush) \
334
+ { uch cc = (c); \
335
+ s->d_buf[s->sym_next] = 0; \
336
+ s->l_buf[s->sym_next++] = cc; \
337
+ s->dyn_ltree[cc].Freq++; \
338
+ flush = (s->sym_next == s->sym_end); \
339
+ }
340
+ # define _tr_tally_dist(s, distance, length, flush) \
341
+ { uch len = (uch)(length); \
342
+ ush dist = (ush)(distance); \
343
+ s->d_buf[s->sym_next] = dist; \
344
+ s->l_buf[s->sym_next++] = len; \
345
+ dist--; \
346
+ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
347
+ s->dyn_dtree[d_code(dist)].Freq++; \
348
+ flush = (s->sym_next == s->sym_end); \
349
+ }
350
+ #else
351
+ # define _tr_tally_lit(s, c, flush) \
352
+ { uch cc = (c); \
353
+ s->sym_buf[s->sym_next++] = 0; \
354
+ s->sym_buf[s->sym_next++] = 0; \
355
+ s->sym_buf[s->sym_next++] = cc; \
356
+ s->dyn_ltree[cc].Freq++; \
357
+ flush = (s->sym_next == s->sym_end); \
358
+ }
359
+ # define _tr_tally_dist(s, distance, length, flush) \
360
+ { uch len = (uch)(length); \
361
+ ush dist = (ush)(distance); \
362
+ s->sym_buf[s->sym_next++] = (uch)dist; \
363
+ s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \
364
+ s->sym_buf[s->sym_next++] = len; \
365
+ dist--; \
366
+ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
367
+ s->dyn_dtree[d_code(dist)].Freq++; \
368
+ flush = (s->sym_next == s->sym_end); \
369
+ }
370
+ #endif
371
+ #else
372
+ # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
373
+ # define _tr_tally_dist(s, distance, length, flush) \
374
+ flush = _tr_tally(s, distance, length)
375
+ #endif
376
+
377
+ #endif /* DEFLATE_H */
@@ -0,0 +1,23 @@
1
+ /* gzclose.c -- zlib gzclose() function
2
+ * Copyright (C) 2004, 2010 Mark Adler
3
+ * For conditions of distribution and use, see copyright notice in zlib.h
4
+ */
5
+
6
+ #include "gzguts.h"
7
+
8
+ /* gzclose() is in a separate file so that it is linked in only if it is used.
9
+ That way the other gzclose functions can be used instead to avoid linking in
10
+ unneeded compression or decompression routines. */
11
+ int ZEXPORT gzclose(gzFile file) {
12
+ #ifndef NO_GZCOMPRESS
13
+ gz_statep state;
14
+
15
+ if (file == NULL)
16
+ return Z_STREAM_ERROR;
17
+ state = (gz_statep)file;
18
+
19
+ return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file);
20
+ #else
21
+ return gzclose_r(file);
22
+ #endif
23
+ }
@@ -0,0 +1,214 @@
1
+ /* gzguts.h -- zlib internal header definitions for gz* operations
2
+ * Copyright (C) 2004-2024 Mark Adler
3
+ * For conditions of distribution and use, see copyright notice in zlib.h
4
+ */
5
+
6
+ #ifdef _LARGEFILE64_SOURCE
7
+ # ifndef _LARGEFILE_SOURCE
8
+ # define _LARGEFILE_SOURCE 1
9
+ # endif
10
+ # undef _FILE_OFFSET_BITS
11
+ # undef _TIME_BITS
12
+ #endif
13
+
14
+ #ifdef HAVE_HIDDEN
15
+ # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
16
+ #else
17
+ # define ZLIB_INTERNAL
18
+ #endif
19
+
20
+ #include <stdio.h>
21
+ #include "zlib.h"
22
+ #ifdef STDC
23
+ # include <string.h>
24
+ # include <stdlib.h>
25
+ # include <limits.h>
26
+ #endif
27
+
28
+ #ifndef _POSIX_SOURCE
29
+ # define _POSIX_SOURCE
30
+ #endif
31
+ #include <fcntl.h>
32
+
33
+ #ifdef _WIN32
34
+ # include <stddef.h>
35
+ #endif
36
+
37
+ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
38
+ # include <io.h>
39
+ #endif
40
+
41
+ #if defined(_WIN32)
42
+ # define WIDECHAR
43
+ #endif
44
+
45
+ #ifdef WINAPI_FAMILY
46
+ # define open _open
47
+ # define read _read
48
+ # define write _write
49
+ # define close _close
50
+ #endif
51
+
52
+ #ifdef NO_DEFLATE /* for compatibility with old definition */
53
+ # define NO_GZCOMPRESS
54
+ #endif
55
+
56
+ #if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
57
+ # ifndef HAVE_VSNPRINTF
58
+ # define HAVE_VSNPRINTF
59
+ # endif
60
+ #endif
61
+
62
+ #if defined(__CYGWIN__)
63
+ # ifndef HAVE_VSNPRINTF
64
+ # define HAVE_VSNPRINTF
65
+ # endif
66
+ #endif
67
+
68
+ #if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410)
69
+ # ifndef HAVE_VSNPRINTF
70
+ # define HAVE_VSNPRINTF
71
+ # endif
72
+ #endif
73
+
74
+ #ifndef HAVE_VSNPRINTF
75
+ # ifdef MSDOS
76
+ /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
77
+ but for now we just assume it doesn't. */
78
+ # define NO_vsnprintf
79
+ # endif
80
+ # ifdef __TURBOC__
81
+ # define NO_vsnprintf
82
+ # endif
83
+ # ifdef WIN32
84
+ /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
85
+ # if !defined(vsnprintf) && !defined(NO_vsnprintf)
86
+ # if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
87
+ # define vsnprintf _vsnprintf
88
+ # endif
89
+ # endif
90
+ # endif
91
+ # ifdef __SASC
92
+ # define NO_vsnprintf
93
+ # endif
94
+ # ifdef VMS
95
+ # define NO_vsnprintf
96
+ # endif
97
+ # ifdef __OS400__
98
+ # define NO_vsnprintf
99
+ # endif
100
+ # ifdef __MVS__
101
+ # define NO_vsnprintf
102
+ # endif
103
+ #endif
104
+
105
+ /* unlike snprintf (which is required in C99), _snprintf does not guarantee
106
+ null termination of the result -- however this is only used in gzlib.c where
107
+ the result is assured to fit in the space provided */
108
+ #if defined(_MSC_VER) && _MSC_VER < 1900
109
+ # define snprintf _snprintf
110
+ #endif
111
+
112
+ #ifndef local
113
+ # define local static
114
+ #endif
115
+ /* since "static" is used to mean two completely different things in C, we
116
+ define "local" for the non-static meaning of "static", for readability
117
+ (compile with -Dlocal if your debugger can't find static symbols) */
118
+
119
+ /* gz* functions always use library allocation functions */
120
+ #ifndef STDC
121
+ extern voidp malloc(uInt size);
122
+ extern void free(voidpf ptr);
123
+ #endif
124
+
125
+ /* get errno and strerror definition */
126
+ #if defined UNDER_CE
127
+ # include <windows.h>
128
+ # define zstrerror() gz_strwinerror((DWORD)GetLastError())
129
+ #else
130
+ # ifndef NO_STRERROR
131
+ # include <errno.h>
132
+ # define zstrerror() strerror(errno)
133
+ # else
134
+ # define zstrerror() "stdio error (consult errno)"
135
+ # endif
136
+ #endif
137
+
138
+ /* provide prototypes for these when building zlib without LFS */
139
+ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
140
+ ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
141
+ ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
142
+ ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
143
+ ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
144
+ #endif
145
+
146
+ /* default memLevel */
147
+ #if MAX_MEM_LEVEL >= 8
148
+ # define DEF_MEM_LEVEL 8
149
+ #else
150
+ # define DEF_MEM_LEVEL MAX_MEM_LEVEL
151
+ #endif
152
+
153
+ /* default i/o buffer size -- double this for output when reading (this and
154
+ twice this must be able to fit in an unsigned type) */
155
+ #define GZBUFSIZE 8192
156
+
157
+ /* gzip modes, also provide a little integrity check on the passed structure */
158
+ #define GZ_NONE 0
159
+ #define GZ_READ 7247
160
+ #define GZ_WRITE 31153
161
+ #define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */
162
+
163
+ /* values for gz_state how */
164
+ #define LOOK 0 /* look for a gzip header */
165
+ #define COPY 1 /* copy input directly */
166
+ #define GZIP 2 /* decompress a gzip stream */
167
+
168
+ /* internal gzip file state data structure */
169
+ typedef struct {
170
+ /* exposed contents for gzgetc() macro */
171
+ struct gzFile_s x; /* "x" for exposed */
172
+ /* x.have: number of bytes available at x.next */
173
+ /* x.next: next output data to deliver or write */
174
+ /* x.pos: current position in uncompressed data */
175
+ /* used for both reading and writing */
176
+ int mode; /* see gzip modes above */
177
+ int fd; /* file descriptor */
178
+ char *path; /* path or fd for error messages */
179
+ unsigned size; /* buffer size, zero if not allocated yet */
180
+ unsigned want; /* requested buffer size, default is GZBUFSIZE */
181
+ unsigned char *in; /* input buffer (double-sized when writing) */
182
+ unsigned char *out; /* output buffer (double-sized when reading) */
183
+ int direct; /* 0 if processing gzip, 1 if transparent */
184
+ /* just for reading */
185
+ int how; /* 0: get header, 1: copy, 2: decompress */
186
+ z_off64_t start; /* where the gzip data started, for rewinding */
187
+ int eof; /* true if end of input file reached */
188
+ int past; /* true if read requested past end */
189
+ /* just for writing */
190
+ int level; /* compression level */
191
+ int strategy; /* compression strategy */
192
+ int reset; /* true if a reset is pending after a Z_FINISH */
193
+ /* seek request */
194
+ z_off64_t skip; /* amount to skip (already rewound if backwards) */
195
+ int seek; /* true if seek request pending */
196
+ /* error information */
197
+ int err; /* error code */
198
+ char *msg; /* error message */
199
+ /* zlib inflate or deflate stream */
200
+ z_stream strm; /* stream structure in-place (not a pointer) */
201
+ } gz_state;
202
+ typedef gz_state FAR *gz_statep;
203
+
204
+ /* shared functions */
205
+ void ZLIB_INTERNAL gz_error(gz_statep, int, const char *);
206
+ #if defined UNDER_CE
207
+ char ZLIB_INTERNAL *gz_strwinerror(DWORD error);
208
+ #endif
209
+
210
+ /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
211
+ value -- needed when comparing unsigned to z_off64_t, which is signed
212
+ (possible z_off64_t types off_t, off64_t, and long are all signed) */
213
+ unsigned ZLIB_INTERNAL gz_intmax(void);
214
+ #define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())