laag-xz 5.2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +65 -0
  4. data/README.org +34 -0
  5. data/ext/laag/xz/extconf.rb +21 -0
  6. data/laag-xz.gemspec +20 -0
  7. data/lib/laag/xz.rb +29 -0
  8. data/vendor/git.tukaani.org/xz/.gitignore +66 -0
  9. data/vendor/git.tukaani.org/xz/AUTHORS +27 -0
  10. data/vendor/git.tukaani.org/xz/COPYING +65 -0
  11. data/vendor/git.tukaani.org/xz/COPYING.GPLv2 +339 -0
  12. data/vendor/git.tukaani.org/xz/COPYING.GPLv3 +674 -0
  13. data/vendor/git.tukaani.org/xz/COPYING.LGPLv2.1 +502 -0
  14. data/vendor/git.tukaani.org/xz/ChangeLog +7 -0
  15. data/vendor/git.tukaani.org/xz/Doxyfile.in +1234 -0
  16. data/vendor/git.tukaani.org/xz/INSTALL +618 -0
  17. data/vendor/git.tukaani.org/xz/INSTALL.generic +365 -0
  18. data/vendor/git.tukaani.org/xz/Makefile.am +110 -0
  19. data/vendor/git.tukaani.org/xz/NEWS +571 -0
  20. data/vendor/git.tukaani.org/xz/PACKAGERS +231 -0
  21. data/vendor/git.tukaani.org/xz/README +308 -0
  22. data/vendor/git.tukaani.org/xz/THANKS +124 -0
  23. data/vendor/git.tukaani.org/xz/TODO +111 -0
  24. data/vendor/git.tukaani.org/xz/autogen.sh +22 -0
  25. data/vendor/git.tukaani.org/xz/build-aux/manconv.sh +58 -0
  26. data/vendor/git.tukaani.org/xz/build-aux/version.sh +24 -0
  27. data/vendor/git.tukaani.org/xz/configure.ac +900 -0
  28. data/vendor/git.tukaani.org/xz/debug/Makefile.am +30 -0
  29. data/vendor/git.tukaani.org/xz/debug/README +17 -0
  30. data/vendor/git.tukaani.org/xz/debug/crc32.c +39 -0
  31. data/vendor/git.tukaani.org/xz/debug/full_flush.c +103 -0
  32. data/vendor/git.tukaani.org/xz/debug/hex2bin.c +53 -0
  33. data/vendor/git.tukaani.org/xz/debug/known_sizes.c +129 -0
  34. data/vendor/git.tukaani.org/xz/debug/memusage.c +51 -0
  35. data/vendor/git.tukaani.org/xz/debug/repeat.c +36 -0
  36. data/vendor/git.tukaani.org/xz/debug/sync_flush.c +125 -0
  37. data/vendor/git.tukaani.org/xz/debug/translation.bash +100 -0
  38. data/vendor/git.tukaani.org/xz/doc/examples/00_README.txt +31 -0
  39. data/vendor/git.tukaani.org/xz/doc/examples/01_compress_easy.c +297 -0
  40. data/vendor/git.tukaani.org/xz/doc/examples/02_decompress.c +287 -0
  41. data/vendor/git.tukaani.org/xz/doc/examples/03_compress_custom.c +193 -0
  42. data/vendor/git.tukaani.org/xz/doc/examples/04_compress_easy_mt.c +206 -0
  43. data/vendor/git.tukaani.org/xz/doc/examples/Makefile +24 -0
  44. data/vendor/git.tukaani.org/xz/doc/examples_old/xz_pipe_comp.c +127 -0
  45. data/vendor/git.tukaani.org/xz/doc/examples_old/xz_pipe_decomp.c +123 -0
  46. data/vendor/git.tukaani.org/xz/doc/faq.txt +224 -0
  47. data/vendor/git.tukaani.org/xz/doc/history.txt +150 -0
  48. data/vendor/git.tukaani.org/xz/doc/lzma-file-format.txt +166 -0
  49. data/vendor/git.tukaani.org/xz/doc/xz-file-format.txt +1150 -0
  50. data/vendor/git.tukaani.org/xz/dos/INSTALL.txt +79 -0
  51. data/vendor/git.tukaani.org/xz/dos/Makefile +147 -0
  52. data/vendor/git.tukaani.org/xz/dos/README.txt +123 -0
  53. data/vendor/git.tukaani.org/xz/dos/config.h +136 -0
  54. data/vendor/git.tukaani.org/xz/extra/7z2lzma/7z2lzma.bash +115 -0
  55. data/vendor/git.tukaani.org/xz/extra/scanlzma/scanlzma.c +88 -0
  56. data/vendor/git.tukaani.org/xz/lib/Makefile.am +32 -0
  57. data/vendor/git.tukaani.org/xz/lib/getopt.c +1197 -0
  58. data/vendor/git.tukaani.org/xz/lib/getopt.in.h +226 -0
  59. data/vendor/git.tukaani.org/xz/lib/getopt1.c +171 -0
  60. data/vendor/git.tukaani.org/xz/lib/getopt_int.h +131 -0
  61. data/vendor/git.tukaani.org/xz/m4/.gitignore +38 -0
  62. data/vendor/git.tukaani.org/xz/m4/ax_check_capsicum.m4 +85 -0
  63. data/vendor/git.tukaani.org/xz/m4/ax_pthread.m4 +332 -0
  64. data/vendor/git.tukaani.org/xz/m4/getopt.m4 +71 -0
  65. data/vendor/git.tukaani.org/xz/m4/posix-shell.m4 +63 -0
  66. data/vendor/git.tukaani.org/xz/m4/tuklib_common.m4 +22 -0
  67. data/vendor/git.tukaani.org/xz/m4/tuklib_cpucores.m4 +176 -0
  68. data/vendor/git.tukaani.org/xz/m4/tuklib_integer.m4 +74 -0
  69. data/vendor/git.tukaani.org/xz/m4/tuklib_mbstr.m4 +30 -0
  70. data/vendor/git.tukaani.org/xz/m4/tuklib_physmem.m4 +212 -0
  71. data/vendor/git.tukaani.org/xz/m4/tuklib_progname.m4 +25 -0
  72. data/vendor/git.tukaani.org/xz/macosx/build.sh +113 -0
  73. data/vendor/git.tukaani.org/xz/po/.gitignore +31 -0
  74. data/vendor/git.tukaani.org/xz/po/LINGUAS +6 -0
  75. data/vendor/git.tukaani.org/xz/po/Makevars +46 -0
  76. data/vendor/git.tukaani.org/xz/po/POTFILES.in +13 -0
  77. data/vendor/git.tukaani.org/xz/po/cs.po +949 -0
  78. data/vendor/git.tukaani.org/xz/po/de.po +993 -0
  79. data/vendor/git.tukaani.org/xz/po/fr.po +978 -0
  80. data/vendor/git.tukaani.org/xz/po/it.po +1067 -0
  81. data/vendor/git.tukaani.org/xz/po/pl.po +968 -0
  82. data/vendor/git.tukaani.org/xz/po/vi.po +1039 -0
  83. data/vendor/git.tukaani.org/xz/src/Makefile.am +42 -0
  84. data/vendor/git.tukaani.org/xz/src/common/common_w32res.rc +50 -0
  85. data/vendor/git.tukaani.org/xz/src/common/mythread.h +521 -0
  86. data/vendor/git.tukaani.org/xz/src/common/sysdefs.h +202 -0
  87. data/vendor/git.tukaani.org/xz/src/common/tuklib_common.h +71 -0
  88. data/vendor/git.tukaani.org/xz/src/common/tuklib_config.h +7 -0
  89. data/vendor/git.tukaani.org/xz/src/common/tuklib_cpucores.c +100 -0
  90. data/vendor/git.tukaani.org/xz/src/common/tuklib_cpucores.h +23 -0
  91. data/vendor/git.tukaani.org/xz/src/common/tuklib_exit.c +57 -0
  92. data/vendor/git.tukaani.org/xz/src/common/tuklib_exit.h +25 -0
  93. data/vendor/git.tukaani.org/xz/src/common/tuklib_gettext.h +44 -0
  94. data/vendor/git.tukaani.org/xz/src/common/tuklib_integer.h +534 -0
  95. data/vendor/git.tukaani.org/xz/src/common/tuklib_mbstr.h +66 -0
  96. data/vendor/git.tukaani.org/xz/src/common/tuklib_mbstr_fw.c +31 -0
  97. data/vendor/git.tukaani.org/xz/src/common/tuklib_mbstr_width.c +64 -0
  98. data/vendor/git.tukaani.org/xz/src/common/tuklib_open_stdxxx.c +57 -0
  99. data/vendor/git.tukaani.org/xz/src/common/tuklib_open_stdxxx.h +23 -0
  100. data/vendor/git.tukaani.org/xz/src/common/tuklib_physmem.c +216 -0
  101. data/vendor/git.tukaani.org/xz/src/common/tuklib_physmem.h +28 -0
  102. data/vendor/git.tukaani.org/xz/src/common/tuklib_progname.c +50 -0
  103. data/vendor/git.tukaani.org/xz/src/common/tuklib_progname.h +32 -0
  104. data/vendor/git.tukaani.org/xz/src/liblzma/Makefile.am +122 -0
  105. data/vendor/git.tukaani.org/xz/src/liblzma/api/Makefile.am +23 -0
  106. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma.h +325 -0
  107. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/base.h +659 -0
  108. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/bcj.h +90 -0
  109. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/block.h +581 -0
  110. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/check.h +150 -0
  111. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/container.h +632 -0
  112. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/delta.h +77 -0
  113. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/filter.h +425 -0
  114. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/hardware.h +64 -0
  115. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/index.h +686 -0
  116. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/index_hash.h +107 -0
  117. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/lzma12.h +420 -0
  118. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/stream_flags.h +223 -0
  119. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/version.h +121 -0
  120. data/vendor/git.tukaani.org/xz/src/liblzma/api/lzma/vli.h +166 -0
  121. data/vendor/git.tukaani.org/xz/src/liblzma/check/Makefile.inc +53 -0
  122. data/vendor/git.tukaani.org/xz/src/liblzma/check/check.c +174 -0
  123. data/vendor/git.tukaani.org/xz/src/liblzma/check/check.h +172 -0
  124. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_fast.c +82 -0
  125. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_small.c +61 -0
  126. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_table.c +19 -0
  127. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_table_be.h +525 -0
  128. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_table_le.h +525 -0
  129. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_tablegen.c +117 -0
  130. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc32_x86.S +304 -0
  131. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_fast.c +72 -0
  132. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_small.c +53 -0
  133. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_table.c +19 -0
  134. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_table_be.h +521 -0
  135. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_table_le.h +521 -0
  136. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_tablegen.c +88 -0
  137. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc64_x86.S +287 -0
  138. data/vendor/git.tukaani.org/xz/src/liblzma/check/crc_macros.h +30 -0
  139. data/vendor/git.tukaani.org/xz/src/liblzma/check/sha256.c +196 -0
  140. data/vendor/git.tukaani.org/xz/src/liblzma/common/Makefile.inc +79 -0
  141. data/vendor/git.tukaani.org/xz/src/liblzma/common/alone_decoder.c +243 -0
  142. data/vendor/git.tukaani.org/xz/src/liblzma/common/alone_decoder.h +23 -0
  143. data/vendor/git.tukaani.org/xz/src/liblzma/common/alone_encoder.c +163 -0
  144. data/vendor/git.tukaani.org/xz/src/liblzma/common/auto_decoder.c +195 -0
  145. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_buffer_decoder.c +80 -0
  146. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_buffer_encoder.c +337 -0
  147. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_buffer_encoder.h +24 -0
  148. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_decoder.c +257 -0
  149. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_decoder.h +22 -0
  150. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_encoder.c +223 -0
  151. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_encoder.h +47 -0
  152. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_header_decoder.c +124 -0
  153. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_header_encoder.c +132 -0
  154. data/vendor/git.tukaani.org/xz/src/liblzma/common/block_util.c +90 -0
  155. data/vendor/git.tukaani.org/xz/src/liblzma/common/common.c +445 -0
  156. data/vendor/git.tukaani.org/xz/src/liblzma/common/common.h +314 -0
  157. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_buffer_encoder.c +27 -0
  158. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_decoder_memusage.c +24 -0
  159. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_encoder.c +24 -0
  160. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_encoder_memusage.c +24 -0
  161. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_preset.c +27 -0
  162. data/vendor/git.tukaani.org/xz/src/liblzma/common/easy_preset.h +32 -0
  163. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_buffer_decoder.c +88 -0
  164. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_buffer_encoder.c +55 -0
  165. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_common.c +337 -0
  166. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_common.h +48 -0
  167. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_decoder.c +184 -0
  168. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_decoder.h +23 -0
  169. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_encoder.c +286 -0
  170. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_encoder.h +27 -0
  171. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_flags_decoder.c +46 -0
  172. data/vendor/git.tukaani.org/xz/src/liblzma/common/filter_flags_encoder.c +56 -0
  173. data/vendor/git.tukaani.org/xz/src/liblzma/common/hardware_cputhreads.c +22 -0
  174. data/vendor/git.tukaani.org/xz/src/liblzma/common/hardware_physmem.c +25 -0
  175. data/vendor/git.tukaani.org/xz/src/liblzma/common/index.c +1250 -0
  176. data/vendor/git.tukaani.org/xz/src/liblzma/common/index.h +73 -0
  177. data/vendor/git.tukaani.org/xz/src/liblzma/common/index_decoder.c +352 -0
  178. data/vendor/git.tukaani.org/xz/src/liblzma/common/index_encoder.c +256 -0
  179. data/vendor/git.tukaani.org/xz/src/liblzma/common/index_encoder.h +23 -0
  180. data/vendor/git.tukaani.org/xz/src/liblzma/common/index_hash.c +334 -0
  181. data/vendor/git.tukaani.org/xz/src/liblzma/common/memcmplen.h +175 -0
  182. data/vendor/git.tukaani.org/xz/src/liblzma/common/outqueue.c +184 -0
  183. data/vendor/git.tukaani.org/xz/src/liblzma/common/outqueue.h +156 -0
  184. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_buffer_decoder.c +91 -0
  185. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_buffer_encoder.c +141 -0
  186. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_decoder.c +467 -0
  187. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_decoder.h +22 -0
  188. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_encoder.c +340 -0
  189. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_encoder_mt.c +1143 -0
  190. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_flags_common.c +47 -0
  191. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_flags_common.h +33 -0
  192. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_flags_decoder.c +82 -0
  193. data/vendor/git.tukaani.org/xz/src/liblzma/common/stream_flags_encoder.c +86 -0
  194. data/vendor/git.tukaani.org/xz/src/liblzma/common/vli_decoder.c +86 -0
  195. data/vendor/git.tukaani.org/xz/src/liblzma/common/vli_encoder.c +69 -0
  196. data/vendor/git.tukaani.org/xz/src/liblzma/common/vli_size.c +30 -0
  197. data/vendor/git.tukaani.org/xz/src/liblzma/delta/Makefile.inc +23 -0
  198. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_common.c +73 -0
  199. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_common.h +20 -0
  200. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_decoder.c +78 -0
  201. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_decoder.h +26 -0
  202. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_encoder.c +125 -0
  203. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_encoder.h +24 -0
  204. data/vendor/git.tukaani.org/xz/src/liblzma/delta/delta_private.h +37 -0
  205. data/vendor/git.tukaani.org/xz/src/liblzma/liblzma.map +108 -0
  206. data/vendor/git.tukaani.org/xz/src/liblzma/liblzma.pc.in +19 -0
  207. data/vendor/git.tukaani.org/xz/src/liblzma/liblzma_w32res.rc +12 -0
  208. data/vendor/git.tukaani.org/xz/src/liblzma/lz/Makefile.inc +22 -0
  209. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_decoder.c +306 -0
  210. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_decoder.h +234 -0
  211. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_encoder.c +616 -0
  212. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_encoder.h +327 -0
  213. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_encoder_hash.h +108 -0
  214. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_encoder_hash_table.h +68 -0
  215. data/vendor/git.tukaani.org/xz/src/liblzma/lz/lz_encoder_mf.c +744 -0
  216. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/Makefile.inc +47 -0
  217. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/fastpos.h +141 -0
  218. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/fastpos_table.c +519 -0
  219. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/fastpos_tablegen.c +56 -0
  220. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma2_decoder.c +310 -0
  221. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma2_decoder.h +29 -0
  222. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma2_encoder.c +410 -0
  223. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma2_encoder.h +43 -0
  224. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_common.h +224 -0
  225. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_decoder.c +1064 -0
  226. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_decoder.h +53 -0
  227. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder.c +677 -0
  228. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder.h +58 -0
  229. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c +170 -0
  230. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c +855 -0
  231. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder_presets.c +64 -0
  232. data/vendor/git.tukaani.org/xz/src/liblzma/lzma/lzma_encoder_private.h +148 -0
  233. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/Makefile.inc +21 -0
  234. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/price.h +92 -0
  235. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/price_table.c +22 -0
  236. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/price_tablegen.c +87 -0
  237. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/range_common.h +71 -0
  238. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/range_decoder.h +185 -0
  239. data/vendor/git.tukaani.org/xz/src/liblzma/rangecoder/range_encoder.h +231 -0
  240. data/vendor/git.tukaani.org/xz/src/liblzma/simple/Makefile.inc +47 -0
  241. data/vendor/git.tukaani.org/xz/src/liblzma/simple/arm.c +71 -0
  242. data/vendor/git.tukaani.org/xz/src/liblzma/simple/armthumb.c +76 -0
  243. data/vendor/git.tukaani.org/xz/src/liblzma/simple/ia64.c +112 -0
  244. data/vendor/git.tukaani.org/xz/src/liblzma/simple/powerpc.c +75 -0
  245. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_coder.c +282 -0
  246. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_coder.h +72 -0
  247. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_decoder.c +40 -0
  248. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_decoder.h +22 -0
  249. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_encoder.c +38 -0
  250. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_encoder.h +23 -0
  251. data/vendor/git.tukaani.org/xz/src/liblzma/simple/simple_private.h +74 -0
  252. data/vendor/git.tukaani.org/xz/src/liblzma/simple/sparc.c +83 -0
  253. data/vendor/git.tukaani.org/xz/src/liblzma/simple/x86.c +159 -0
  254. data/vendor/git.tukaani.org/xz/src/liblzma/validate_map.sh +68 -0
  255. data/vendor/git.tukaani.org/xz/src/lzmainfo/Makefile.am +39 -0
  256. data/vendor/git.tukaani.org/xz/src/lzmainfo/lzmainfo.1 +60 -0
  257. data/vendor/git.tukaani.org/xz/src/lzmainfo/lzmainfo.c +219 -0
  258. data/vendor/git.tukaani.org/xz/src/lzmainfo/lzmainfo_w32res.rc +12 -0
  259. data/vendor/git.tukaani.org/xz/src/scripts/Makefile.am +55 -0
  260. data/vendor/git.tukaani.org/xz/src/scripts/xzdiff.1 +77 -0
  261. data/vendor/git.tukaani.org/xz/src/scripts/xzdiff.in +200 -0
  262. data/vendor/git.tukaani.org/xz/src/scripts/xzgrep.1 +98 -0
  263. data/vendor/git.tukaani.org/xz/src/scripts/xzgrep.in +215 -0
  264. data/vendor/git.tukaani.org/xz/src/scripts/xzless.1 +69 -0
  265. data/vendor/git.tukaani.org/xz/src/scripts/xzless.in +58 -0
  266. data/vendor/git.tukaani.org/xz/src/scripts/xzmore.1 +55 -0
  267. data/vendor/git.tukaani.org/xz/src/scripts/xzmore.in +78 -0
  268. data/vendor/git.tukaani.org/xz/src/xz/Makefile.am +111 -0
  269. data/vendor/git.tukaani.org/xz/src/xz/args.c +700 -0
  270. data/vendor/git.tukaani.org/xz/src/xz/args.h +44 -0
  271. data/vendor/git.tukaani.org/xz/src/xz/coder.c +936 -0
  272. data/vendor/git.tukaani.org/xz/src/xz/coder.h +76 -0
  273. data/vendor/git.tukaani.org/xz/src/xz/file_io.c +1300 -0
  274. data/vendor/git.tukaani.org/xz/src/xz/file_io.h +156 -0
  275. data/vendor/git.tukaani.org/xz/src/xz/hardware.c +150 -0
  276. data/vendor/git.tukaani.org/xz/src/xz/hardware.h +37 -0
  277. data/vendor/git.tukaani.org/xz/src/xz/list.c +1192 -0
  278. data/vendor/git.tukaani.org/xz/src/xz/list.h +18 -0
  279. data/vendor/git.tukaani.org/xz/src/xz/main.c +330 -0
  280. data/vendor/git.tukaani.org/xz/src/xz/main.h +30 -0
  281. data/vendor/git.tukaani.org/xz/src/xz/message.c +1258 -0
  282. data/vendor/git.tukaani.org/xz/src/xz/message.h +167 -0
  283. data/vendor/git.tukaani.org/xz/src/xz/mytime.c +89 -0
  284. data/vendor/git.tukaani.org/xz/src/xz/mytime.h +47 -0
  285. data/vendor/git.tukaani.org/xz/src/xz/options.c +363 -0
  286. data/vendor/git.tukaani.org/xz/src/xz/options.h +31 -0
  287. data/vendor/git.tukaani.org/xz/src/xz/private.h +66 -0
  288. data/vendor/git.tukaani.org/xz/src/xz/signals.c +209 -0
  289. data/vendor/git.tukaani.org/xz/src/xz/signals.h +43 -0
  290. data/vendor/git.tukaani.org/xz/src/xz/suffix.c +399 -0
  291. data/vendor/git.tukaani.org/xz/src/xz/suffix.h +28 -0
  292. data/vendor/git.tukaani.org/xz/src/xz/util.c +288 -0
  293. data/vendor/git.tukaani.org/xz/src/xz/util.h +123 -0
  294. data/vendor/git.tukaani.org/xz/src/xz/xz.1 +2786 -0
  295. data/vendor/git.tukaani.org/xz/src/xz/xz_w32res.rc +12 -0
  296. data/vendor/git.tukaani.org/xz/src/xzdec/Makefile.am +82 -0
  297. data/vendor/git.tukaani.org/xz/src/xzdec/lzmadec_w32res.rc +12 -0
  298. data/vendor/git.tukaani.org/xz/src/xzdec/xzdec.1 +146 -0
  299. data/vendor/git.tukaani.org/xz/src/xzdec/xzdec.c +323 -0
  300. data/vendor/git.tukaani.org/xz/src/xzdec/xzdec_w32res.rc +12 -0
  301. data/vendor/git.tukaani.org/xz/tests/Makefile.am +57 -0
  302. data/vendor/git.tukaani.org/xz/tests/bcj_test.c +65 -0
  303. data/vendor/git.tukaani.org/xz/tests/compress_prepared_bcj_sparc +0 -0
  304. data/vendor/git.tukaani.org/xz/tests/compress_prepared_bcj_x86 +0 -0
  305. data/vendor/git.tukaani.org/xz/tests/create_compress_files.c +158 -0
  306. data/vendor/git.tukaani.org/xz/tests/files/README +240 -0
  307. data/vendor/git.tukaani.org/xz/tests/files/bad-0-backward_size.xz +0 -0
  308. data/vendor/git.tukaani.org/xz/tests/files/bad-0-empty-truncated.xz +0 -0
  309. data/vendor/git.tukaani.org/xz/tests/files/bad-0-footer_magic.xz +0 -0
  310. data/vendor/git.tukaani.org/xz/tests/files/bad-0-header_magic.xz +0 -0
  311. data/vendor/git.tukaani.org/xz/tests/files/bad-0-nonempty_index.xz +0 -0
  312. data/vendor/git.tukaani.org/xz/tests/files/bad-0cat-alone.xz +0 -0
  313. data/vendor/git.tukaani.org/xz/tests/files/bad-0cat-header_magic.xz +0 -0
  314. data/vendor/git.tukaani.org/xz/tests/files/bad-0catpad-empty.xz +0 -0
  315. data/vendor/git.tukaani.org/xz/tests/files/bad-0pad-empty.xz +0 -0
  316. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-1.xz +0 -0
  317. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-2.xz +0 -0
  318. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-3.xz +0 -0
  319. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-4.xz +0 -0
  320. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-5.xz +0 -0
  321. data/vendor/git.tukaani.org/xz/tests/files/bad-1-block_header-6.xz +0 -0
  322. data/vendor/git.tukaani.org/xz/tests/files/bad-1-check-crc32.xz +0 -0
  323. data/vendor/git.tukaani.org/xz/tests/files/bad-1-check-crc64.xz +0 -0
  324. data/vendor/git.tukaani.org/xz/tests/files/bad-1-check-sha256.xz +0 -0
  325. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-1.xz +0 -0
  326. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-2.xz +0 -0
  327. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-3.xz +0 -0
  328. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-4.xz +0 -0
  329. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-5.xz +0 -0
  330. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-6.xz +0 -0
  331. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-7.xz +0 -0
  332. data/vendor/git.tukaani.org/xz/tests/files/bad-1-lzma2-8.xz +0 -0
  333. data/vendor/git.tukaani.org/xz/tests/files/bad-1-stream_flags-1.xz +0 -0
  334. data/vendor/git.tukaani.org/xz/tests/files/bad-1-stream_flags-2.xz +0 -0
  335. data/vendor/git.tukaani.org/xz/tests/files/bad-1-stream_flags-3.xz +0 -0
  336. data/vendor/git.tukaani.org/xz/tests/files/bad-1-vli-1.xz +0 -0
  337. data/vendor/git.tukaani.org/xz/tests/files/bad-1-vli-2.xz +0 -0
  338. data/vendor/git.tukaani.org/xz/tests/files/bad-2-compressed_data_padding.xz +0 -0
  339. data/vendor/git.tukaani.org/xz/tests/files/bad-2-index-1.xz +0 -0
  340. data/vendor/git.tukaani.org/xz/tests/files/bad-2-index-2.xz +0 -0
  341. data/vendor/git.tukaani.org/xz/tests/files/bad-2-index-3.xz +0 -0
  342. data/vendor/git.tukaani.org/xz/tests/files/bad-2-index-4.xz +0 -0
  343. data/vendor/git.tukaani.org/xz/tests/files/bad-2-index-5.xz +0 -0
  344. data/vendor/git.tukaani.org/xz/tests/files/good-0-empty.xz +0 -0
  345. data/vendor/git.tukaani.org/xz/tests/files/good-0cat-empty.xz +0 -0
  346. data/vendor/git.tukaani.org/xz/tests/files/good-0catpad-empty.xz +0 -0
  347. data/vendor/git.tukaani.org/xz/tests/files/good-0pad-empty.xz +0 -0
  348. data/vendor/git.tukaani.org/xz/tests/files/good-1-3delta-lzma2.xz +0 -0
  349. data/vendor/git.tukaani.org/xz/tests/files/good-1-block_header-1.xz +0 -0
  350. data/vendor/git.tukaani.org/xz/tests/files/good-1-block_header-2.xz +0 -0
  351. data/vendor/git.tukaani.org/xz/tests/files/good-1-block_header-3.xz +0 -0
  352. data/vendor/git.tukaani.org/xz/tests/files/good-1-check-crc32.xz +0 -0
  353. data/vendor/git.tukaani.org/xz/tests/files/good-1-check-crc64.xz +0 -0
  354. data/vendor/git.tukaani.org/xz/tests/files/good-1-check-none.xz +0 -0
  355. data/vendor/git.tukaani.org/xz/tests/files/good-1-check-sha256.xz +0 -0
  356. data/vendor/git.tukaani.org/xz/tests/files/good-1-delta-lzma2.tiff.xz +0 -0
  357. data/vendor/git.tukaani.org/xz/tests/files/good-1-lzma2-1.xz +0 -0
  358. data/vendor/git.tukaani.org/xz/tests/files/good-1-lzma2-2.xz +0 -0
  359. data/vendor/git.tukaani.org/xz/tests/files/good-1-lzma2-3.xz +0 -0
  360. data/vendor/git.tukaani.org/xz/tests/files/good-1-lzma2-4.xz +0 -0
  361. data/vendor/git.tukaani.org/xz/tests/files/good-1-lzma2-5.xz +0 -0
  362. data/vendor/git.tukaani.org/xz/tests/files/good-1-sparc-lzma2.xz +0 -0
  363. data/vendor/git.tukaani.org/xz/tests/files/good-1-x86-lzma2.xz +0 -0
  364. data/vendor/git.tukaani.org/xz/tests/files/good-2-lzma2.xz +0 -0
  365. data/vendor/git.tukaani.org/xz/tests/files/unsupported-block_header.xz +0 -0
  366. data/vendor/git.tukaani.org/xz/tests/files/unsupported-check.xz +0 -0
  367. data/vendor/git.tukaani.org/xz/tests/files/unsupported-filter_flags-1.xz +0 -0
  368. data/vendor/git.tukaani.org/xz/tests/files/unsupported-filter_flags-2.xz +0 -0
  369. data/vendor/git.tukaani.org/xz/tests/files/unsupported-filter_flags-3.xz +0 -0
  370. data/vendor/git.tukaani.org/xz/tests/test_bcj_exact_size.c +113 -0
  371. data/vendor/git.tukaani.org/xz/tests/test_block_header.c +240 -0
  372. data/vendor/git.tukaani.org/xz/tests/test_check.c +83 -0
  373. data/vendor/git.tukaani.org/xz/tests/test_compress.sh +142 -0
  374. data/vendor/git.tukaani.org/xz/tests/test_files.sh +57 -0
  375. data/vendor/git.tukaani.org/xz/tests/test_filter_flags.c +258 -0
  376. data/vendor/git.tukaani.org/xz/tests/test_index.c +689 -0
  377. data/vendor/git.tukaani.org/xz/tests/test_scripts.sh +76 -0
  378. data/vendor/git.tukaani.org/xz/tests/test_stream_flags.c +180 -0
  379. data/vendor/git.tukaani.org/xz/tests/tests.h +124 -0
  380. data/vendor/git.tukaani.org/xz/tests/xzgrep_expected_output +39 -0
  381. data/vendor/git.tukaani.org/xz/windows/INSTALL-MSVC.txt +47 -0
  382. data/vendor/git.tukaani.org/xz/windows/INSTALL-MinGW.txt +138 -0
  383. data/vendor/git.tukaani.org/xz/windows/README-Windows.txt +122 -0
  384. data/vendor/git.tukaani.org/xz/windows/build.bash +203 -0
  385. data/vendor/git.tukaani.org/xz/windows/vs2013/config.h +148 -0
  386. data/vendor/git.tukaani.org/xz/windows/vs2013/liblzma.vcxproj +354 -0
  387. data/vendor/git.tukaani.org/xz/windows/vs2013/liblzma_dll.vcxproj +383 -0
  388. data/vendor/git.tukaani.org/xz/windows/vs2013/xz_win.sln +48 -0
  389. data/vendor/git.tukaani.org/xz/windows/vs2017/config.h +148 -0
  390. data/vendor/git.tukaani.org/xz/windows/vs2017/liblzma.vcxproj +355 -0
  391. data/vendor/git.tukaani.org/xz/windows/vs2017/liblzma_dll.vcxproj +384 -0
  392. data/vendor/git.tukaani.org/xz/windows/vs2017/xz_win.sln +48 -0
  393. metadata +457 -0
@@ -0,0 +1,71 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ /// \file arm.c
4
+ /// \brief Filter for ARM binaries
5
+ ///
6
+ // Authors: Igor Pavlov
7
+ // Lasse Collin
8
+ //
9
+ // This file has been put into the public domain.
10
+ // You can do whatever you want with this file.
11
+ //
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ #include "simple_private.h"
15
+
16
+
17
+ static size_t
18
+ arm_code(void *simple lzma_attribute((__unused__)),
19
+ uint32_t now_pos, bool is_encoder,
20
+ uint8_t *buffer, size_t size)
21
+ {
22
+ size_t i;
23
+ for (i = 0; i + 4 <= size; i += 4) {
24
+ if (buffer[i + 3] == 0xEB) {
25
+ uint32_t src = (buffer[i + 2] << 16)
26
+ | (buffer[i + 1] << 8)
27
+ | (buffer[i + 0]);
28
+ src <<= 2;
29
+
30
+ uint32_t dest;
31
+ if (is_encoder)
32
+ dest = now_pos + (uint32_t)(i) + 8 + src;
33
+ else
34
+ dest = src - (now_pos + (uint32_t)(i) + 8);
35
+
36
+ dest >>= 2;
37
+ buffer[i + 2] = (dest >> 16);
38
+ buffer[i + 1] = (dest >> 8);
39
+ buffer[i + 0] = dest;
40
+ }
41
+ }
42
+
43
+ return i;
44
+ }
45
+
46
+
47
+ static lzma_ret
48
+ arm_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
49
+ const lzma_filter_info *filters, bool is_encoder)
50
+ {
51
+ return lzma_simple_coder_init(next, allocator, filters,
52
+ &arm_code, 0, 4, 4, is_encoder);
53
+ }
54
+
55
+
56
+ extern lzma_ret
57
+ lzma_simple_arm_encoder_init(lzma_next_coder *next,
58
+ const lzma_allocator *allocator,
59
+ const lzma_filter_info *filters)
60
+ {
61
+ return arm_coder_init(next, allocator, filters, true);
62
+ }
63
+
64
+
65
+ extern lzma_ret
66
+ lzma_simple_arm_decoder_init(lzma_next_coder *next,
67
+ const lzma_allocator *allocator,
68
+ const lzma_filter_info *filters)
69
+ {
70
+ return arm_coder_init(next, allocator, filters, false);
71
+ }
@@ -0,0 +1,76 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ /// \file armthumb.c
4
+ /// \brief Filter for ARM-Thumb binaries
5
+ ///
6
+ // Authors: Igor Pavlov
7
+ // Lasse Collin
8
+ //
9
+ // This file has been put into the public domain.
10
+ // You can do whatever you want with this file.
11
+ //
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ #include "simple_private.h"
15
+
16
+
17
+ static size_t
18
+ armthumb_code(void *simple lzma_attribute((__unused__)),
19
+ uint32_t now_pos, bool is_encoder,
20
+ uint8_t *buffer, size_t size)
21
+ {
22
+ size_t i;
23
+ for (i = 0; i + 4 <= size; i += 2) {
24
+ if ((buffer[i + 1] & 0xF8) == 0xF0
25
+ && (buffer[i + 3] & 0xF8) == 0xF8) {
26
+ uint32_t src = ((buffer[i + 1] & 0x7) << 19)
27
+ | (buffer[i + 0] << 11)
28
+ | ((buffer[i + 3] & 0x7) << 8)
29
+ | (buffer[i + 2]);
30
+
31
+ src <<= 1;
32
+
33
+ uint32_t dest;
34
+ if (is_encoder)
35
+ dest = now_pos + (uint32_t)(i) + 4 + src;
36
+ else
37
+ dest = src - (now_pos + (uint32_t)(i) + 4);
38
+
39
+ dest >>= 1;
40
+ buffer[i + 1] = 0xF0 | ((dest >> 19) & 0x7);
41
+ buffer[i + 0] = (dest >> 11);
42
+ buffer[i + 3] = 0xF8 | ((dest >> 8) & 0x7);
43
+ buffer[i + 2] = (dest);
44
+ i += 2;
45
+ }
46
+ }
47
+
48
+ return i;
49
+ }
50
+
51
+
52
+ static lzma_ret
53
+ armthumb_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
54
+ const lzma_filter_info *filters, bool is_encoder)
55
+ {
56
+ return lzma_simple_coder_init(next, allocator, filters,
57
+ &armthumb_code, 0, 4, 2, is_encoder);
58
+ }
59
+
60
+
61
+ extern lzma_ret
62
+ lzma_simple_armthumb_encoder_init(lzma_next_coder *next,
63
+ const lzma_allocator *allocator,
64
+ const lzma_filter_info *filters)
65
+ {
66
+ return armthumb_coder_init(next, allocator, filters, true);
67
+ }
68
+
69
+
70
+ extern lzma_ret
71
+ lzma_simple_armthumb_decoder_init(lzma_next_coder *next,
72
+ const lzma_allocator *allocator,
73
+ const lzma_filter_info *filters)
74
+ {
75
+ return armthumb_coder_init(next, allocator, filters, false);
76
+ }
@@ -0,0 +1,112 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ /// \file ia64.c
4
+ /// \brief Filter for IA64 (Itanium) binaries
5
+ ///
6
+ // Authors: Igor Pavlov
7
+ // Lasse Collin
8
+ //
9
+ // This file has been put into the public domain.
10
+ // You can do whatever you want with this file.
11
+ //
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ #include "simple_private.h"
15
+
16
+
17
+ static size_t
18
+ ia64_code(void *simple lzma_attribute((__unused__)),
19
+ uint32_t now_pos, bool is_encoder,
20
+ uint8_t *buffer, size_t size)
21
+ {
22
+ static const uint32_t BRANCH_TABLE[32] = {
23
+ 0, 0, 0, 0, 0, 0, 0, 0,
24
+ 0, 0, 0, 0, 0, 0, 0, 0,
25
+ 4, 4, 6, 6, 0, 0, 7, 7,
26
+ 4, 4, 0, 0, 4, 4, 0, 0
27
+ };
28
+
29
+ size_t i;
30
+ for (i = 0; i + 16 <= size; i += 16) {
31
+ const uint32_t instr_template = buffer[i] & 0x1F;
32
+ const uint32_t mask = BRANCH_TABLE[instr_template];
33
+ uint32_t bit_pos = 5;
34
+
35
+ for (size_t slot = 0; slot < 3; ++slot, bit_pos += 41) {
36
+ if (((mask >> slot) & 1) == 0)
37
+ continue;
38
+
39
+ const size_t byte_pos = (bit_pos >> 3);
40
+ const uint32_t bit_res = bit_pos & 0x7;
41
+ uint64_t instruction = 0;
42
+
43
+ for (size_t j = 0; j < 6; ++j)
44
+ instruction += (uint64_t)(
45
+ buffer[i + j + byte_pos])
46
+ << (8 * j);
47
+
48
+ uint64_t inst_norm = instruction >> bit_res;
49
+
50
+ if (((inst_norm >> 37) & 0xF) == 0x5
51
+ && ((inst_norm >> 9) & 0x7) == 0
52
+ /* && (inst_norm & 0x3F)== 0 */
53
+ ) {
54
+ uint32_t src = (uint32_t)(
55
+ (inst_norm >> 13) & 0xFFFFF);
56
+ src |= ((inst_norm >> 36) & 1) << 20;
57
+
58
+ src <<= 4;
59
+
60
+ uint32_t dest;
61
+ if (is_encoder)
62
+ dest = now_pos + (uint32_t)(i) + src;
63
+ else
64
+ dest = src - (now_pos + (uint32_t)(i));
65
+
66
+ dest >>= 4;
67
+
68
+ inst_norm &= ~((uint64_t)(0x8FFFFF) << 13);
69
+ inst_norm |= (uint64_t)(dest & 0xFFFFF) << 13;
70
+ inst_norm |= (uint64_t)(dest & 0x100000)
71
+ << (36 - 20);
72
+
73
+ instruction &= (1 << bit_res) - 1;
74
+ instruction |= (inst_norm << bit_res);
75
+
76
+ for (size_t j = 0; j < 6; j++)
77
+ buffer[i + j + byte_pos] = (uint8_t)(
78
+ instruction
79
+ >> (8 * j));
80
+ }
81
+ }
82
+ }
83
+
84
+ return i;
85
+ }
86
+
87
+
88
+ static lzma_ret
89
+ ia64_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
90
+ const lzma_filter_info *filters, bool is_encoder)
91
+ {
92
+ return lzma_simple_coder_init(next, allocator, filters,
93
+ &ia64_code, 0, 16, 16, is_encoder);
94
+ }
95
+
96
+
97
+ extern lzma_ret
98
+ lzma_simple_ia64_encoder_init(lzma_next_coder *next,
99
+ const lzma_allocator *allocator,
100
+ const lzma_filter_info *filters)
101
+ {
102
+ return ia64_coder_init(next, allocator, filters, true);
103
+ }
104
+
105
+
106
+ extern lzma_ret
107
+ lzma_simple_ia64_decoder_init(lzma_next_coder *next,
108
+ const lzma_allocator *allocator,
109
+ const lzma_filter_info *filters)
110
+ {
111
+ return ia64_coder_init(next, allocator, filters, false);
112
+ }
@@ -0,0 +1,75 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ /// \file powerpc.c
4
+ /// \brief Filter for PowerPC (big endian) binaries
5
+ ///
6
+ // Authors: Igor Pavlov
7
+ // Lasse Collin
8
+ //
9
+ // This file has been put into the public domain.
10
+ // You can do whatever you want with this file.
11
+ //
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ #include "simple_private.h"
15
+
16
+
17
+ static size_t
18
+ powerpc_code(void *simple lzma_attribute((__unused__)),
19
+ uint32_t now_pos, bool is_encoder,
20
+ uint8_t *buffer, size_t size)
21
+ {
22
+ size_t i;
23
+ for (i = 0; i + 4 <= size; i += 4) {
24
+ // PowerPC branch 6(48) 24(Offset) 1(Abs) 1(Link)
25
+ if ((buffer[i] >> 2) == 0x12
26
+ && ((buffer[i + 3] & 3) == 1)) {
27
+
28
+ const uint32_t src = ((buffer[i + 0] & 3) << 24)
29
+ | (buffer[i + 1] << 16)
30
+ | (buffer[i + 2] << 8)
31
+ | (buffer[i + 3] & (~3));
32
+
33
+ uint32_t dest;
34
+ if (is_encoder)
35
+ dest = now_pos + (uint32_t)(i) + src;
36
+ else
37
+ dest = src - (now_pos + (uint32_t)(i));
38
+
39
+ buffer[i + 0] = 0x48 | ((dest >> 24) & 0x03);
40
+ buffer[i + 1] = (dest >> 16);
41
+ buffer[i + 2] = (dest >> 8);
42
+ buffer[i + 3] &= 0x03;
43
+ buffer[i + 3] |= dest;
44
+ }
45
+ }
46
+
47
+ return i;
48
+ }
49
+
50
+
51
+ static lzma_ret
52
+ powerpc_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
53
+ const lzma_filter_info *filters, bool is_encoder)
54
+ {
55
+ return lzma_simple_coder_init(next, allocator, filters,
56
+ &powerpc_code, 0, 4, 4, is_encoder);
57
+ }
58
+
59
+
60
+ extern lzma_ret
61
+ lzma_simple_powerpc_encoder_init(lzma_next_coder *next,
62
+ const lzma_allocator *allocator,
63
+ const lzma_filter_info *filters)
64
+ {
65
+ return powerpc_coder_init(next, allocator, filters, true);
66
+ }
67
+
68
+
69
+ extern lzma_ret
70
+ lzma_simple_powerpc_decoder_init(lzma_next_coder *next,
71
+ const lzma_allocator *allocator,
72
+ const lzma_filter_info *filters)
73
+ {
74
+ return powerpc_coder_init(next, allocator, filters, false);
75
+ }
@@ -0,0 +1,282 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ /// \file simple_coder.c
4
+ /// \brief Wrapper for simple filters
5
+ ///
6
+ /// Simple filters don't change the size of the data i.e. number of bytes
7
+ /// in equals the number of bytes out.
8
+ //
9
+ // Author: Lasse Collin
10
+ //
11
+ // This file has been put into the public domain.
12
+ // You can do whatever you want with this file.
13
+ //
14
+ ///////////////////////////////////////////////////////////////////////////////
15
+
16
+ #include "simple_private.h"
17
+
18
+
19
+ /// Copied or encodes/decodes more data to out[].
20
+ static lzma_ret
21
+ copy_or_code(lzma_simple_coder *coder, const lzma_allocator *allocator,
22
+ const uint8_t *restrict in, size_t *restrict in_pos,
23
+ size_t in_size, uint8_t *restrict out,
24
+ size_t *restrict out_pos, size_t out_size, lzma_action action)
25
+ {
26
+ assert(!coder->end_was_reached);
27
+
28
+ if (coder->next.code == NULL) {
29
+ lzma_bufcpy(in, in_pos, in_size, out, out_pos, out_size);
30
+
31
+ // Check if end of stream was reached.
32
+ if (coder->is_encoder && action == LZMA_FINISH
33
+ && *in_pos == in_size)
34
+ coder->end_was_reached = true;
35
+
36
+ } else {
37
+ // Call the next coder in the chain to provide us some data.
38
+ const lzma_ret ret = coder->next.code(
39
+ coder->next.coder, allocator,
40
+ in, in_pos, in_size,
41
+ out, out_pos, out_size, action);
42
+
43
+ if (ret == LZMA_STREAM_END) {
44
+ assert(!coder->is_encoder
45
+ || action == LZMA_FINISH);
46
+ coder->end_was_reached = true;
47
+
48
+ } else if (ret != LZMA_OK) {
49
+ return ret;
50
+ }
51
+ }
52
+
53
+ return LZMA_OK;
54
+ }
55
+
56
+
57
+ static size_t
58
+ call_filter(lzma_simple_coder *coder, uint8_t *buffer, size_t size)
59
+ {
60
+ const size_t filtered = coder->filter(coder->simple,
61
+ coder->now_pos, coder->is_encoder,
62
+ buffer, size);
63
+ coder->now_pos += filtered;
64
+ return filtered;
65
+ }
66
+
67
+
68
+ static lzma_ret
69
+ simple_code(void *coder_ptr, const lzma_allocator *allocator,
70
+ const uint8_t *restrict in, size_t *restrict in_pos,
71
+ size_t in_size, uint8_t *restrict out,
72
+ size_t *restrict out_pos, size_t out_size, lzma_action action)
73
+ {
74
+ lzma_simple_coder *coder = coder_ptr;
75
+
76
+ // TODO: Add partial support for LZMA_SYNC_FLUSH. We can support it
77
+ // in cases when the filter is able to filter everything. With most
78
+ // simple filters it can be done at offset that is a multiple of 2,
79
+ // 4, or 16. With x86 filter, it needs good luck, and thus cannot
80
+ // be made to work predictably.
81
+ if (action == LZMA_SYNC_FLUSH)
82
+ return LZMA_OPTIONS_ERROR;
83
+
84
+ // Flush already filtered data from coder->buffer[] to out[].
85
+ if (coder->pos < coder->filtered) {
86
+ lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered,
87
+ out, out_pos, out_size);
88
+
89
+ // If we couldn't flush all the filtered data, return to
90
+ // application immediately.
91
+ if (coder->pos < coder->filtered)
92
+ return LZMA_OK;
93
+
94
+ if (coder->end_was_reached) {
95
+ assert(coder->filtered == coder->size);
96
+ return LZMA_STREAM_END;
97
+ }
98
+ }
99
+
100
+ // If we get here, there is no filtered data left in the buffer.
101
+ coder->filtered = 0;
102
+
103
+ assert(!coder->end_was_reached);
104
+
105
+ // If there is more output space left than there is unfiltered data
106
+ // in coder->buffer[], flush coder->buffer[] to out[], and copy/code
107
+ // more data to out[] hopefully filling it completely. Then filter
108
+ // the data in out[]. This step is where most of the data gets
109
+ // filtered if the buffer sizes used by the application are reasonable.
110
+ const size_t out_avail = out_size - *out_pos;
111
+ const size_t buf_avail = coder->size - coder->pos;
112
+ if (out_avail > buf_avail || buf_avail == 0) {
113
+ // Store the old position so that we know from which byte
114
+ // to start filtering.
115
+ const size_t out_start = *out_pos;
116
+
117
+ // Flush data from coder->buffer[] to out[], but don't reset
118
+ // coder->pos and coder->size yet. This way the coder can be
119
+ // restarted if the next filter in the chain returns e.g.
120
+ // LZMA_MEM_ERROR.
121
+ memcpy(out + *out_pos, coder->buffer + coder->pos, buf_avail);
122
+ *out_pos += buf_avail;
123
+
124
+ // Copy/Encode/Decode more data to out[].
125
+ {
126
+ const lzma_ret ret = copy_or_code(coder, allocator,
127
+ in, in_pos, in_size,
128
+ out, out_pos, out_size, action);
129
+ assert(ret != LZMA_STREAM_END);
130
+ if (ret != LZMA_OK)
131
+ return ret;
132
+ }
133
+
134
+ // Filter out[].
135
+ const size_t size = *out_pos - out_start;
136
+ const size_t filtered = call_filter(
137
+ coder, out + out_start, size);
138
+
139
+ const size_t unfiltered = size - filtered;
140
+ assert(unfiltered <= coder->allocated / 2);
141
+
142
+ // Now we can update coder->pos and coder->size, because
143
+ // the next coder in the chain (if any) was successful.
144
+ coder->pos = 0;
145
+ coder->size = unfiltered;
146
+
147
+ if (coder->end_was_reached) {
148
+ // The last byte has been copied to out[] already.
149
+ // They are left as is.
150
+ coder->size = 0;
151
+
152
+ } else if (unfiltered > 0) {
153
+ // There is unfiltered data left in out[]. Copy it to
154
+ // coder->buffer[] and rewind *out_pos appropriately.
155
+ *out_pos -= unfiltered;
156
+ memcpy(coder->buffer, out + *out_pos, unfiltered);
157
+ }
158
+ } else if (coder->pos > 0) {
159
+ memmove(coder->buffer, coder->buffer + coder->pos, buf_avail);
160
+ coder->size -= coder->pos;
161
+ coder->pos = 0;
162
+ }
163
+
164
+ assert(coder->pos == 0);
165
+
166
+ // If coder->buffer[] isn't empty, try to fill it by copying/decoding
167
+ // more data. Then filter coder->buffer[] and copy the successfully
168
+ // filtered data to out[]. It is probable, that some filtered and
169
+ // unfiltered data will be left to coder->buffer[].
170
+ if (coder->size > 0) {
171
+ {
172
+ const lzma_ret ret = copy_or_code(coder, allocator,
173
+ in, in_pos, in_size,
174
+ coder->buffer, &coder->size,
175
+ coder->allocated, action);
176
+ assert(ret != LZMA_STREAM_END);
177
+ if (ret != LZMA_OK)
178
+ return ret;
179
+ }
180
+
181
+ coder->filtered = call_filter(
182
+ coder, coder->buffer, coder->size);
183
+
184
+ // Everything is considered to be filtered if coder->buffer[]
185
+ // contains the last bytes of the data.
186
+ if (coder->end_was_reached)
187
+ coder->filtered = coder->size;
188
+
189
+ // Flush as much as possible.
190
+ lzma_bufcpy(coder->buffer, &coder->pos, coder->filtered,
191
+ out, out_pos, out_size);
192
+ }
193
+
194
+ // Check if we got everything done.
195
+ if (coder->end_was_reached && coder->pos == coder->size)
196
+ return LZMA_STREAM_END;
197
+
198
+ return LZMA_OK;
199
+ }
200
+
201
+
202
+ static void
203
+ simple_coder_end(void *coder_ptr, const lzma_allocator *allocator)
204
+ {
205
+ lzma_simple_coder *coder = coder_ptr;
206
+ lzma_next_end(&coder->next, allocator);
207
+ lzma_free(coder->simple, allocator);
208
+ lzma_free(coder, allocator);
209
+ return;
210
+ }
211
+
212
+
213
+ static lzma_ret
214
+ simple_coder_update(void *coder_ptr, const lzma_allocator *allocator,
215
+ const lzma_filter *filters_null lzma_attribute((__unused__)),
216
+ const lzma_filter *reversed_filters)
217
+ {
218
+ lzma_simple_coder *coder = coder_ptr;
219
+
220
+ // No update support, just call the next filter in the chain.
221
+ return lzma_next_filter_update(
222
+ &coder->next, allocator, reversed_filters + 1);
223
+ }
224
+
225
+
226
+ extern lzma_ret
227
+ lzma_simple_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
228
+ const lzma_filter_info *filters,
229
+ size_t (*filter)(void *simple, uint32_t now_pos,
230
+ bool is_encoder, uint8_t *buffer, size_t size),
231
+ size_t simple_size, size_t unfiltered_max,
232
+ uint32_t alignment, bool is_encoder)
233
+ {
234
+ // Allocate memory for the lzma_simple_coder structure if needed.
235
+ lzma_simple_coder *coder = next->coder;
236
+ if (coder == NULL) {
237
+ // Here we allocate space also for the temporary buffer. We
238
+ // need twice the size of unfiltered_max, because then it
239
+ // is always possible to filter at least unfiltered_max bytes
240
+ // more data in coder->buffer[] if it can be filled completely.
241
+ coder = lzma_alloc(sizeof(lzma_simple_coder)
242
+ + 2 * unfiltered_max, allocator);
243
+ if (coder == NULL)
244
+ return LZMA_MEM_ERROR;
245
+
246
+ next->coder = coder;
247
+ next->code = &simple_code;
248
+ next->end = &simple_coder_end;
249
+ next->update = &simple_coder_update;
250
+
251
+ coder->next = LZMA_NEXT_CODER_INIT;
252
+ coder->filter = filter;
253
+ coder->allocated = 2 * unfiltered_max;
254
+
255
+ // Allocate memory for filter-specific data structure.
256
+ if (simple_size > 0) {
257
+ coder->simple = lzma_alloc(simple_size, allocator);
258
+ if (coder->simple == NULL)
259
+ return LZMA_MEM_ERROR;
260
+ } else {
261
+ coder->simple = NULL;
262
+ }
263
+ }
264
+
265
+ if (filters[0].options != NULL) {
266
+ const lzma_options_bcj *simple = filters[0].options;
267
+ coder->now_pos = simple->start_offset;
268
+ if (coder->now_pos & (alignment - 1))
269
+ return LZMA_OPTIONS_ERROR;
270
+ } else {
271
+ coder->now_pos = 0;
272
+ }
273
+
274
+ // Reset variables.
275
+ coder->is_encoder = is_encoder;
276
+ coder->end_was_reached = false;
277
+ coder->pos = 0;
278
+ coder->filtered = 0;
279
+ coder->size = 0;
280
+
281
+ return lzma_next_filter_init(&coder->next, allocator, filters + 1);
282
+ }