multi_compress 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +116 -0
  5. data/ext/multi_compress/extconf.rb +171 -0
  6. data/ext/multi_compress/multi_compress.c +1534 -0
  7. data/ext/multi_compress/vendor/brotli/c/common/constants.c +15 -0
  8. data/ext/multi_compress/vendor/brotli/c/common/constants.h +201 -0
  9. data/ext/multi_compress/vendor/brotli/c/common/context.c +156 -0
  10. data/ext/multi_compress/vendor/brotli/c/common/context.h +113 -0
  11. data/ext/multi_compress/vendor/brotli/c/common/dictionary.c +5916 -0
  12. data/ext/multi_compress/vendor/brotli/c/common/dictionary.h +64 -0
  13. data/ext/multi_compress/vendor/brotli/c/common/platform.c +23 -0
  14. data/ext/multi_compress/vendor/brotli/c/common/platform.h +541 -0
  15. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary.c +521 -0
  16. data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary_internal.h +75 -0
  17. data/ext/multi_compress/vendor/brotli/c/common/transform.c +291 -0
  18. data/ext/multi_compress/vendor/brotli/c/common/transform.h +85 -0
  19. data/ext/multi_compress/vendor/brotli/c/common/version.h +51 -0
  20. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.c +78 -0
  21. data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.h +423 -0
  22. data/ext/multi_compress/vendor/brotli/c/dec/decode.c +2875 -0
  23. data/ext/multi_compress/vendor/brotli/c/dec/huffman.c +342 -0
  24. data/ext/multi_compress/vendor/brotli/c/dec/huffman.h +122 -0
  25. data/ext/multi_compress/vendor/brotli/c/dec/prefix.h +733 -0
  26. data/ext/multi_compress/vendor/brotli/c/dec/state.c +183 -0
  27. data/ext/multi_compress/vendor/brotli/c/dec/state.h +400 -0
  28. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.c +207 -0
  29. data/ext/multi_compress/vendor/brotli/c/enc/backward_references.h +40 -0
  30. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.c +939 -0
  31. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.h +96 -0
  32. data/ext/multi_compress/vendor/brotli/c/enc/backward_references_inc.h +189 -0
  33. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.c +36 -0
  34. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.h +64 -0
  35. data/ext/multi_compress/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  36. data/ext/multi_compress/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  37. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.c +217 -0
  38. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.h +52 -0
  39. data/ext/multi_compress/vendor/brotli/c/enc/block_splitter_inc.h +481 -0
  40. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.c +1336 -0
  41. data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.h +89 -0
  42. data/ext/multi_compress/vendor/brotli/c/enc/cluster.c +57 -0
  43. data/ext/multi_compress/vendor/brotli/c/enc/cluster.h +49 -0
  44. data/ext/multi_compress/vendor/brotli/c/enc/cluster_inc.h +325 -0
  45. data/ext/multi_compress/vendor/brotli/c/enc/command.c +28 -0
  46. data/ext/multi_compress/vendor/brotli/c/enc/command.h +191 -0
  47. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.c +207 -0
  48. data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.h +74 -0
  49. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.c +800 -0
  50. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.h +86 -0
  51. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.c +657 -0
  52. data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.h +72 -0
  53. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.c +1848 -0
  54. data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  55. data/ext/multi_compress/vendor/brotli/c/enc/encode.c +1996 -0
  56. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.c +640 -0
  57. data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.h +157 -0
  58. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.c +504 -0
  59. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.h +123 -0
  60. data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode_static.h +542 -0
  61. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.c +105 -0
  62. data/ext/multi_compress/vendor/brotli/c/enc/fast_log.h +67 -0
  63. data/ext/multi_compress/vendor/brotli/c/enc/find_match_length.h +72 -0
  64. data/ext/multi_compress/vendor/brotli/c/enc/hash.h +728 -0
  65. data/ext/multi_compress/vendor/brotli/c/enc/hash_composite_inc.h +140 -0
  66. data/ext/multi_compress/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +295 -0
  67. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_inc.h +262 -0
  68. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_inc.h +258 -0
  69. data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  70. data/ext/multi_compress/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  71. data/ext/multi_compress/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +330 -0
  72. data/ext/multi_compress/vendor/brotli/c/enc/histogram.c +100 -0
  73. data/ext/multi_compress/vendor/brotli/c/enc/histogram.h +64 -0
  74. data/ext/multi_compress/vendor/brotli/c/enc/histogram_inc.h +51 -0
  75. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.c +180 -0
  76. data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.h +32 -0
  77. data/ext/multi_compress/vendor/brotli/c/enc/memory.c +194 -0
  78. data/ext/multi_compress/vendor/brotli/c/enc/memory.h +131 -0
  79. data/ext/multi_compress/vendor/brotli/c/enc/metablock.c +677 -0
  80. data/ext/multi_compress/vendor/brotli/c/enc/metablock.h +106 -0
  81. data/ext/multi_compress/vendor/brotli/c/enc/metablock_inc.h +185 -0
  82. data/ext/multi_compress/vendor/brotli/c/enc/params.h +47 -0
  83. data/ext/multi_compress/vendor/brotli/c/enc/prefix.h +54 -0
  84. data/ext/multi_compress/vendor/brotli/c/enc/quality.h +202 -0
  85. data/ext/multi_compress/vendor/brotli/c/enc/ringbuffer.h +168 -0
  86. data/ext/multi_compress/vendor/brotli/c/enc/state.h +104 -0
  87. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.c +542 -0
  88. data/ext/multi_compress/vendor/brotli/c/enc/static_dict.h +41 -0
  89. data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.h +5866 -0
  90. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.c +85 -0
  91. data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.h +33 -0
  92. data/ext/multi_compress/vendor/brotli/c/enc/write_bits.h +88 -0
  93. data/ext/multi_compress/vendor/brotli/c/include/brotli/decode.h +409 -0
  94. data/ext/multi_compress/vendor/brotli/c/include/brotli/encode.h +501 -0
  95. data/ext/multi_compress/vendor/brotli/c/include/brotli/port.h +305 -0
  96. data/ext/multi_compress/vendor/brotli/c/include/brotli/shared_dictionary.h +100 -0
  97. data/ext/multi_compress/vendor/brotli/c/include/brotli/types.h +83 -0
  98. data/ext/multi_compress/vendor/lz4/lib/LICENSE +24 -0
  99. data/ext/multi_compress/vendor/lz4/lib/Makefile +244 -0
  100. data/ext/multi_compress/vendor/lz4/lib/README.md +193 -0
  101. data/ext/multi_compress/vendor/lz4/lib/dll/example/Makefile +63 -0
  102. data/ext/multi_compress/vendor/lz4/lib/dll/example/README.md +69 -0
  103. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.sln +25 -0
  104. data/ext/multi_compress/vendor/lz4/lib/dll/example/fullbench-dll.vcxproj +182 -0
  105. data/ext/multi_compress/vendor/lz4/lib/liblz4-dll.rc.in +35 -0
  106. data/ext/multi_compress/vendor/lz4/lib/liblz4.pc.in +14 -0
  107. data/ext/multi_compress/vendor/lz4/lib/lz4.c +2829 -0
  108. data/ext/multi_compress/vendor/lz4/lib/lz4.h +884 -0
  109. data/ext/multi_compress/vendor/lz4/lib/lz4file.c +341 -0
  110. data/ext/multi_compress/vendor/lz4/lib/lz4file.h +93 -0
  111. data/ext/multi_compress/vendor/lz4/lib/lz4frame.c +2136 -0
  112. data/ext/multi_compress/vendor/lz4/lib/lz4frame.h +751 -0
  113. data/ext/multi_compress/vendor/lz4/lib/lz4frame_static.h +47 -0
  114. data/ext/multi_compress/vendor/lz4/lib/lz4hc.c +2192 -0
  115. data/ext/multi_compress/vendor/lz4/lib/lz4hc.h +414 -0
  116. data/ext/multi_compress/vendor/lz4/lib/xxhash.c +1030 -0
  117. data/ext/multi_compress/vendor/lz4/lib/xxhash.h +328 -0
  118. data/ext/multi_compress/vendor/zstd/lib/BUCK +232 -0
  119. data/ext/multi_compress/vendor/zstd/lib/Makefile +369 -0
  120. data/ext/multi_compress/vendor/zstd/lib/README.md +237 -0
  121. data/ext/multi_compress/vendor/zstd/lib/common/allocations.h +55 -0
  122. data/ext/multi_compress/vendor/zstd/lib/common/bits.h +200 -0
  123. data/ext/multi_compress/vendor/zstd/lib/common/bitstream.h +457 -0
  124. data/ext/multi_compress/vendor/zstd/lib/common/compiler.h +450 -0
  125. data/ext/multi_compress/vendor/zstd/lib/common/cpu.h +249 -0
  126. data/ext/multi_compress/vendor/zstd/lib/common/debug.c +30 -0
  127. data/ext/multi_compress/vendor/zstd/lib/common/debug.h +116 -0
  128. data/ext/multi_compress/vendor/zstd/lib/common/entropy_common.c +340 -0
  129. data/ext/multi_compress/vendor/zstd/lib/common/error_private.c +63 -0
  130. data/ext/multi_compress/vendor/zstd/lib/common/error_private.h +168 -0
  131. data/ext/multi_compress/vendor/zstd/lib/common/fse.h +640 -0
  132. data/ext/multi_compress/vendor/zstd/lib/common/fse_decompress.c +313 -0
  133. data/ext/multi_compress/vendor/zstd/lib/common/huf.h +286 -0
  134. data/ext/multi_compress/vendor/zstd/lib/common/mem.h +426 -0
  135. data/ext/multi_compress/vendor/zstd/lib/common/pool.c +371 -0
  136. data/ext/multi_compress/vendor/zstd/lib/common/pool.h +90 -0
  137. data/ext/multi_compress/vendor/zstd/lib/common/portability_macros.h +158 -0
  138. data/ext/multi_compress/vendor/zstd/lib/common/threading.c +182 -0
  139. data/ext/multi_compress/vendor/zstd/lib/common/threading.h +150 -0
  140. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.c +18 -0
  141. data/ext/multi_compress/vendor/zstd/lib/common/xxhash.h +7020 -0
  142. data/ext/multi_compress/vendor/zstd/lib/common/zstd_common.c +48 -0
  143. data/ext/multi_compress/vendor/zstd/lib/common/zstd_deps.h +111 -0
  144. data/ext/multi_compress/vendor/zstd/lib/common/zstd_internal.h +392 -0
  145. data/ext/multi_compress/vendor/zstd/lib/common/zstd_trace.h +163 -0
  146. data/ext/multi_compress/vendor/zstd/lib/compress/clevels.h +134 -0
  147. data/ext/multi_compress/vendor/zstd/lib/compress/fse_compress.c +625 -0
  148. data/ext/multi_compress/vendor/zstd/lib/compress/hist.c +181 -0
  149. data/ext/multi_compress/vendor/zstd/lib/compress/hist.h +75 -0
  150. data/ext/multi_compress/vendor/zstd/lib/compress/huf_compress.c +1464 -0
  151. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress.c +7153 -0
  152. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_internal.h +1534 -0
  153. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.c +235 -0
  154. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.h +39 -0
  155. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.c +442 -0
  156. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.h +54 -0
  157. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.c +688 -0
  158. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  159. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_cwksp.h +748 -0
  160. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.c +770 -0
  161. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.h +50 -0
  162. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.c +968 -0
  163. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.h +38 -0
  164. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.c +2199 -0
  165. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.h +202 -0
  166. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.c +730 -0
  167. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.h +117 -0
  168. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
  169. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.c +1576 -0
  170. data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.h +80 -0
  171. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.c +1882 -0
  172. data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.h +113 -0
  173. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress.c +1944 -0
  174. data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress_amd64.S +595 -0
  175. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.c +244 -0
  176. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.h +44 -0
  177. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress.c +2407 -0
  178. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.c +2215 -0
  179. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.h +73 -0
  180. data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
  181. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff.h +214 -0
  182. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_common.c +26 -0
  183. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_compress.c +167 -0
  184. data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_decompress.c +77 -0
  185. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.c +1261 -0
  186. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.h +152 -0
  187. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.c +1913 -0
  188. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.h +67 -0
  189. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/fastcover.c +766 -0
  190. data/ext/multi_compress/vendor/zstd/lib/dictBuilder/zdict.c +1133 -0
  191. data/ext/multi_compress/vendor/zstd/lib/dll/example/Makefile +48 -0
  192. data/ext/multi_compress/vendor/zstd/lib/dll/example/README.md +63 -0
  193. data/ext/multi_compress/vendor/zstd/lib/dll/example/build_package.bat +20 -0
  194. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.sln +25 -0
  195. data/ext/multi_compress/vendor/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
  196. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_legacy.h +452 -0
  197. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.c +2127 -0
  198. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.h +94 -0
  199. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.c +3465 -0
  200. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.h +93 -0
  201. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.c +3105 -0
  202. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.h +93 -0
  203. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.c +3598 -0
  204. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.h +142 -0
  205. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.c +4005 -0
  206. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.h +162 -0
  207. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.c +4106 -0
  208. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.h +172 -0
  209. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.c +4490 -0
  210. data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.h +187 -0
  211. data/ext/multi_compress/vendor/zstd/lib/libzstd.mk +237 -0
  212. data/ext/multi_compress/vendor/zstd/lib/libzstd.pc.in +16 -0
  213. data/ext/multi_compress/vendor/zstd/lib/module.modulemap +35 -0
  214. data/ext/multi_compress/vendor/zstd/lib/zdict.h +474 -0
  215. data/ext/multi_compress/vendor/zstd/lib/zstd.h +3089 -0
  216. data/ext/multi_compress/vendor/zstd/lib/zstd_errors.h +114 -0
  217. data/lib/multi_compress/version.rb +5 -0
  218. data/lib/multi_compress.rb +329 -0
  219. metadata +322 -0
@@ -0,0 +1,452 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under both the BSD-style license (found in the
6
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7
+ * in the COPYING file in the root directory of this source tree).
8
+ * You may select, at your option, one of the above-listed licenses.
9
+ */
10
+
11
+ #ifndef ZSTD_LEGACY_H
12
+ #define ZSTD_LEGACY_H
13
+
14
+ #if defined (__cplusplus)
15
+ extern "C" {
16
+ #endif
17
+
18
+ /* *************************************
19
+ * Includes
20
+ ***************************************/
21
+ #include "../common/mem.h" /* MEM_STATIC */
22
+ #include "../common/error_private.h" /* ERROR */
23
+ #include "../common/zstd_internal.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTD_frameSizeInfo */
24
+
25
+ #if !defined (ZSTD_LEGACY_SUPPORT) || (ZSTD_LEGACY_SUPPORT == 0)
26
+ # undef ZSTD_LEGACY_SUPPORT
27
+ # define ZSTD_LEGACY_SUPPORT 8
28
+ #endif
29
+
30
+ #if (ZSTD_LEGACY_SUPPORT <= 1)
31
+ # include "zstd_v01.h"
32
+ #endif
33
+ #if (ZSTD_LEGACY_SUPPORT <= 2)
34
+ # include "zstd_v02.h"
35
+ #endif
36
+ #if (ZSTD_LEGACY_SUPPORT <= 3)
37
+ # include "zstd_v03.h"
38
+ #endif
39
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
40
+ # include "zstd_v04.h"
41
+ #endif
42
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
43
+ # include "zstd_v05.h"
44
+ #endif
45
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
46
+ # include "zstd_v06.h"
47
+ #endif
48
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
49
+ # include "zstd_v07.h"
50
+ #endif
51
+
52
+ /** ZSTD_isLegacy() :
53
+ @return : > 0 if supported by legacy decoder. 0 otherwise.
54
+ return value is the version.
55
+ */
56
+ MEM_STATIC unsigned ZSTD_isLegacy(const void* src, size_t srcSize)
57
+ {
58
+ U32 magicNumberLE;
59
+ if (srcSize<4) return 0;
60
+ magicNumberLE = MEM_readLE32(src);
61
+ switch(magicNumberLE)
62
+ {
63
+ #if (ZSTD_LEGACY_SUPPORT <= 1)
64
+ case ZSTDv01_magicNumberLE:return 1;
65
+ #endif
66
+ #if (ZSTD_LEGACY_SUPPORT <= 2)
67
+ case ZSTDv02_magicNumber : return 2;
68
+ #endif
69
+ #if (ZSTD_LEGACY_SUPPORT <= 3)
70
+ case ZSTDv03_magicNumber : return 3;
71
+ #endif
72
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
73
+ case ZSTDv04_magicNumber : return 4;
74
+ #endif
75
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
76
+ case ZSTDv05_MAGICNUMBER : return 5;
77
+ #endif
78
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
79
+ case ZSTDv06_MAGICNUMBER : return 6;
80
+ #endif
81
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
82
+ case ZSTDv07_MAGICNUMBER : return 7;
83
+ #endif
84
+ default : return 0;
85
+ }
86
+ }
87
+
88
+
89
+ MEM_STATIC unsigned long long ZSTD_getDecompressedSize_legacy(const void* src, size_t srcSize)
90
+ {
91
+ U32 const version = ZSTD_isLegacy(src, srcSize);
92
+ if (version < 5) return 0; /* no decompressed size in frame header, or not a legacy format */
93
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
94
+ if (version==5) {
95
+ ZSTDv05_parameters fParams;
96
+ size_t const frResult = ZSTDv05_getFrameParams(&fParams, src, srcSize);
97
+ if (frResult != 0) return 0;
98
+ return fParams.srcSize;
99
+ }
100
+ #endif
101
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
102
+ if (version==6) {
103
+ ZSTDv06_frameParams fParams;
104
+ size_t const frResult = ZSTDv06_getFrameParams(&fParams, src, srcSize);
105
+ if (frResult != 0) return 0;
106
+ return fParams.frameContentSize;
107
+ }
108
+ #endif
109
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
110
+ if (version==7) {
111
+ ZSTDv07_frameParams fParams;
112
+ size_t const frResult = ZSTDv07_getFrameParams(&fParams, src, srcSize);
113
+ if (frResult != 0) return 0;
114
+ return fParams.frameContentSize;
115
+ }
116
+ #endif
117
+ return 0; /* should not be possible */
118
+ }
119
+
120
+
121
+ MEM_STATIC size_t ZSTD_decompressLegacy(
122
+ void* dst, size_t dstCapacity,
123
+ const void* src, size_t compressedSize,
124
+ const void* dict,size_t dictSize)
125
+ {
126
+ U32 const version = ZSTD_isLegacy(src, compressedSize);
127
+ char x;
128
+ /* Avoid passing NULL to legacy decoding. */
129
+ if (dst == NULL) {
130
+ assert(dstCapacity == 0);
131
+ dst = &x;
132
+ }
133
+ if (src == NULL) {
134
+ assert(compressedSize == 0);
135
+ src = &x;
136
+ }
137
+ if (dict == NULL) {
138
+ assert(dictSize == 0);
139
+ dict = &x;
140
+ }
141
+ (void)dst; (void)dstCapacity; (void)dict; (void)dictSize; /* unused when ZSTD_LEGACY_SUPPORT >= 8 */
142
+ switch(version)
143
+ {
144
+ #if (ZSTD_LEGACY_SUPPORT <= 1)
145
+ case 1 :
146
+ return ZSTDv01_decompress(dst, dstCapacity, src, compressedSize);
147
+ #endif
148
+ #if (ZSTD_LEGACY_SUPPORT <= 2)
149
+ case 2 :
150
+ return ZSTDv02_decompress(dst, dstCapacity, src, compressedSize);
151
+ #endif
152
+ #if (ZSTD_LEGACY_SUPPORT <= 3)
153
+ case 3 :
154
+ return ZSTDv03_decompress(dst, dstCapacity, src, compressedSize);
155
+ #endif
156
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
157
+ case 4 :
158
+ return ZSTDv04_decompress(dst, dstCapacity, src, compressedSize);
159
+ #endif
160
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
161
+ case 5 :
162
+ { size_t result;
163
+ ZSTDv05_DCtx* const zd = ZSTDv05_createDCtx();
164
+ if (zd==NULL) return ERROR(memory_allocation);
165
+ result = ZSTDv05_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize);
166
+ ZSTDv05_freeDCtx(zd);
167
+ return result;
168
+ }
169
+ #endif
170
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
171
+ case 6 :
172
+ { size_t result;
173
+ ZSTDv06_DCtx* const zd = ZSTDv06_createDCtx();
174
+ if (zd==NULL) return ERROR(memory_allocation);
175
+ result = ZSTDv06_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize);
176
+ ZSTDv06_freeDCtx(zd);
177
+ return result;
178
+ }
179
+ #endif
180
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
181
+ case 7 :
182
+ { size_t result;
183
+ ZSTDv07_DCtx* const zd = ZSTDv07_createDCtx();
184
+ if (zd==NULL) return ERROR(memory_allocation);
185
+ result = ZSTDv07_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize);
186
+ ZSTDv07_freeDCtx(zd);
187
+ return result;
188
+ }
189
+ #endif
190
+ default :
191
+ return ERROR(prefix_unknown);
192
+ }
193
+ }
194
+
195
+ MEM_STATIC ZSTD_frameSizeInfo ZSTD_findFrameSizeInfoLegacy(const void *src, size_t srcSize)
196
+ {
197
+ ZSTD_frameSizeInfo frameSizeInfo;
198
+ U32 const version = ZSTD_isLegacy(src, srcSize);
199
+ switch(version)
200
+ {
201
+ #if (ZSTD_LEGACY_SUPPORT <= 1)
202
+ case 1 :
203
+ ZSTDv01_findFrameSizeInfoLegacy(src, srcSize,
204
+ &frameSizeInfo.compressedSize,
205
+ &frameSizeInfo.decompressedBound);
206
+ break;
207
+ #endif
208
+ #if (ZSTD_LEGACY_SUPPORT <= 2)
209
+ case 2 :
210
+ ZSTDv02_findFrameSizeInfoLegacy(src, srcSize,
211
+ &frameSizeInfo.compressedSize,
212
+ &frameSizeInfo.decompressedBound);
213
+ break;
214
+ #endif
215
+ #if (ZSTD_LEGACY_SUPPORT <= 3)
216
+ case 3 :
217
+ ZSTDv03_findFrameSizeInfoLegacy(src, srcSize,
218
+ &frameSizeInfo.compressedSize,
219
+ &frameSizeInfo.decompressedBound);
220
+ break;
221
+ #endif
222
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
223
+ case 4 :
224
+ ZSTDv04_findFrameSizeInfoLegacy(src, srcSize,
225
+ &frameSizeInfo.compressedSize,
226
+ &frameSizeInfo.decompressedBound);
227
+ break;
228
+ #endif
229
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
230
+ case 5 :
231
+ ZSTDv05_findFrameSizeInfoLegacy(src, srcSize,
232
+ &frameSizeInfo.compressedSize,
233
+ &frameSizeInfo.decompressedBound);
234
+ break;
235
+ #endif
236
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
237
+ case 6 :
238
+ ZSTDv06_findFrameSizeInfoLegacy(src, srcSize,
239
+ &frameSizeInfo.compressedSize,
240
+ &frameSizeInfo.decompressedBound);
241
+ break;
242
+ #endif
243
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
244
+ case 7 :
245
+ ZSTDv07_findFrameSizeInfoLegacy(src, srcSize,
246
+ &frameSizeInfo.compressedSize,
247
+ &frameSizeInfo.decompressedBound);
248
+ break;
249
+ #endif
250
+ default :
251
+ frameSizeInfo.compressedSize = ERROR(prefix_unknown);
252
+ frameSizeInfo.decompressedBound = ZSTD_CONTENTSIZE_ERROR;
253
+ break;
254
+ }
255
+ if (!ZSTD_isError(frameSizeInfo.compressedSize) && frameSizeInfo.compressedSize > srcSize) {
256
+ frameSizeInfo.compressedSize = ERROR(srcSize_wrong);
257
+ frameSizeInfo.decompressedBound = ZSTD_CONTENTSIZE_ERROR;
258
+ }
259
+ /* In all cases, decompressedBound == nbBlocks * ZSTD_BLOCKSIZE_MAX.
260
+ * So we can compute nbBlocks without having to change every function.
261
+ */
262
+ if (frameSizeInfo.decompressedBound != ZSTD_CONTENTSIZE_ERROR) {
263
+ assert((frameSizeInfo.decompressedBound & (ZSTD_BLOCKSIZE_MAX - 1)) == 0);
264
+ frameSizeInfo.nbBlocks = (size_t)(frameSizeInfo.decompressedBound / ZSTD_BLOCKSIZE_MAX);
265
+ }
266
+ return frameSizeInfo;
267
+ }
268
+
269
+ MEM_STATIC size_t ZSTD_findFrameCompressedSizeLegacy(const void *src, size_t srcSize)
270
+ {
271
+ ZSTD_frameSizeInfo frameSizeInfo = ZSTD_findFrameSizeInfoLegacy(src, srcSize);
272
+ return frameSizeInfo.compressedSize;
273
+ }
274
+
275
+ MEM_STATIC size_t ZSTD_freeLegacyStreamContext(void* legacyContext, U32 version)
276
+ {
277
+ switch(version)
278
+ {
279
+ default :
280
+ case 1 :
281
+ case 2 :
282
+ case 3 :
283
+ (void)legacyContext;
284
+ return ERROR(version_unsupported);
285
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
286
+ case 4 : return ZBUFFv04_freeDCtx((ZBUFFv04_DCtx*)legacyContext);
287
+ #endif
288
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
289
+ case 5 : return ZBUFFv05_freeDCtx((ZBUFFv05_DCtx*)legacyContext);
290
+ #endif
291
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
292
+ case 6 : return ZBUFFv06_freeDCtx((ZBUFFv06_DCtx*)legacyContext);
293
+ #endif
294
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
295
+ case 7 : return ZBUFFv07_freeDCtx((ZBUFFv07_DCtx*)legacyContext);
296
+ #endif
297
+ }
298
+ }
299
+
300
+
301
+ MEM_STATIC size_t ZSTD_initLegacyStream(void** legacyContext, U32 prevVersion, U32 newVersion,
302
+ const void* dict, size_t dictSize)
303
+ {
304
+ char x;
305
+ /* Avoid passing NULL to legacy decoding. */
306
+ if (dict == NULL) {
307
+ assert(dictSize == 0);
308
+ dict = &x;
309
+ }
310
+ DEBUGLOG(5, "ZSTD_initLegacyStream for v0.%u", newVersion);
311
+ if (prevVersion != newVersion) ZSTD_freeLegacyStreamContext(*legacyContext, prevVersion);
312
+ switch(newVersion)
313
+ {
314
+ default :
315
+ case 1 :
316
+ case 2 :
317
+ case 3 :
318
+ (void)dict; (void)dictSize;
319
+ return 0;
320
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
321
+ case 4 :
322
+ {
323
+ ZBUFFv04_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv04_createDCtx() : (ZBUFFv04_DCtx*)*legacyContext;
324
+ if (dctx==NULL) return ERROR(memory_allocation);
325
+ ZBUFFv04_decompressInit(dctx);
326
+ ZBUFFv04_decompressWithDictionary(dctx, dict, dictSize);
327
+ *legacyContext = dctx;
328
+ return 0;
329
+ }
330
+ #endif
331
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
332
+ case 5 :
333
+ {
334
+ ZBUFFv05_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv05_createDCtx() : (ZBUFFv05_DCtx*)*legacyContext;
335
+ if (dctx==NULL) return ERROR(memory_allocation);
336
+ ZBUFFv05_decompressInitDictionary(dctx, dict, dictSize);
337
+ *legacyContext = dctx;
338
+ return 0;
339
+ }
340
+ #endif
341
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
342
+ case 6 :
343
+ {
344
+ ZBUFFv06_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv06_createDCtx() : (ZBUFFv06_DCtx*)*legacyContext;
345
+ if (dctx==NULL) return ERROR(memory_allocation);
346
+ ZBUFFv06_decompressInitDictionary(dctx, dict, dictSize);
347
+ *legacyContext = dctx;
348
+ return 0;
349
+ }
350
+ #endif
351
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
352
+ case 7 :
353
+ {
354
+ ZBUFFv07_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv07_createDCtx() : (ZBUFFv07_DCtx*)*legacyContext;
355
+ if (dctx==NULL) return ERROR(memory_allocation);
356
+ ZBUFFv07_decompressInitDictionary(dctx, dict, dictSize);
357
+ *legacyContext = dctx;
358
+ return 0;
359
+ }
360
+ #endif
361
+ }
362
+ }
363
+
364
+
365
+
366
+ MEM_STATIC size_t ZSTD_decompressLegacyStream(void* legacyContext, U32 version,
367
+ ZSTD_outBuffer* output, ZSTD_inBuffer* input)
368
+ {
369
+ static char x;
370
+ /* Avoid passing NULL to legacy decoding. */
371
+ if (output->dst == NULL) {
372
+ assert(output->size == 0);
373
+ output->dst = &x;
374
+ }
375
+ if (input->src == NULL) {
376
+ assert(input->size == 0);
377
+ input->src = &x;
378
+ }
379
+ DEBUGLOG(5, "ZSTD_decompressLegacyStream for v0.%u", version);
380
+ switch(version)
381
+ {
382
+ default :
383
+ case 1 :
384
+ case 2 :
385
+ case 3 :
386
+ (void)legacyContext; (void)output; (void)input;
387
+ return ERROR(version_unsupported);
388
+ #if (ZSTD_LEGACY_SUPPORT <= 4)
389
+ case 4 :
390
+ {
391
+ ZBUFFv04_DCtx* dctx = (ZBUFFv04_DCtx*) legacyContext;
392
+ const void* src = (const char*)input->src + input->pos;
393
+ size_t readSize = input->size - input->pos;
394
+ void* dst = (char*)output->dst + output->pos;
395
+ size_t decodedSize = output->size - output->pos;
396
+ size_t const hintSize = ZBUFFv04_decompressContinue(dctx, dst, &decodedSize, src, &readSize);
397
+ output->pos += decodedSize;
398
+ input->pos += readSize;
399
+ return hintSize;
400
+ }
401
+ #endif
402
+ #if (ZSTD_LEGACY_SUPPORT <= 5)
403
+ case 5 :
404
+ {
405
+ ZBUFFv05_DCtx* dctx = (ZBUFFv05_DCtx*) legacyContext;
406
+ const void* src = (const char*)input->src + input->pos;
407
+ size_t readSize = input->size - input->pos;
408
+ void* dst = (char*)output->dst + output->pos;
409
+ size_t decodedSize = output->size - output->pos;
410
+ size_t const hintSize = ZBUFFv05_decompressContinue(dctx, dst, &decodedSize, src, &readSize);
411
+ output->pos += decodedSize;
412
+ input->pos += readSize;
413
+ return hintSize;
414
+ }
415
+ #endif
416
+ #if (ZSTD_LEGACY_SUPPORT <= 6)
417
+ case 6 :
418
+ {
419
+ ZBUFFv06_DCtx* dctx = (ZBUFFv06_DCtx*) legacyContext;
420
+ const void* src = (const char*)input->src + input->pos;
421
+ size_t readSize = input->size - input->pos;
422
+ void* dst = (char*)output->dst + output->pos;
423
+ size_t decodedSize = output->size - output->pos;
424
+ size_t const hintSize = ZBUFFv06_decompressContinue(dctx, dst, &decodedSize, src, &readSize);
425
+ output->pos += decodedSize;
426
+ input->pos += readSize;
427
+ return hintSize;
428
+ }
429
+ #endif
430
+ #if (ZSTD_LEGACY_SUPPORT <= 7)
431
+ case 7 :
432
+ {
433
+ ZBUFFv07_DCtx* dctx = (ZBUFFv07_DCtx*) legacyContext;
434
+ const void* src = (const char*)input->src + input->pos;
435
+ size_t readSize = input->size - input->pos;
436
+ void* dst = (char*)output->dst + output->pos;
437
+ size_t decodedSize = output->size - output->pos;
438
+ size_t const hintSize = ZBUFFv07_decompressContinue(dctx, dst, &decodedSize, src, &readSize);
439
+ output->pos += decodedSize;
440
+ input->pos += readSize;
441
+ return hintSize;
442
+ }
443
+ #endif
444
+ }
445
+ }
446
+
447
+
448
+ #if defined (__cplusplus)
449
+ }
450
+ #endif
451
+
452
+ #endif /* ZSTD_LEGACY_H */