node-liblzma 1.0.4 → 1.1.4

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 (880) hide show
  1. package/History.md +5 -0
  2. package/README.md +65 -37
  3. package/binding.gyp +671 -43
  4. package/package.json +39 -24
  5. package/prebuilds/linux-x64/node_lzma.node +0 -0
  6. package/prebuilds/mac-x64/node_lzma.node +0 -0
  7. package/prebuilds/win-x64/node_lzma.node +0 -0
  8. package/scripts/download_extract_deps.py +29 -0
  9. package/scripts/prebuildify.py +13 -0
  10. package/scripts/walk_sources.py +7 -0
  11. package/src/bindings/module.cpp +86 -86
  12. package/src/bindings/node-liblzma.cpp +292 -273
  13. package/src/bindings/node-liblzma.hpp +62 -90
  14. package/src/lzma.coffee +25 -18
  15. package/.npmignore +0 -1
  16. package/.travis.yml +0 -35
  17. package/build/Makefile +0 -329
  18. package/build/Release/.deps/Release/node-liblzma.node.d +0 -1
  19. package/build/Release/.deps/Release/obj.target/action_after_build.stamp.d +0 -1
  20. package/build/Release/.deps/Release/obj.target/node-liblzma/src/bindings/module.o.d +0 -89
  21. package/build/Release/.deps/Release/obj.target/node-liblzma/src/bindings/node-liblzma.o.d +0 -89
  22. package/build/Release/.deps/Release/obj.target/node-liblzma.node.d +0 -1
  23. package/build/Release/.deps/home/o2/dev/node-liblzma/build/node-liblzma.node.d +0 -1
  24. package/build/Release/node-liblzma.node +0 -0
  25. package/build/Release/obj.target/action_after_build.stamp +0 -0
  26. package/build/Release/obj.target/node-liblzma/src/bindings/module.o +0 -0
  27. package/build/Release/obj.target/node-liblzma/src/bindings/node-liblzma.o +0 -0
  28. package/build/Release/obj.target/node-liblzma.node +0 -0
  29. package/build/action_after_build.target.mk +0 -32
  30. package/build/binding.Makefile +0 -6
  31. package/build/config.gypi +0 -143
  32. package/build/node-liblzma.node +0 -0
  33. package/build/node-liblzma.target.mk +0 -144
  34. package/build.yml +0 -65
  35. package/deps/xz/ABOUT-NLS +0 -1327
  36. package/deps/xz/AUTHORS +0 -27
  37. package/deps/xz/COPYING +0 -65
  38. package/deps/xz/COPYING.GPLv2 +0 -339
  39. package/deps/xz/COPYING.GPLv3 +0 -674
  40. package/deps/xz/COPYING.LGPLv2.1 +0 -502
  41. package/deps/xz/ChangeLog +0 -14953
  42. package/deps/xz/Doxyfile +0 -1234
  43. package/deps/xz/Doxyfile.in +0 -1234
  44. package/deps/xz/INSTALL +0 -554
  45. package/deps/xz/INSTALL.generic +0 -365
  46. package/deps/xz/Makefile +0 -1067
  47. package/deps/xz/Makefile.am +0 -109
  48. package/deps/xz/Makefile.in +0 -1067
  49. package/deps/xz/NEWS +0 -505
  50. package/deps/xz/PACKAGERS +0 -231
  51. package/deps/xz/README +0 -308
  52. package/deps/xz/THANKS +0 -116
  53. package/deps/xz/TODO +0 -111
  54. package/deps/xz/aclocal.m4 +0 -1225
  55. package/deps/xz/autogen.sh +0 -22
  56. package/deps/xz/autom4te.cache/output.0 +0 -21751
  57. package/deps/xz/autom4te.cache/output.1 +0 -21751
  58. package/deps/xz/autom4te.cache/requests +0 -415
  59. package/deps/xz/autom4te.cache/traces.0 +0 -6996
  60. package/deps/xz/autom4te.cache/traces.1 +0 -1783
  61. package/deps/xz/build-aux/compile +0 -347
  62. package/deps/xz/build-aux/config.guess +0 -1558
  63. package/deps/xz/build-aux/config.rpath +0 -672
  64. package/deps/xz/build-aux/config.sub +0 -1791
  65. package/deps/xz/build-aux/depcomp +0 -791
  66. package/deps/xz/build-aux/install-sh +0 -527
  67. package/deps/xz/build-aux/ltmain.sh +0 -9661
  68. package/deps/xz/build-aux/manconv.sh +0 -58
  69. package/deps/xz/build-aux/missing +0 -215
  70. package/deps/xz/build-aux/version.sh +0 -24
  71. package/deps/xz/config.h +0 -487
  72. package/deps/xz/config.h.in +0 -486
  73. package/deps/xz/config.h.in~ +0 -485
  74. package/deps/xz/config.log +0 -5446
  75. package/deps/xz/config.status +0 -2587
  76. package/deps/xz/configure +0 -21751
  77. package/deps/xz/configure.ac +0 -842
  78. package/deps/xz/debug/.deps/crc32.Po +0 -1
  79. package/deps/xz/debug/.deps/full_flush.Po +0 -1
  80. package/deps/xz/debug/.deps/hex2bin.Po +0 -1
  81. package/deps/xz/debug/.deps/known_sizes.Po +0 -1
  82. package/deps/xz/debug/.deps/memusage.Po +0 -1
  83. package/deps/xz/debug/.deps/repeat.Po +0 -1
  84. package/deps/xz/debug/.deps/sync_flush.Po +0 -1
  85. package/deps/xz/debug/Makefile +0 -691
  86. package/deps/xz/debug/Makefile.am +0 -30
  87. package/deps/xz/debug/Makefile.in +0 -691
  88. package/deps/xz/debug/README +0 -17
  89. package/deps/xz/debug/crc32.c +0 -39
  90. package/deps/xz/debug/full_flush.c +0 -103
  91. package/deps/xz/debug/hex2bin.c +0 -53
  92. package/deps/xz/debug/known_sizes.c +0 -129
  93. package/deps/xz/debug/memusage.c +0 -51
  94. package/deps/xz/debug/repeat.c +0 -36
  95. package/deps/xz/debug/sync_flush.c +0 -125
  96. package/deps/xz/debug/translation.bash +0 -100
  97. package/deps/xz/doc/examples/00_README.txt +0 -31
  98. package/deps/xz/doc/examples/01_compress_easy.c +0 -297
  99. package/deps/xz/doc/examples/02_decompress.c +0 -287
  100. package/deps/xz/doc/examples/03_compress_custom.c +0 -193
  101. package/deps/xz/doc/examples/04_compress_easy_mt.c +0 -206
  102. package/deps/xz/doc/examples/Makefile +0 -24
  103. package/deps/xz/doc/examples_old/xz_pipe_comp.c +0 -127
  104. package/deps/xz/doc/examples_old/xz_pipe_decomp.c +0 -123
  105. package/deps/xz/doc/faq.txt +0 -224
  106. package/deps/xz/doc/history.txt +0 -150
  107. package/deps/xz/doc/lzma-file-format.txt +0 -166
  108. package/deps/xz/doc/man/pdf-a4/lzmainfo-a4.pdf +0 -0
  109. package/deps/xz/doc/man/pdf-a4/xz-a4.pdf +0 -0
  110. package/deps/xz/doc/man/pdf-a4/xzdec-a4.pdf +0 -0
  111. package/deps/xz/doc/man/pdf-a4/xzdiff-a4.pdf +0 -0
  112. package/deps/xz/doc/man/pdf-a4/xzgrep-a4.pdf +0 -0
  113. package/deps/xz/doc/man/pdf-a4/xzless-a4.pdf +0 -0
  114. package/deps/xz/doc/man/pdf-a4/xzmore-a4.pdf +0 -0
  115. package/deps/xz/doc/man/pdf-letter/lzmainfo-letter.pdf +0 -0
  116. package/deps/xz/doc/man/pdf-letter/xz-letter.pdf +0 -0
  117. package/deps/xz/doc/man/pdf-letter/xzdec-letter.pdf +0 -0
  118. package/deps/xz/doc/man/pdf-letter/xzdiff-letter.pdf +0 -0
  119. package/deps/xz/doc/man/pdf-letter/xzgrep-letter.pdf +0 -0
  120. package/deps/xz/doc/man/pdf-letter/xzless-letter.pdf +0 -0
  121. package/deps/xz/doc/man/pdf-letter/xzmore-letter.pdf +0 -0
  122. package/deps/xz/doc/man/txt/lzmainfo.txt +0 -40
  123. package/deps/xz/doc/man/txt/xz.txt +0 -1483
  124. package/deps/xz/doc/man/txt/xzdec.txt +0 -80
  125. package/deps/xz/doc/man/txt/xzdiff.txt +0 -36
  126. package/deps/xz/doc/man/txt/xzgrep.txt +0 -39
  127. package/deps/xz/doc/man/txt/xzless.txt +0 -39
  128. package/deps/xz/doc/man/txt/xzmore.txt +0 -34
  129. package/deps/xz/doc/xz-file-format.txt +0 -1150
  130. package/deps/xz/dos/INSTALL.txt +0 -79
  131. package/deps/xz/dos/Makefile +0 -147
  132. package/deps/xz/dos/README.txt +0 -123
  133. package/deps/xz/dos/config.h +0 -130
  134. package/deps/xz/extra/7z2lzma/7z2lzma.bash +0 -115
  135. package/deps/xz/extra/scanlzma/scanlzma.c +0 -84
  136. package/deps/xz/include/lzma/base.h +0 -654
  137. package/deps/xz/include/lzma/bcj.h +0 -90
  138. package/deps/xz/include/lzma/block.h +0 -581
  139. package/deps/xz/include/lzma/check.h +0 -150
  140. package/deps/xz/include/lzma/container.h +0 -619
  141. package/deps/xz/include/lzma/delta.h +0 -77
  142. package/deps/xz/include/lzma/filter.h +0 -425
  143. package/deps/xz/include/lzma/hardware.h +0 -64
  144. package/deps/xz/include/lzma/index.h +0 -682
  145. package/deps/xz/include/lzma/index_hash.h +0 -107
  146. package/deps/xz/include/lzma/lzma12.h +0 -420
  147. package/deps/xz/include/lzma/stream_flags.h +0 -223
  148. package/deps/xz/include/lzma/version.h +0 -121
  149. package/deps/xz/include/lzma/vli.h +0 -166
  150. package/deps/xz/include/lzma.h +0 -321
  151. package/deps/xz/lib/.deps/getopt.Po +0 -1
  152. package/deps/xz/lib/.deps/getopt1.Po +0 -1
  153. package/deps/xz/lib/Makefile +0 -566
  154. package/deps/xz/lib/Makefile.am +0 -32
  155. package/deps/xz/lib/Makefile.in +0 -566
  156. package/deps/xz/lib/getopt.c +0 -1197
  157. package/deps/xz/lib/getopt.in.h +0 -226
  158. package/deps/xz/lib/getopt1.c +0 -171
  159. package/deps/xz/lib/getopt_int.h +0 -131
  160. package/deps/xz/lib/liblzma.a +0 -0
  161. package/deps/xz/lib/liblzma.la +0 -41
  162. package/deps/xz/lib/pkgconfig/liblzma.pc +0 -19
  163. package/deps/xz/libtool +0 -10221
  164. package/deps/xz/m4/ax_pthread.m4 +0 -332
  165. package/deps/xz/m4/codeset.m4 +0 -21
  166. package/deps/xz/m4/fcntl-o.m4 +0 -81
  167. package/deps/xz/m4/getopt.m4 +0 -71
  168. package/deps/xz/m4/gettext.m4 +0 -383
  169. package/deps/xz/m4/glibc2.m4 +0 -30
  170. package/deps/xz/m4/glibc21.m4 +0 -30
  171. package/deps/xz/m4/iconv.m4 +0 -199
  172. package/deps/xz/m4/intdiv0.m4 +0 -84
  173. package/deps/xz/m4/intl.m4 +0 -294
  174. package/deps/xz/m4/intldir.m4 +0 -19
  175. package/deps/xz/m4/intlmacosx.m4 +0 -51
  176. package/deps/xz/m4/intmax.m4 +0 -33
  177. package/deps/xz/m4/inttypes-pri.m4 +0 -36
  178. package/deps/xz/m4/inttypes_h.m4 +0 -26
  179. package/deps/xz/m4/lcmessage.m4 +0 -31
  180. package/deps/xz/m4/lib-ld.m4 +0 -110
  181. package/deps/xz/m4/lib-link.m4 +0 -774
  182. package/deps/xz/m4/lib-prefix.m4 +0 -224
  183. package/deps/xz/m4/libtool.m4 +0 -7997
  184. package/deps/xz/m4/lock.m4 +0 -37
  185. package/deps/xz/m4/longlong.m4 +0 -106
  186. package/deps/xz/m4/ltoptions.m4 +0 -384
  187. package/deps/xz/m4/ltsugar.m4 +0 -123
  188. package/deps/xz/m4/ltversion.m4 +0 -23
  189. package/deps/xz/m4/lt~obsolete.m4 +0 -98
  190. package/deps/xz/m4/nls.m4 +0 -32
  191. package/deps/xz/m4/po.m4 +0 -449
  192. package/deps/xz/m4/posix-shell.m4 +0 -63
  193. package/deps/xz/m4/printf-posix.m4 +0 -45
  194. package/deps/xz/m4/progtest.m4 +0 -92
  195. package/deps/xz/m4/size_max.m4 +0 -75
  196. package/deps/xz/m4/stdint_h.m4 +0 -26
  197. package/deps/xz/m4/threadlib.m4 +0 -347
  198. package/deps/xz/m4/tuklib_common.m4 +0 -22
  199. package/deps/xz/m4/tuklib_cpucores.m4 +0 -148
  200. package/deps/xz/m4/tuklib_integer.m4 +0 -74
  201. package/deps/xz/m4/tuklib_mbstr.m4 +0 -30
  202. package/deps/xz/m4/tuklib_physmem.m4 +0 -212
  203. package/deps/xz/m4/tuklib_progname.m4 +0 -25
  204. package/deps/xz/m4/uintmax_t.m4 +0 -30
  205. package/deps/xz/m4/visibility.m4 +0 -74
  206. package/deps/xz/m4/wchar_t.m4 +0 -20
  207. package/deps/xz/m4/wint_t.m4 +0 -28
  208. package/deps/xz/m4/xsize.m4 +0 -13
  209. package/deps/xz/macosx/build.sh +0 -113
  210. package/deps/xz/po/LINGUAS +0 -6
  211. package/deps/xz/po/Makefile +0 -549
  212. package/deps/xz/po/Makefile.in +0 -444
  213. package/deps/xz/po/Makefile.in.in +0 -444
  214. package/deps/xz/po/Makevars +0 -46
  215. package/deps/xz/po/Makevars.template +0 -41
  216. package/deps/xz/po/POTFILES +0 -12
  217. package/deps/xz/po/POTFILES.in +0 -13
  218. package/deps/xz/po/Rules-quot +0 -47
  219. package/deps/xz/po/boldquot.sed +0 -10
  220. package/deps/xz/po/cs.gmo +0 -0
  221. package/deps/xz/po/cs.po +0 -989
  222. package/deps/xz/po/de.gmo +0 -0
  223. package/deps/xz/po/de.po +0 -990
  224. package/deps/xz/po/en@boldquot.header +0 -25
  225. package/deps/xz/po/en@quot.header +0 -22
  226. package/deps/xz/po/fr.gmo +0 -0
  227. package/deps/xz/po/fr.po +0 -974
  228. package/deps/xz/po/insert-header.sin +0 -23
  229. package/deps/xz/po/it.gmo +0 -0
  230. package/deps/xz/po/it.po +0 -975
  231. package/deps/xz/po/pl.gmo +0 -0
  232. package/deps/xz/po/pl.po +0 -964
  233. package/deps/xz/po/quot.sed +0 -6
  234. package/deps/xz/po/remove-potcdate.sin +0 -19
  235. package/deps/xz/po/stamp-po +0 -1
  236. package/deps/xz/po/vi.gmo +0 -0
  237. package/deps/xz/po/vi.po +0 -970
  238. package/deps/xz/po/xz.pot +0 -854
  239. package/deps/xz/share/doc/xz/AUTHORS +0 -27
  240. package/deps/xz/share/doc/xz/COPYING +0 -65
  241. package/deps/xz/share/doc/xz/COPYING.GPLv2 +0 -339
  242. package/deps/xz/share/doc/xz/NEWS +0 -505
  243. package/deps/xz/share/doc/xz/README +0 -308
  244. package/deps/xz/share/doc/xz/THANKS +0 -116
  245. package/deps/xz/share/doc/xz/TODO +0 -111
  246. package/deps/xz/share/doc/xz/examples/00_README.txt +0 -31
  247. package/deps/xz/share/doc/xz/examples/01_compress_easy.c +0 -297
  248. package/deps/xz/share/doc/xz/examples/02_decompress.c +0 -287
  249. package/deps/xz/share/doc/xz/examples/03_compress_custom.c +0 -193
  250. package/deps/xz/share/doc/xz/examples/04_compress_easy_mt.c +0 -206
  251. package/deps/xz/share/doc/xz/examples/Makefile +0 -24
  252. package/deps/xz/share/doc/xz/examples_old/xz_pipe_comp.c +0 -127
  253. package/deps/xz/share/doc/xz/examples_old/xz_pipe_decomp.c +0 -123
  254. package/deps/xz/share/doc/xz/faq.txt +0 -224
  255. package/deps/xz/share/doc/xz/history.txt +0 -150
  256. package/deps/xz/share/doc/xz/lzma-file-format.txt +0 -166
  257. package/deps/xz/share/doc/xz/xz-file-format.txt +0 -1150
  258. package/deps/xz/share/locale/cs/LC_MESSAGES/xz.mo +0 -0
  259. package/deps/xz/share/locale/de/LC_MESSAGES/xz.mo +0 -0
  260. package/deps/xz/share/locale/fr/LC_MESSAGES/xz.mo +0 -0
  261. package/deps/xz/share/locale/it/LC_MESSAGES/xz.mo +0 -0
  262. package/deps/xz/share/locale/pl/LC_MESSAGES/xz.mo +0 -0
  263. package/deps/xz/share/locale/vi/LC_MESSAGES/xz.mo +0 -0
  264. package/deps/xz/src/Makefile +0 -674
  265. package/deps/xz/src/Makefile.am +0 -42
  266. package/deps/xz/src/Makefile.in +0 -674
  267. package/deps/xz/src/common/common_w32res.rc +0 -50
  268. package/deps/xz/src/common/mythread.h +0 -521
  269. package/deps/xz/src/common/sysdefs.h +0 -202
  270. package/deps/xz/src/common/tuklib_common.h +0 -71
  271. package/deps/xz/src/common/tuklib_config.h +0 -7
  272. package/deps/xz/src/common/tuklib_cpucores.c +0 -91
  273. package/deps/xz/src/common/tuklib_cpucores.h +0 -23
  274. package/deps/xz/src/common/tuklib_exit.c +0 -57
  275. package/deps/xz/src/common/tuklib_exit.h +0 -25
  276. package/deps/xz/src/common/tuklib_gettext.h +0 -44
  277. package/deps/xz/src/common/tuklib_integer.h +0 -523
  278. package/deps/xz/src/common/tuklib_mbstr.h +0 -66
  279. package/deps/xz/src/common/tuklib_mbstr_fw.c +0 -31
  280. package/deps/xz/src/common/tuklib_mbstr_width.c +0 -64
  281. package/deps/xz/src/common/tuklib_open_stdxxx.c +0 -57
  282. package/deps/xz/src/common/tuklib_open_stdxxx.h +0 -23
  283. package/deps/xz/src/common/tuklib_physmem.c +0 -215
  284. package/deps/xz/src/common/tuklib_physmem.h +0 -28
  285. package/deps/xz/src/common/tuklib_progname.c +0 -50
  286. package/deps/xz/src/common/tuklib_progname.h +0 -32
  287. package/deps/xz/src/liblzma/.deps/liblzma_la-alone_decoder.Plo +0 -269
  288. package/deps/xz/src/liblzma/.deps/liblzma_la-alone_encoder.Plo +0 -263
  289. package/deps/xz/src/liblzma/.deps/liblzma_la-arm.Plo +0 -263
  290. package/deps/xz/src/liblzma/.deps/liblzma_la-armthumb.Plo +0 -263
  291. package/deps/xz/src/liblzma/.deps/liblzma_la-auto_decoder.Plo +0 -263
  292. package/deps/xz/src/liblzma/.deps/liblzma_la-block_buffer_decoder.Plo +0 -261
  293. package/deps/xz/src/liblzma/.deps/liblzma_la-block_buffer_encoder.Plo +0 -273
  294. package/deps/xz/src/liblzma/.deps/liblzma_la-block_decoder.Plo +0 -268
  295. package/deps/xz/src/liblzma/.deps/liblzma_la-block_encoder.Plo +0 -268
  296. package/deps/xz/src/liblzma/.deps/liblzma_la-block_header_decoder.Plo +0 -263
  297. package/deps/xz/src/liblzma/.deps/liblzma_la-block_header_encoder.Plo +0 -263
  298. package/deps/xz/src/liblzma/.deps/liblzma_la-block_util.Plo +0 -260
  299. package/deps/xz/src/liblzma/.deps/liblzma_la-check.Plo +0 -261
  300. package/deps/xz/src/liblzma/.deps/liblzma_la-common.Plo +0 -258
  301. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_fast.Plo +0 -263
  302. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_small.Plo +0 -1
  303. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_table.Plo +0 -260
  304. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_x86.Plo +0 -1
  305. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_fast.Plo +0 -263
  306. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_small.Plo +0 -1
  307. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_table.Plo +0 -260
  308. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_x86.Plo +0 -1
  309. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_common.Plo +0 -263
  310. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_decoder.Plo +0 -265
  311. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_encoder.Plo +0 -265
  312. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_buffer_encoder.Plo +0 -261
  313. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_decoder_memusage.Plo +0 -261
  314. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_encoder.Plo +0 -261
  315. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_encoder_memusage.Plo +0 -261
  316. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_preset.Plo +0 -261
  317. package/deps/xz/src/liblzma/.deps/liblzma_la-fastpos_table.Plo +0 -261
  318. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_buffer_decoder.Plo +0 -261
  319. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_buffer_encoder.Plo +0 -261
  320. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_common.Plo +0 -261
  321. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_decoder.Plo +0 -283
  322. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_encoder.Plo +0 -283
  323. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_flags_decoder.Plo +0 -261
  324. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_flags_encoder.Plo +0 -261
  325. package/deps/xz/src/liblzma/.deps/liblzma_la-hardware_cputhreads.Plo +0 -260
  326. package/deps/xz/src/liblzma/.deps/liblzma_la-hardware_physmem.Plo +0 -260
  327. package/deps/xz/src/liblzma/.deps/liblzma_la-ia64.Plo +0 -263
  328. package/deps/xz/src/liblzma/.deps/liblzma_la-index.Plo +0 -262
  329. package/deps/xz/src/liblzma/.deps/liblzma_la-index_decoder.Plo +0 -266
  330. package/deps/xz/src/liblzma/.deps/liblzma_la-index_encoder.Plo +0 -268
  331. package/deps/xz/src/liblzma/.deps/liblzma_la-index_hash.Plo +0 -265
  332. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_decoder.Plo +0 -261
  333. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_encoder.Plo +0 -286
  334. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_encoder_mf.Plo +0 -286
  335. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma2_decoder.Plo +0 -266
  336. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma2_encoder.Plo +0 -268
  337. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_decoder.Plo +0 -274
  338. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder.Plo +0 -285
  339. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_optimum_fast.Plo +0 -300
  340. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_optimum_normal.Plo +0 -303
  341. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_presets.Plo +0 -259
  342. package/deps/xz/src/liblzma/.deps/liblzma_la-outqueue.Plo +0 -260
  343. package/deps/xz/src/liblzma/.deps/liblzma_la-powerpc.Plo +0 -263
  344. package/deps/xz/src/liblzma/.deps/liblzma_la-price_table.Plo +0 -266
  345. package/deps/xz/src/liblzma/.deps/liblzma_la-sha256.Plo +0 -261
  346. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_coder.Plo +0 -263
  347. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_decoder.Plo +0 -263
  348. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_encoder.Plo +0 -263
  349. package/deps/xz/src/liblzma/.deps/liblzma_la-sparc.Plo +0 -263
  350. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_buffer_decoder.Plo +0 -261
  351. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_buffer_encoder.Plo +0 -261
  352. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_decoder.Plo +0 -263
  353. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_encoder.Plo +0 -263
  354. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_encoder_mt.Plo +0 -273
  355. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_common.Plo +0 -261
  356. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_decoder.Plo +0 -261
  357. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_encoder.Plo +0 -261
  358. package/deps/xz/src/liblzma/.deps/liblzma_la-tuklib_cpucores.Plo +0 -170
  359. package/deps/xz/src/liblzma/.deps/liblzma_la-tuklib_physmem.Plo +0 -170
  360. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_decoder.Plo +0 -258
  361. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_encoder.Plo +0 -258
  362. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_size.Plo +0 -258
  363. package/deps/xz/src/liblzma/.deps/liblzma_la-x86.Plo +0 -263
  364. package/deps/xz/src/liblzma/.libs/liblzma.a +0 -0
  365. package/deps/xz/src/liblzma/.libs/liblzma.lai +0 -41
  366. package/deps/xz/src/liblzma/Makefile +0 -1858
  367. package/deps/xz/src/liblzma/Makefile.am +0 -122
  368. package/deps/xz/src/liblzma/Makefile.in +0 -1858
  369. package/deps/xz/src/liblzma/api/Makefile +0 -608
  370. package/deps/xz/src/liblzma/api/Makefile.am +0 -23
  371. package/deps/xz/src/liblzma/api/Makefile.in +0 -608
  372. package/deps/xz/src/liblzma/api/lzma/base.h +0 -654
  373. package/deps/xz/src/liblzma/api/lzma/bcj.h +0 -90
  374. package/deps/xz/src/liblzma/api/lzma/block.h +0 -581
  375. package/deps/xz/src/liblzma/api/lzma/check.h +0 -150
  376. package/deps/xz/src/liblzma/api/lzma/container.h +0 -619
  377. package/deps/xz/src/liblzma/api/lzma/delta.h +0 -77
  378. package/deps/xz/src/liblzma/api/lzma/filter.h +0 -425
  379. package/deps/xz/src/liblzma/api/lzma/hardware.h +0 -64
  380. package/deps/xz/src/liblzma/api/lzma/index.h +0 -682
  381. package/deps/xz/src/liblzma/api/lzma/index_hash.h +0 -107
  382. package/deps/xz/src/liblzma/api/lzma/lzma12.h +0 -420
  383. package/deps/xz/src/liblzma/api/lzma/stream_flags.h +0 -223
  384. package/deps/xz/src/liblzma/api/lzma/version.h +0 -121
  385. package/deps/xz/src/liblzma/api/lzma/vli.h +0 -166
  386. package/deps/xz/src/liblzma/api/lzma.h +0 -321
  387. package/deps/xz/src/liblzma/check/Makefile.inc +0 -53
  388. package/deps/xz/src/liblzma/check/check.c +0 -174
  389. package/deps/xz/src/liblzma/check/check.h +0 -162
  390. package/deps/xz/src/liblzma/check/crc32_fast.c +0 -82
  391. package/deps/xz/src/liblzma/check/crc32_small.c +0 -61
  392. package/deps/xz/src/liblzma/check/crc32_table.c +0 -19
  393. package/deps/xz/src/liblzma/check/crc32_table_be.h +0 -525
  394. package/deps/xz/src/liblzma/check/crc32_table_le.h +0 -525
  395. package/deps/xz/src/liblzma/check/crc32_tablegen.c +0 -117
  396. package/deps/xz/src/liblzma/check/crc32_x86.S +0 -304
  397. package/deps/xz/src/liblzma/check/crc64_fast.c +0 -72
  398. package/deps/xz/src/liblzma/check/crc64_small.c +0 -53
  399. package/deps/xz/src/liblzma/check/crc64_table.c +0 -19
  400. package/deps/xz/src/liblzma/check/crc64_table_be.h +0 -521
  401. package/deps/xz/src/liblzma/check/crc64_table_le.h +0 -521
  402. package/deps/xz/src/liblzma/check/crc64_tablegen.c +0 -88
  403. package/deps/xz/src/liblzma/check/crc64_x86.S +0 -287
  404. package/deps/xz/src/liblzma/check/crc_macros.h +0 -30
  405. package/deps/xz/src/liblzma/check/sha256.c +0 -196
  406. package/deps/xz/src/liblzma/common/Makefile.inc +0 -76
  407. package/deps/xz/src/liblzma/common/alone_decoder.c +0 -238
  408. package/deps/xz/src/liblzma/common/alone_decoder.h +0 -23
  409. package/deps/xz/src/liblzma/common/alone_encoder.c +0 -157
  410. package/deps/xz/src/liblzma/common/auto_decoder.c +0 -186
  411. package/deps/xz/src/liblzma/common/block_buffer_decoder.c +0 -80
  412. package/deps/xz/src/liblzma/common/block_buffer_encoder.c +0 -337
  413. package/deps/xz/src/liblzma/common/block_buffer_encoder.h +0 -24
  414. package/deps/xz/src/liblzma/common/block_decoder.c +0 -252
  415. package/deps/xz/src/liblzma/common/block_decoder.h +0 -22
  416. package/deps/xz/src/liblzma/common/block_encoder.c +0 -217
  417. package/deps/xz/src/liblzma/common/block_encoder.h +0 -47
  418. package/deps/xz/src/liblzma/common/block_header_decoder.c +0 -124
  419. package/deps/xz/src/liblzma/common/block_header_encoder.c +0 -132
  420. package/deps/xz/src/liblzma/common/block_util.c +0 -90
  421. package/deps/xz/src/liblzma/common/common.c +0 -443
  422. package/deps/xz/src/liblzma/common/common.h +0 -318
  423. package/deps/xz/src/liblzma/common/easy_buffer_encoder.c +0 -27
  424. package/deps/xz/src/liblzma/common/easy_decoder_memusage.c +0 -24
  425. package/deps/xz/src/liblzma/common/easy_encoder.c +0 -24
  426. package/deps/xz/src/liblzma/common/easy_encoder_memusage.c +0 -24
  427. package/deps/xz/src/liblzma/common/easy_preset.c +0 -27
  428. package/deps/xz/src/liblzma/common/easy_preset.h +0 -32
  429. package/deps/xz/src/liblzma/common/filter_buffer_decoder.c +0 -88
  430. package/deps/xz/src/liblzma/common/filter_buffer_encoder.c +0 -55
  431. package/deps/xz/src/liblzma/common/filter_common.c +0 -337
  432. package/deps/xz/src/liblzma/common/filter_common.h +0 -48
  433. package/deps/xz/src/liblzma/common/filter_decoder.c +0 -184
  434. package/deps/xz/src/liblzma/common/filter_decoder.h +0 -23
  435. package/deps/xz/src/liblzma/common/filter_encoder.c +0 -286
  436. package/deps/xz/src/liblzma/common/filter_encoder.h +0 -27
  437. package/deps/xz/src/liblzma/common/filter_flags_decoder.c +0 -46
  438. package/deps/xz/src/liblzma/common/filter_flags_encoder.c +0 -56
  439. package/deps/xz/src/liblzma/common/hardware_cputhreads.c +0 -22
  440. package/deps/xz/src/liblzma/common/hardware_physmem.c +0 -25
  441. package/deps/xz/src/liblzma/common/index.c +0 -1246
  442. package/deps/xz/src/liblzma/common/index.h +0 -73
  443. package/deps/xz/src/liblzma/common/index_decoder.c +0 -345
  444. package/deps/xz/src/liblzma/common/index_encoder.c +0 -254
  445. package/deps/xz/src/liblzma/common/index_encoder.h +0 -23
  446. package/deps/xz/src/liblzma/common/index_hash.c +0 -334
  447. package/deps/xz/src/liblzma/common/memcmplen.h +0 -175
  448. package/deps/xz/src/liblzma/common/outqueue.c +0 -184
  449. package/deps/xz/src/liblzma/common/outqueue.h +0 -156
  450. package/deps/xz/src/liblzma/common/stream_buffer_decoder.c +0 -91
  451. package/deps/xz/src/liblzma/common/stream_buffer_encoder.c +0 -141
  452. package/deps/xz/src/liblzma/common/stream_decoder.c +0 -462
  453. package/deps/xz/src/liblzma/common/stream_decoder.h +0 -22
  454. package/deps/xz/src/liblzma/common/stream_encoder.c +0 -332
  455. package/deps/xz/src/liblzma/common/stream_encoder_mt.c +0 -1131
  456. package/deps/xz/src/liblzma/common/stream_flags_common.c +0 -47
  457. package/deps/xz/src/liblzma/common/stream_flags_common.h +0 -33
  458. package/deps/xz/src/liblzma/common/stream_flags_decoder.c +0 -82
  459. package/deps/xz/src/liblzma/common/stream_flags_encoder.c +0 -86
  460. package/deps/xz/src/liblzma/common/vli_decoder.c +0 -86
  461. package/deps/xz/src/liblzma/common/vli_encoder.c +0 -69
  462. package/deps/xz/src/liblzma/common/vli_size.c +0 -30
  463. package/deps/xz/src/liblzma/delta/Makefile.inc +0 -23
  464. package/deps/xz/src/liblzma/delta/delta_common.c +0 -70
  465. package/deps/xz/src/liblzma/delta/delta_common.h +0 -20
  466. package/deps/xz/src/liblzma/delta/delta_decoder.c +0 -76
  467. package/deps/xz/src/liblzma/delta/delta_decoder.h +0 -26
  468. package/deps/xz/src/liblzma/delta/delta_encoder.c +0 -121
  469. package/deps/xz/src/liblzma/delta/delta_encoder.h +0 -24
  470. package/deps/xz/src/liblzma/delta/delta_private.h +0 -37
  471. package/deps/xz/src/liblzma/liblzma.la +0 -41
  472. package/deps/xz/src/liblzma/liblzma.map +0 -108
  473. package/deps/xz/src/liblzma/liblzma.pc +0 -19
  474. package/deps/xz/src/liblzma/liblzma.pc.in +0 -19
  475. package/deps/xz/src/liblzma/liblzma_la-alone_decoder.lo +0 -12
  476. package/deps/xz/src/liblzma/liblzma_la-alone_decoder.o +0 -0
  477. package/deps/xz/src/liblzma/liblzma_la-alone_encoder.lo +0 -12
  478. package/deps/xz/src/liblzma/liblzma_la-alone_encoder.o +0 -0
  479. package/deps/xz/src/liblzma/liblzma_la-arm.lo +0 -12
  480. package/deps/xz/src/liblzma/liblzma_la-arm.o +0 -0
  481. package/deps/xz/src/liblzma/liblzma_la-armthumb.lo +0 -12
  482. package/deps/xz/src/liblzma/liblzma_la-armthumb.o +0 -0
  483. package/deps/xz/src/liblzma/liblzma_la-auto_decoder.lo +0 -12
  484. package/deps/xz/src/liblzma/liblzma_la-auto_decoder.o +0 -0
  485. package/deps/xz/src/liblzma/liblzma_la-block_buffer_decoder.lo +0 -12
  486. package/deps/xz/src/liblzma/liblzma_la-block_buffer_decoder.o +0 -0
  487. package/deps/xz/src/liblzma/liblzma_la-block_buffer_encoder.lo +0 -12
  488. package/deps/xz/src/liblzma/liblzma_la-block_buffer_encoder.o +0 -0
  489. package/deps/xz/src/liblzma/liblzma_la-block_decoder.lo +0 -12
  490. package/deps/xz/src/liblzma/liblzma_la-block_decoder.o +0 -0
  491. package/deps/xz/src/liblzma/liblzma_la-block_encoder.lo +0 -12
  492. package/deps/xz/src/liblzma/liblzma_la-block_encoder.o +0 -0
  493. package/deps/xz/src/liblzma/liblzma_la-block_header_decoder.lo +0 -12
  494. package/deps/xz/src/liblzma/liblzma_la-block_header_decoder.o +0 -0
  495. package/deps/xz/src/liblzma/liblzma_la-block_header_encoder.lo +0 -12
  496. package/deps/xz/src/liblzma/liblzma_la-block_header_encoder.o +0 -0
  497. package/deps/xz/src/liblzma/liblzma_la-block_util.lo +0 -12
  498. package/deps/xz/src/liblzma/liblzma_la-block_util.o +0 -0
  499. package/deps/xz/src/liblzma/liblzma_la-check.lo +0 -12
  500. package/deps/xz/src/liblzma/liblzma_la-check.o +0 -0
  501. package/deps/xz/src/liblzma/liblzma_la-common.lo +0 -12
  502. package/deps/xz/src/liblzma/liblzma_la-common.o +0 -0
  503. package/deps/xz/src/liblzma/liblzma_la-crc32_fast.lo +0 -12
  504. package/deps/xz/src/liblzma/liblzma_la-crc32_fast.o +0 -0
  505. package/deps/xz/src/liblzma/liblzma_la-crc32_table.lo +0 -12
  506. package/deps/xz/src/liblzma/liblzma_la-crc32_table.o +0 -0
  507. package/deps/xz/src/liblzma/liblzma_la-crc64_fast.lo +0 -12
  508. package/deps/xz/src/liblzma/liblzma_la-crc64_fast.o +0 -0
  509. package/deps/xz/src/liblzma/liblzma_la-crc64_table.lo +0 -12
  510. package/deps/xz/src/liblzma/liblzma_la-crc64_table.o +0 -0
  511. package/deps/xz/src/liblzma/liblzma_la-delta_common.lo +0 -12
  512. package/deps/xz/src/liblzma/liblzma_la-delta_common.o +0 -0
  513. package/deps/xz/src/liblzma/liblzma_la-delta_decoder.lo +0 -12
  514. package/deps/xz/src/liblzma/liblzma_la-delta_decoder.o +0 -0
  515. package/deps/xz/src/liblzma/liblzma_la-delta_encoder.lo +0 -12
  516. package/deps/xz/src/liblzma/liblzma_la-delta_encoder.o +0 -0
  517. package/deps/xz/src/liblzma/liblzma_la-easy_buffer_encoder.lo +0 -12
  518. package/deps/xz/src/liblzma/liblzma_la-easy_buffer_encoder.o +0 -0
  519. package/deps/xz/src/liblzma/liblzma_la-easy_decoder_memusage.lo +0 -12
  520. package/deps/xz/src/liblzma/liblzma_la-easy_decoder_memusage.o +0 -0
  521. package/deps/xz/src/liblzma/liblzma_la-easy_encoder.lo +0 -12
  522. package/deps/xz/src/liblzma/liblzma_la-easy_encoder.o +0 -0
  523. package/deps/xz/src/liblzma/liblzma_la-easy_encoder_memusage.lo +0 -12
  524. package/deps/xz/src/liblzma/liblzma_la-easy_encoder_memusage.o +0 -0
  525. package/deps/xz/src/liblzma/liblzma_la-easy_preset.lo +0 -12
  526. package/deps/xz/src/liblzma/liblzma_la-easy_preset.o +0 -0
  527. package/deps/xz/src/liblzma/liblzma_la-fastpos_table.lo +0 -12
  528. package/deps/xz/src/liblzma/liblzma_la-fastpos_table.o +0 -0
  529. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_decoder.lo +0 -12
  530. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_decoder.o +0 -0
  531. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_encoder.lo +0 -12
  532. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_encoder.o +0 -0
  533. package/deps/xz/src/liblzma/liblzma_la-filter_common.lo +0 -12
  534. package/deps/xz/src/liblzma/liblzma_la-filter_common.o +0 -0
  535. package/deps/xz/src/liblzma/liblzma_la-filter_decoder.lo +0 -12
  536. package/deps/xz/src/liblzma/liblzma_la-filter_decoder.o +0 -0
  537. package/deps/xz/src/liblzma/liblzma_la-filter_encoder.lo +0 -12
  538. package/deps/xz/src/liblzma/liblzma_la-filter_encoder.o +0 -0
  539. package/deps/xz/src/liblzma/liblzma_la-filter_flags_decoder.lo +0 -12
  540. package/deps/xz/src/liblzma/liblzma_la-filter_flags_decoder.o +0 -0
  541. package/deps/xz/src/liblzma/liblzma_la-filter_flags_encoder.lo +0 -12
  542. package/deps/xz/src/liblzma/liblzma_la-filter_flags_encoder.o +0 -0
  543. package/deps/xz/src/liblzma/liblzma_la-hardware_cputhreads.lo +0 -12
  544. package/deps/xz/src/liblzma/liblzma_la-hardware_cputhreads.o +0 -0
  545. package/deps/xz/src/liblzma/liblzma_la-hardware_physmem.lo +0 -12
  546. package/deps/xz/src/liblzma/liblzma_la-hardware_physmem.o +0 -0
  547. package/deps/xz/src/liblzma/liblzma_la-ia64.lo +0 -12
  548. package/deps/xz/src/liblzma/liblzma_la-ia64.o +0 -0
  549. package/deps/xz/src/liblzma/liblzma_la-index.lo +0 -12
  550. package/deps/xz/src/liblzma/liblzma_la-index.o +0 -0
  551. package/deps/xz/src/liblzma/liblzma_la-index_decoder.lo +0 -12
  552. package/deps/xz/src/liblzma/liblzma_la-index_decoder.o +0 -0
  553. package/deps/xz/src/liblzma/liblzma_la-index_encoder.lo +0 -12
  554. package/deps/xz/src/liblzma/liblzma_la-index_encoder.o +0 -0
  555. package/deps/xz/src/liblzma/liblzma_la-index_hash.lo +0 -12
  556. package/deps/xz/src/liblzma/liblzma_la-index_hash.o +0 -0
  557. package/deps/xz/src/liblzma/liblzma_la-lz_decoder.lo +0 -12
  558. package/deps/xz/src/liblzma/liblzma_la-lz_decoder.o +0 -0
  559. package/deps/xz/src/liblzma/liblzma_la-lz_encoder.lo +0 -12
  560. package/deps/xz/src/liblzma/liblzma_la-lz_encoder.o +0 -0
  561. package/deps/xz/src/liblzma/liblzma_la-lz_encoder_mf.lo +0 -12
  562. package/deps/xz/src/liblzma/liblzma_la-lz_encoder_mf.o +0 -0
  563. package/deps/xz/src/liblzma/liblzma_la-lzma2_decoder.lo +0 -12
  564. package/deps/xz/src/liblzma/liblzma_la-lzma2_decoder.o +0 -0
  565. package/deps/xz/src/liblzma/liblzma_la-lzma2_encoder.lo +0 -12
  566. package/deps/xz/src/liblzma/liblzma_la-lzma2_encoder.o +0 -0
  567. package/deps/xz/src/liblzma/liblzma_la-lzma_decoder.lo +0 -12
  568. package/deps/xz/src/liblzma/liblzma_la-lzma_decoder.o +0 -0
  569. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder.lo +0 -12
  570. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder.o +0 -0
  571. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_fast.lo +0 -12
  572. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_fast.o +0 -0
  573. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_normal.lo +0 -12
  574. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_normal.o +0 -0
  575. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_presets.lo +0 -12
  576. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_presets.o +0 -0
  577. package/deps/xz/src/liblzma/liblzma_la-outqueue.lo +0 -12
  578. package/deps/xz/src/liblzma/liblzma_la-outqueue.o +0 -0
  579. package/deps/xz/src/liblzma/liblzma_la-powerpc.lo +0 -12
  580. package/deps/xz/src/liblzma/liblzma_la-powerpc.o +0 -0
  581. package/deps/xz/src/liblzma/liblzma_la-price_table.lo +0 -12
  582. package/deps/xz/src/liblzma/liblzma_la-price_table.o +0 -0
  583. package/deps/xz/src/liblzma/liblzma_la-sha256.lo +0 -12
  584. package/deps/xz/src/liblzma/liblzma_la-sha256.o +0 -0
  585. package/deps/xz/src/liblzma/liblzma_la-simple_coder.lo +0 -12
  586. package/deps/xz/src/liblzma/liblzma_la-simple_coder.o +0 -0
  587. package/deps/xz/src/liblzma/liblzma_la-simple_decoder.lo +0 -12
  588. package/deps/xz/src/liblzma/liblzma_la-simple_decoder.o +0 -0
  589. package/deps/xz/src/liblzma/liblzma_la-simple_encoder.lo +0 -12
  590. package/deps/xz/src/liblzma/liblzma_la-simple_encoder.o +0 -0
  591. package/deps/xz/src/liblzma/liblzma_la-sparc.lo +0 -12
  592. package/deps/xz/src/liblzma/liblzma_la-sparc.o +0 -0
  593. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_decoder.lo +0 -12
  594. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_decoder.o +0 -0
  595. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_encoder.lo +0 -12
  596. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_encoder.o +0 -0
  597. package/deps/xz/src/liblzma/liblzma_la-stream_decoder.lo +0 -12
  598. package/deps/xz/src/liblzma/liblzma_la-stream_decoder.o +0 -0
  599. package/deps/xz/src/liblzma/liblzma_la-stream_encoder.lo +0 -12
  600. package/deps/xz/src/liblzma/liblzma_la-stream_encoder.o +0 -0
  601. package/deps/xz/src/liblzma/liblzma_la-stream_encoder_mt.lo +0 -12
  602. package/deps/xz/src/liblzma/liblzma_la-stream_encoder_mt.o +0 -0
  603. package/deps/xz/src/liblzma/liblzma_la-stream_flags_common.lo +0 -12
  604. package/deps/xz/src/liblzma/liblzma_la-stream_flags_common.o +0 -0
  605. package/deps/xz/src/liblzma/liblzma_la-stream_flags_decoder.lo +0 -12
  606. package/deps/xz/src/liblzma/liblzma_la-stream_flags_decoder.o +0 -0
  607. package/deps/xz/src/liblzma/liblzma_la-stream_flags_encoder.lo +0 -12
  608. package/deps/xz/src/liblzma/liblzma_la-stream_flags_encoder.o +0 -0
  609. package/deps/xz/src/liblzma/liblzma_la-tuklib_cpucores.lo +0 -12
  610. package/deps/xz/src/liblzma/liblzma_la-tuklib_cpucores.o +0 -0
  611. package/deps/xz/src/liblzma/liblzma_la-tuklib_physmem.lo +0 -12
  612. package/deps/xz/src/liblzma/liblzma_la-tuklib_physmem.o +0 -0
  613. package/deps/xz/src/liblzma/liblzma_la-vli_decoder.lo +0 -12
  614. package/deps/xz/src/liblzma/liblzma_la-vli_decoder.o +0 -0
  615. package/deps/xz/src/liblzma/liblzma_la-vli_encoder.lo +0 -12
  616. package/deps/xz/src/liblzma/liblzma_la-vli_encoder.o +0 -0
  617. package/deps/xz/src/liblzma/liblzma_la-vli_size.lo +0 -12
  618. package/deps/xz/src/liblzma/liblzma_la-vli_size.o +0 -0
  619. package/deps/xz/src/liblzma/liblzma_la-x86.lo +0 -12
  620. package/deps/xz/src/liblzma/liblzma_la-x86.o +0 -0
  621. package/deps/xz/src/liblzma/liblzma_w32res.rc +0 -12
  622. package/deps/xz/src/liblzma/lz/Makefile.inc +0 -22
  623. package/deps/xz/src/liblzma/lz/lz_decoder.c +0 -300
  624. package/deps/xz/src/liblzma/lz/lz_decoder.h +0 -235
  625. package/deps/xz/src/liblzma/lz/lz_encoder.c +0 -605
  626. package/deps/xz/src/liblzma/lz/lz_encoder.h +0 -328
  627. package/deps/xz/src/liblzma/lz/lz_encoder_hash.h +0 -108
  628. package/deps/xz/src/liblzma/lz/lz_encoder_hash_table.h +0 -68
  629. package/deps/xz/src/liblzma/lz/lz_encoder_mf.c +0 -744
  630. package/deps/xz/src/liblzma/lzma/Makefile.inc +0 -43
  631. package/deps/xz/src/liblzma/lzma/fastpos.h +0 -141
  632. package/deps/xz/src/liblzma/lzma/fastpos_table.c +0 -519
  633. package/deps/xz/src/liblzma/lzma/fastpos_tablegen.c +0 -56
  634. package/deps/xz/src/liblzma/lzma/lzma2_decoder.c +0 -304
  635. package/deps/xz/src/liblzma/lzma/lzma2_decoder.h +0 -29
  636. package/deps/xz/src/liblzma/lzma/lzma2_encoder.c +0 -403
  637. package/deps/xz/src/liblzma/lzma/lzma2_encoder.h +0 -43
  638. package/deps/xz/src/liblzma/lzma/lzma_common.h +0 -224
  639. package/deps/xz/src/liblzma/lzma/lzma_decoder.c +0 -1061
  640. package/deps/xz/src/liblzma/lzma/lzma_decoder.h +0 -53
  641. package/deps/xz/src/liblzma/lzma/lzma_encoder.c +0 -676
  642. package/deps/xz/src/liblzma/lzma/lzma_encoder.h +0 -55
  643. package/deps/xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c +0 -169
  644. package/deps/xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c +0 -854
  645. package/deps/xz/src/liblzma/lzma/lzma_encoder_presets.c +0 -63
  646. package/deps/xz/src/liblzma/lzma/lzma_encoder_private.h +0 -148
  647. package/deps/xz/src/liblzma/rangecoder/Makefile.inc +0 -21
  648. package/deps/xz/src/liblzma/rangecoder/price.h +0 -92
  649. package/deps/xz/src/liblzma/rangecoder/price_table.c +0 -22
  650. package/deps/xz/src/liblzma/rangecoder/price_tablegen.c +0 -87
  651. package/deps/xz/src/liblzma/rangecoder/range_common.h +0 -73
  652. package/deps/xz/src/liblzma/rangecoder/range_decoder.h +0 -185
  653. package/deps/xz/src/liblzma/rangecoder/range_encoder.h +0 -231
  654. package/deps/xz/src/liblzma/simple/Makefile.inc +0 -47
  655. package/deps/xz/src/liblzma/simple/arm.c +0 -71
  656. package/deps/xz/src/liblzma/simple/armthumb.c +0 -76
  657. package/deps/xz/src/liblzma/simple/ia64.c +0 -112
  658. package/deps/xz/src/liblzma/simple/powerpc.c +0 -75
  659. package/deps/xz/src/liblzma/simple/simple_coder.c +0 -277
  660. package/deps/xz/src/liblzma/simple/simple_coder.h +0 -72
  661. package/deps/xz/src/liblzma/simple/simple_decoder.c +0 -40
  662. package/deps/xz/src/liblzma/simple/simple_decoder.h +0 -22
  663. package/deps/xz/src/liblzma/simple/simple_encoder.c +0 -38
  664. package/deps/xz/src/liblzma/simple/simple_encoder.h +0 -23
  665. package/deps/xz/src/liblzma/simple/simple_private.h +0 -76
  666. package/deps/xz/src/liblzma/simple/sparc.c +0 -83
  667. package/deps/xz/src/liblzma/simple/x86.c +0 -156
  668. package/deps/xz/src/liblzma/validate_map.sh +0 -68
  669. package/deps/xz/src/lzmainfo/.deps/lzmainfo-lzmainfo.Po +0 -1
  670. package/deps/xz/src/lzmainfo/.deps/lzmainfo-tuklib_exit.Po +0 -1
  671. package/deps/xz/src/lzmainfo/.deps/lzmainfo-tuklib_progname.Po +0 -1
  672. package/deps/xz/src/lzmainfo/Makefile +0 -802
  673. package/deps/xz/src/lzmainfo/Makefile.am +0 -39
  674. package/deps/xz/src/lzmainfo/Makefile.in +0 -802
  675. package/deps/xz/src/lzmainfo/lzmainfo.1 +0 -60
  676. package/deps/xz/src/lzmainfo/lzmainfo.c +0 -219
  677. package/deps/xz/src/lzmainfo/lzmainfo_w32res.rc +0 -12
  678. package/deps/xz/src/scripts/Makefile +0 -642
  679. package/deps/xz/src/scripts/Makefile.am +0 -55
  680. package/deps/xz/src/scripts/Makefile.in +0 -642
  681. package/deps/xz/src/scripts/xzdiff +0 -200
  682. package/deps/xz/src/scripts/xzdiff.1 +0 -77
  683. package/deps/xz/src/scripts/xzdiff.in +0 -200
  684. package/deps/xz/src/scripts/xzgrep +0 -215
  685. package/deps/xz/src/scripts/xzgrep.1 +0 -98
  686. package/deps/xz/src/scripts/xzgrep.in +0 -215
  687. package/deps/xz/src/scripts/xzless +0 -58
  688. package/deps/xz/src/scripts/xzless.1 +0 -69
  689. package/deps/xz/src/scripts/xzless.in +0 -58
  690. package/deps/xz/src/scripts/xzmore +0 -78
  691. package/deps/xz/src/scripts/xzmore.1 +0 -55
  692. package/deps/xz/src/scripts/xzmore.in +0 -78
  693. package/deps/xz/src/xz/.deps/xz-args.Po +0 -1
  694. package/deps/xz/src/xz/.deps/xz-coder.Po +0 -1
  695. package/deps/xz/src/xz/.deps/xz-file_io.Po +0 -1
  696. package/deps/xz/src/xz/.deps/xz-hardware.Po +0 -1
  697. package/deps/xz/src/xz/.deps/xz-list.Po +0 -1
  698. package/deps/xz/src/xz/.deps/xz-main.Po +0 -1
  699. package/deps/xz/src/xz/.deps/xz-message.Po +0 -1
  700. package/deps/xz/src/xz/.deps/xz-mytime.Po +0 -1
  701. package/deps/xz/src/xz/.deps/xz-options.Po +0 -1
  702. package/deps/xz/src/xz/.deps/xz-signals.Po +0 -1
  703. package/deps/xz/src/xz/.deps/xz-suffix.Po +0 -1
  704. package/deps/xz/src/xz/.deps/xz-tuklib_exit.Po +0 -1
  705. package/deps/xz/src/xz/.deps/xz-tuklib_mbstr_fw.Po +0 -1
  706. package/deps/xz/src/xz/.deps/xz-tuklib_mbstr_width.Po +0 -1
  707. package/deps/xz/src/xz/.deps/xz-tuklib_open_stdxxx.Po +0 -1
  708. package/deps/xz/src/xz/.deps/xz-tuklib_progname.Po +0 -1
  709. package/deps/xz/src/xz/.deps/xz-util.Po +0 -1
  710. package/deps/xz/src/xz/Makefile +0 -1066
  711. package/deps/xz/src/xz/Makefile.am +0 -107
  712. package/deps/xz/src/xz/Makefile.in +0 -1066
  713. package/deps/xz/src/xz/args.c +0 -684
  714. package/deps/xz/src/xz/args.h +0 -44
  715. package/deps/xz/src/xz/coder.c +0 -919
  716. package/deps/xz/src/xz/coder.h +0 -76
  717. package/deps/xz/src/xz/file_io.c +0 -1184
  718. package/deps/xz/src/xz/file_io.h +0 -150
  719. package/deps/xz/src/xz/hardware.c +0 -150
  720. package/deps/xz/src/xz/hardware.h +0 -37
  721. package/deps/xz/src/xz/list.c +0 -1186
  722. package/deps/xz/src/xz/list.h +0 -18
  723. package/deps/xz/src/xz/main.c +0 -307
  724. package/deps/xz/src/xz/main.h +0 -30
  725. package/deps/xz/src/xz/message.c +0 -1258
  726. package/deps/xz/src/xz/message.h +0 -167
  727. package/deps/xz/src/xz/mytime.c +0 -89
  728. package/deps/xz/src/xz/mytime.h +0 -47
  729. package/deps/xz/src/xz/options.c +0 -363
  730. package/deps/xz/src/xz/options.h +0 -31
  731. package/deps/xz/src/xz/private.h +0 -59
  732. package/deps/xz/src/xz/signals.c +0 -209
  733. package/deps/xz/src/xz/signals.h +0 -43
  734. package/deps/xz/src/xz/suffix.c +0 -399
  735. package/deps/xz/src/xz/suffix.h +0 -28
  736. package/deps/xz/src/xz/util.c +0 -288
  737. package/deps/xz/src/xz/util.h +0 -123
  738. package/deps/xz/src/xz/xz.1 +0 -2786
  739. package/deps/xz/src/xz/xz_w32res.rc +0 -12
  740. package/deps/xz/src/xzdec/.deps/lzmadec-tuklib_exit.Po +0 -1
  741. package/deps/xz/src/xzdec/.deps/lzmadec-tuklib_progname.Po +0 -1
  742. package/deps/xz/src/xzdec/.deps/lzmadec-xzdec.Po +0 -1
  743. package/deps/xz/src/xzdec/.deps/xzdec-tuklib_exit.Po +0 -1
  744. package/deps/xz/src/xzdec/.deps/xzdec-tuklib_progname.Po +0 -1
  745. package/deps/xz/src/xzdec/.deps/xzdec-xzdec.Po +0 -1
  746. package/deps/xz/src/xzdec/Makefile +0 -901
  747. package/deps/xz/src/xzdec/Makefile.am +0 -82
  748. package/deps/xz/src/xzdec/Makefile.in +0 -901
  749. package/deps/xz/src/xzdec/lzmadec_w32res.rc +0 -12
  750. package/deps/xz/src/xzdec/xzdec.1 +0 -146
  751. package/deps/xz/src/xzdec/xzdec.c +0 -323
  752. package/deps/xz/src/xzdec/xzdec_w32res.rc +0 -12
  753. package/deps/xz/stamp-h1 +0 -1
  754. package/deps/xz/tests/.deps/create_compress_files.Po +0 -1
  755. package/deps/xz/tests/.deps/test_bcj_exact_size.Po +0 -1
  756. package/deps/xz/tests/.deps/test_block_header.Po +0 -1
  757. package/deps/xz/tests/.deps/test_check.Po +0 -1
  758. package/deps/xz/tests/.deps/test_filter_flags.Po +0 -1
  759. package/deps/xz/tests/.deps/test_index.Po +0 -1
  760. package/deps/xz/tests/.deps/test_stream_flags.Po +0 -1
  761. package/deps/xz/tests/Makefile +0 -832
  762. package/deps/xz/tests/Makefile.am +0 -57
  763. package/deps/xz/tests/Makefile.in +0 -832
  764. package/deps/xz/tests/bcj_test.c +0 -65
  765. package/deps/xz/tests/compress_prepared_bcj_sparc +0 -0
  766. package/deps/xz/tests/compress_prepared_bcj_x86 +0 -0
  767. package/deps/xz/tests/create_compress_files.c +0 -158
  768. package/deps/xz/tests/files/README +0 -240
  769. package/deps/xz/tests/files/bad-0-backward_size.xz +0 -0
  770. package/deps/xz/tests/files/bad-0-empty-truncated.xz +0 -0
  771. package/deps/xz/tests/files/bad-0-footer_magic.xz +0 -0
  772. package/deps/xz/tests/files/bad-0-header_magic.xz +0 -0
  773. package/deps/xz/tests/files/bad-0-nonempty_index.xz +0 -0
  774. package/deps/xz/tests/files/bad-0cat-alone.xz +0 -0
  775. package/deps/xz/tests/files/bad-0cat-header_magic.xz +0 -0
  776. package/deps/xz/tests/files/bad-0catpad-empty.xz +0 -0
  777. package/deps/xz/tests/files/bad-0pad-empty.xz +0 -0
  778. package/deps/xz/tests/files/bad-1-block_header-1.xz +0 -0
  779. package/deps/xz/tests/files/bad-1-block_header-2.xz +0 -0
  780. package/deps/xz/tests/files/bad-1-block_header-3.xz +0 -0
  781. package/deps/xz/tests/files/bad-1-block_header-4.xz +0 -0
  782. package/deps/xz/tests/files/bad-1-block_header-5.xz +0 -0
  783. package/deps/xz/tests/files/bad-1-block_header-6.xz +0 -0
  784. package/deps/xz/tests/files/bad-1-check-crc32.xz +0 -0
  785. package/deps/xz/tests/files/bad-1-check-crc64.xz +0 -0
  786. package/deps/xz/tests/files/bad-1-check-sha256.xz +0 -0
  787. package/deps/xz/tests/files/bad-1-lzma2-1.xz +0 -0
  788. package/deps/xz/tests/files/bad-1-lzma2-2.xz +0 -0
  789. package/deps/xz/tests/files/bad-1-lzma2-3.xz +0 -0
  790. package/deps/xz/tests/files/bad-1-lzma2-4.xz +0 -0
  791. package/deps/xz/tests/files/bad-1-lzma2-5.xz +0 -0
  792. package/deps/xz/tests/files/bad-1-lzma2-6.xz +0 -0
  793. package/deps/xz/tests/files/bad-1-lzma2-7.xz +0 -0
  794. package/deps/xz/tests/files/bad-1-lzma2-8.xz +0 -0
  795. package/deps/xz/tests/files/bad-1-stream_flags-1.xz +0 -0
  796. package/deps/xz/tests/files/bad-1-stream_flags-2.xz +0 -0
  797. package/deps/xz/tests/files/bad-1-stream_flags-3.xz +0 -0
  798. package/deps/xz/tests/files/bad-1-vli-1.xz +0 -0
  799. package/deps/xz/tests/files/bad-1-vli-2.xz +0 -0
  800. package/deps/xz/tests/files/bad-2-compressed_data_padding.xz +0 -0
  801. package/deps/xz/tests/files/bad-2-index-1.xz +0 -0
  802. package/deps/xz/tests/files/bad-2-index-2.xz +0 -0
  803. package/deps/xz/tests/files/bad-2-index-3.xz +0 -0
  804. package/deps/xz/tests/files/bad-2-index-4.xz +0 -0
  805. package/deps/xz/tests/files/bad-2-index-5.xz +0 -0
  806. package/deps/xz/tests/files/good-0-empty.xz +0 -0
  807. package/deps/xz/tests/files/good-0cat-empty.xz +0 -0
  808. package/deps/xz/tests/files/good-0catpad-empty.xz +0 -0
  809. package/deps/xz/tests/files/good-0pad-empty.xz +0 -0
  810. package/deps/xz/tests/files/good-1-3delta-lzma2.xz +0 -0
  811. package/deps/xz/tests/files/good-1-block_header-1.xz +0 -0
  812. package/deps/xz/tests/files/good-1-block_header-2.xz +0 -0
  813. package/deps/xz/tests/files/good-1-block_header-3.xz +0 -0
  814. package/deps/xz/tests/files/good-1-check-crc32.xz +0 -0
  815. package/deps/xz/tests/files/good-1-check-crc64.xz +0 -0
  816. package/deps/xz/tests/files/good-1-check-none.xz +0 -0
  817. package/deps/xz/tests/files/good-1-check-sha256.xz +0 -0
  818. package/deps/xz/tests/files/good-1-delta-lzma2.tiff.xz +0 -0
  819. package/deps/xz/tests/files/good-1-lzma2-1.xz +0 -0
  820. package/deps/xz/tests/files/good-1-lzma2-2.xz +0 -0
  821. package/deps/xz/tests/files/good-1-lzma2-3.xz +0 -0
  822. package/deps/xz/tests/files/good-1-lzma2-4.xz +0 -0
  823. package/deps/xz/tests/files/good-1-lzma2-5.xz +0 -0
  824. package/deps/xz/tests/files/good-1-sparc-lzma2.xz +0 -0
  825. package/deps/xz/tests/files/good-1-x86-lzma2.xz +0 -0
  826. package/deps/xz/tests/files/good-2-lzma2.xz +0 -0
  827. package/deps/xz/tests/files/unsupported-block_header.xz +0 -0
  828. package/deps/xz/tests/files/unsupported-check.xz +0 -0
  829. package/deps/xz/tests/files/unsupported-filter_flags-1.xz +0 -0
  830. package/deps/xz/tests/files/unsupported-filter_flags-2.xz +0 -0
  831. package/deps/xz/tests/files/unsupported-filter_flags-3.xz +0 -0
  832. package/deps/xz/tests/test_bcj_exact_size.c +0 -113
  833. package/deps/xz/tests/test_block_header.c +0 -240
  834. package/deps/xz/tests/test_check.c +0 -83
  835. package/deps/xz/tests/test_compress.sh +0 -142
  836. package/deps/xz/tests/test_files.sh +0 -57
  837. package/deps/xz/tests/test_filter_flags.c +0 -258
  838. package/deps/xz/tests/test_index.c +0 -659
  839. package/deps/xz/tests/test_scripts.sh +0 -76
  840. package/deps/xz/tests/test_stream_flags.c +0 -180
  841. package/deps/xz/tests/tests.h +0 -124
  842. package/deps/xz/tests/xzgrep_expected_output +0 -39
  843. package/deps/xz/windows/INSTALL-MSVC.txt +0 -47
  844. package/deps/xz/windows/INSTALL-MinGW.txt +0 -138
  845. package/deps/xz/windows/README-Windows.txt +0 -122
  846. package/deps/xz/windows/build.bash +0 -203
  847. package/deps/xz/windows/config.h +0 -142
  848. package/deps/xz/windows/liblzma.vcxproj +0 -354
  849. package/deps/xz/windows/liblzma_dll.vcxproj +0 -383
  850. package/deps/xz/windows/xz_win.sln +0 -48
  851. package/lib/lzma.js +0 -377
  852. package/node_modules/node-pre-gyp/CHANGELOG.md +0 -319
  853. package/node_modules/node-pre-gyp/LICENSE +0 -27
  854. package/node_modules/node-pre-gyp/README.md +0 -570
  855. package/node_modules/node-pre-gyp/appveyor.yml +0 -30
  856. package/node_modules/node-pre-gyp/bin/node-pre-gyp +0 -131
  857. package/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd +0 -2
  858. package/node_modules/node-pre-gyp/lib/build.js +0 -43
  859. package/node_modules/node-pre-gyp/lib/clean.js +0 -23
  860. package/node_modules/node-pre-gyp/lib/configure.js +0 -48
  861. package/node_modules/node-pre-gyp/lib/info.js +0 -40
  862. package/node_modules/node-pre-gyp/lib/install.js +0 -215
  863. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +0 -192
  864. package/node_modules/node-pre-gyp/lib/package.js +0 -46
  865. package/node_modules/node-pre-gyp/lib/pre-binding.js +0 -25
  866. package/node_modules/node-pre-gyp/lib/publish.js +0 -77
  867. package/node_modules/node-pre-gyp/lib/rebuild.js +0 -13
  868. package/node_modules/node-pre-gyp/lib/reinstall.js +0 -13
  869. package/node_modules/node-pre-gyp/lib/reveal.js +0 -31
  870. package/node_modules/node-pre-gyp/lib/testbinary.js +0 -73
  871. package/node_modules/node-pre-gyp/lib/testpackage.js +0 -49
  872. package/node_modules/node-pre-gyp/lib/unpublish.js +0 -41
  873. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +0 -1222
  874. package/node_modules/node-pre-gyp/lib/util/compile.js +0 -87
  875. package/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js +0 -94
  876. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html +0 -26
  877. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json +0 -9
  878. package/node_modules/node-pre-gyp/lib/util/s3_setup.js +0 -27
  879. package/node_modules/node-pre-gyp/lib/util/versioning.js +0 -308
  880. package/node_modules/node-pre-gyp/package.json +0 -136
@@ -1,1184 +0,0 @@
1
- ///////////////////////////////////////////////////////////////////////////////
2
- //
3
- /// \file file_io.c
4
- /// \brief File opening, unlinking, and closing
5
- //
6
- // Author: Lasse Collin
7
- //
8
- // This file has been put into the public domain.
9
- // You can do whatever you want with this file.
10
- //
11
- ///////////////////////////////////////////////////////////////////////////////
12
-
13
- #include "private.h"
14
-
15
- #include <fcntl.h>
16
-
17
- #ifdef TUKLIB_DOSLIKE
18
- # include <io.h>
19
- #else
20
- # include <poll.h>
21
- static bool warn_fchown;
22
- #endif
23
-
24
- #if defined(HAVE_FUTIMES) || defined(HAVE_FUTIMESAT) || defined(HAVE_UTIMES)
25
- # include <sys/time.h>
26
- #elif defined(HAVE_UTIME)
27
- # include <utime.h>
28
- #endif
29
-
30
- #include "tuklib_open_stdxxx.h"
31
-
32
- #ifndef O_BINARY
33
- # define O_BINARY 0
34
- #endif
35
-
36
- #ifndef O_NOCTTY
37
- # define O_NOCTTY 0
38
- #endif
39
-
40
-
41
- typedef enum {
42
- IO_WAIT_MORE, // Reading or writing is possible.
43
- IO_WAIT_ERROR, // Error or user_abort
44
- IO_WAIT_TIMEOUT, // poll() timed out
45
- } io_wait_ret;
46
-
47
-
48
- /// If true, try to create sparse files when decompressing.
49
- static bool try_sparse = true;
50
-
51
- #ifndef TUKLIB_DOSLIKE
52
- /// File status flags of standard input. This is used by io_open_src()
53
- /// and io_close_src().
54
- static int stdin_flags;
55
- static bool restore_stdin_flags = false;
56
-
57
- /// Original file status flags of standard output. This is used by
58
- /// io_open_dest() and io_close_dest() to save and restore the flags.
59
- static int stdout_flags;
60
- static bool restore_stdout_flags = false;
61
-
62
- /// Self-pipe used together with the user_abort variable to avoid
63
- /// race conditions with signal handling.
64
- static int user_abort_pipe[2];
65
- #endif
66
-
67
-
68
- static bool io_write_buf(file_pair *pair, const uint8_t *buf, size_t size);
69
-
70
-
71
- extern void
72
- io_init(void)
73
- {
74
- // Make sure that stdin, stdout, and stderr are connected to
75
- // a valid file descriptor. Exit immediately with exit code ERROR
76
- // if we cannot make the file descriptors valid. Maybe we should
77
- // print an error message, but our stderr could be screwed anyway.
78
- tuklib_open_stdxxx(E_ERROR);
79
-
80
- #ifndef TUKLIB_DOSLIKE
81
- // If fchown() fails setting the owner, we warn about it only if
82
- // we are root.
83
- warn_fchown = geteuid() == 0;
84
-
85
- // Create a pipe for the self-pipe trick.
86
- if (pipe(user_abort_pipe))
87
- message_fatal(_("Error creating a pipe: %s"),
88
- strerror(errno));
89
-
90
- // Make both ends of the pipe non-blocking.
91
- for (unsigned i = 0; i < 2; ++i) {
92
- int flags = fcntl(user_abort_pipe[i], F_GETFL);
93
- if (flags == -1 || fcntl(user_abort_pipe[i], F_SETFL,
94
- flags | O_NONBLOCK) == -1)
95
- message_fatal(_("Error creating a pipe: %s"),
96
- strerror(errno));
97
- }
98
- #endif
99
-
100
- #ifdef __DJGPP__
101
- // Avoid doing useless things when statting files.
102
- // This isn't important but doesn't hurt.
103
- _djstat_flags = _STAT_EXEC_EXT | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
104
- #endif
105
-
106
- return;
107
- }
108
-
109
-
110
- #ifndef TUKLIB_DOSLIKE
111
- extern void
112
- io_write_to_user_abort_pipe(void)
113
- {
114
- // If the write() fails, it's probably due to the pipe being full.
115
- // Failing in that case is fine. If the reason is something else,
116
- // there's not much we can do since this is called in a signal
117
- // handler. So ignore the errors and try to avoid warnings with
118
- // GCC and glibc when _FORTIFY_SOURCE=2 is used.
119
- uint8_t b = '\0';
120
- const int ret = write(user_abort_pipe[1], &b, 1);
121
- (void)ret;
122
- return;
123
- }
124
- #endif
125
-
126
-
127
- extern void
128
- io_no_sparse(void)
129
- {
130
- try_sparse = false;
131
- return;
132
- }
133
-
134
-
135
- #ifndef TUKLIB_DOSLIKE
136
- /// \brief Waits for input or output to become available or for a signal
137
- ///
138
- /// This uses the self-pipe trick to avoid a race condition that can occur
139
- /// if a signal is caught after user_abort has been checked but before e.g.
140
- /// read() has been called. In that situation read() could block unless
141
- /// non-blocking I/O is used. With non-blocking I/O something like select()
142
- /// or poll() is needed to avoid a busy-wait loop, and the same race condition
143
- /// pops up again. There are pselect() (POSIX-1.2001) and ppoll() (not in
144
- /// POSIX) but neither is portable enough in 2013. The self-pipe trick is
145
- /// old and very portable.
146
- static io_wait_ret
147
- io_wait(file_pair *pair, int timeout, bool is_reading)
148
- {
149
- struct pollfd pfd[2];
150
-
151
- if (is_reading) {
152
- pfd[0].fd = pair->src_fd;
153
- pfd[0].events = POLLIN;
154
- } else {
155
- pfd[0].fd = pair->dest_fd;
156
- pfd[0].events = POLLOUT;
157
- }
158
-
159
- pfd[1].fd = user_abort_pipe[0];
160
- pfd[1].events = POLLIN;
161
-
162
- while (true) {
163
- const int ret = poll(pfd, 2, timeout);
164
-
165
- if (user_abort)
166
- return IO_WAIT_ERROR;
167
-
168
- if (ret == -1) {
169
- if (errno == EINTR || errno == EAGAIN)
170
- continue;
171
-
172
- message_error(_("%s: poll() failed: %s"),
173
- is_reading ? pair->src_name
174
- : pair->dest_name,
175
- strerror(errno));
176
- return IO_WAIT_ERROR;
177
- }
178
-
179
- if (ret == 0) {
180
- assert(opt_flush_timeout != 0);
181
- flush_needed = true;
182
- return IO_WAIT_TIMEOUT;
183
- }
184
-
185
- if (pfd[0].revents != 0)
186
- return IO_WAIT_MORE;
187
- }
188
- }
189
- #endif
190
-
191
-
192
- /// \brief Unlink a file
193
- ///
194
- /// This tries to verify that the file being unlinked really is the file that
195
- /// we want to unlink by verifying device and inode numbers. There's still
196
- /// a small unavoidable race, but this is much better than nothing (the file
197
- /// could have been moved/replaced even hours earlier).
198
- static void
199
- io_unlink(const char *name, const struct stat *known_st)
200
- {
201
- #if defined(TUKLIB_DOSLIKE)
202
- // On DOS-like systems, st_ino is meaningless, so don't bother
203
- // testing it. Just silence a compiler warning.
204
- (void)known_st;
205
- #else
206
- struct stat new_st;
207
-
208
- // If --force was used, use stat() instead of lstat(). This way
209
- // (de)compressing symlinks works correctly. However, it also means
210
- // that xz cannot detect if a regular file foo is renamed to bar
211
- // and then a symlink foo -> bar is created. Because of stat()
212
- // instead of lstat(), xz will think that foo hasn't been replaced
213
- // with another file. Thus, xz will remove foo even though it no
214
- // longer is the same file that xz used when it started compressing.
215
- // Probably it's not too bad though, so this doesn't need a more
216
- // complex fix.
217
- const int stat_ret = opt_force
218
- ? stat(name, &new_st) : lstat(name, &new_st);
219
-
220
- if (stat_ret
221
- # ifdef __VMS
222
- // st_ino is an array, and we don't want to
223
- // compare st_dev at all.
224
- || memcmp(&new_st.st_ino, &known_st->st_ino,
225
- sizeof(new_st.st_ino)) != 0
226
- # else
227
- // Typical POSIX-like system
228
- || new_st.st_dev != known_st->st_dev
229
- || new_st.st_ino != known_st->st_ino
230
- # endif
231
- )
232
- // TRANSLATORS: When compression or decompression finishes,
233
- // and xz is going to remove the source file, xz first checks
234
- // if the source file still exists, and if it does, does its
235
- // device and inode numbers match what xz saw when it opened
236
- // the source file. If these checks fail, this message is
237
- // shown, %s being the filename, and the file is not deleted.
238
- // The check for device and inode numbers is there, because
239
- // it is possible that the user has put a new file in place
240
- // of the original file, and in that case it obviously
241
- // shouldn't be removed.
242
- message_error(_("%s: File seems to have been moved, "
243
- "not removing"), name);
244
- else
245
- #endif
246
- // There's a race condition between lstat() and unlink()
247
- // but at least we have tried to avoid removing wrong file.
248
- if (unlink(name))
249
- message_error(_("%s: Cannot remove: %s"),
250
- name, strerror(errno));
251
-
252
- return;
253
- }
254
-
255
-
256
- /// \brief Copies owner/group and permissions
257
- ///
258
- /// \todo ACL and EA support
259
- ///
260
- static void
261
- io_copy_attrs(const file_pair *pair)
262
- {
263
- // Skip chown and chmod on Windows.
264
- #ifndef TUKLIB_DOSLIKE
265
- // This function is more tricky than you may think at first.
266
- // Blindly copying permissions may permit users to access the
267
- // destination file who didn't have permission to access the
268
- // source file.
269
-
270
- // Try changing the owner of the file. If we aren't root or the owner
271
- // isn't already us, fchown() probably doesn't succeed. We warn
272
- // about failing fchown() only if we are root.
273
- if (fchown(pair->dest_fd, pair->src_st.st_uid, -1) && warn_fchown)
274
- message_warning(_("%s: Cannot set the file owner: %s"),
275
- pair->dest_name, strerror(errno));
276
-
277
- mode_t mode;
278
-
279
- if (fchown(pair->dest_fd, -1, pair->src_st.st_gid)) {
280
- message_warning(_("%s: Cannot set the file group: %s"),
281
- pair->dest_name, strerror(errno));
282
- // We can still safely copy some additional permissions:
283
- // `group' must be at least as strict as `other' and
284
- // also vice versa.
285
- //
286
- // NOTE: After this, the owner of the source file may
287
- // get additional permissions. This shouldn't be too bad,
288
- // because the owner would have had permission to chmod
289
- // the original file anyway.
290
- mode = ((pair->src_st.st_mode & 0070) >> 3)
291
- & (pair->src_st.st_mode & 0007);
292
- mode = (pair->src_st.st_mode & 0700) | (mode << 3) | mode;
293
- } else {
294
- // Drop the setuid, setgid, and sticky bits.
295
- mode = pair->src_st.st_mode & 0777;
296
- }
297
-
298
- if (fchmod(pair->dest_fd, mode))
299
- message_warning(_("%s: Cannot set the file permissions: %s"),
300
- pair->dest_name, strerror(errno));
301
- #endif
302
-
303
- // Copy the timestamps. We have several possible ways to do this, of
304
- // which some are better in both security and precision.
305
- //
306
- // First, get the nanosecond part of the timestamps. As of writing,
307
- // it's not standardized by POSIX, and there are several names for
308
- // the same thing in struct stat.
309
- long atime_nsec;
310
- long mtime_nsec;
311
-
312
- # if defined(HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC)
313
- // GNU and Solaris
314
- atime_nsec = pair->src_st.st_atim.tv_nsec;
315
- mtime_nsec = pair->src_st.st_mtim.tv_nsec;
316
-
317
- # elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC)
318
- // BSD
319
- atime_nsec = pair->src_st.st_atimespec.tv_nsec;
320
- mtime_nsec = pair->src_st.st_mtimespec.tv_nsec;
321
-
322
- # elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC)
323
- // GNU and BSD without extensions
324
- atime_nsec = pair->src_st.st_atimensec;
325
- mtime_nsec = pair->src_st.st_mtimensec;
326
-
327
- # elif defined(HAVE_STRUCT_STAT_ST_UATIME)
328
- // Tru64
329
- atime_nsec = pair->src_st.st_uatime * 1000;
330
- mtime_nsec = pair->src_st.st_umtime * 1000;
331
-
332
- # elif defined(HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC)
333
- // UnixWare
334
- atime_nsec = pair->src_st.st_atim.st__tim.tv_nsec;
335
- mtime_nsec = pair->src_st.st_mtim.st__tim.tv_nsec;
336
-
337
- # else
338
- // Safe fallback
339
- atime_nsec = 0;
340
- mtime_nsec = 0;
341
- # endif
342
-
343
- // Construct a structure to hold the timestamps and call appropriate
344
- // function to set the timestamps.
345
- #if defined(HAVE_FUTIMENS)
346
- // Use nanosecond precision.
347
- struct timespec tv[2];
348
- tv[0].tv_sec = pair->src_st.st_atime;
349
- tv[0].tv_nsec = atime_nsec;
350
- tv[1].tv_sec = pair->src_st.st_mtime;
351
- tv[1].tv_nsec = mtime_nsec;
352
-
353
- (void)futimens(pair->dest_fd, tv);
354
-
355
- #elif defined(HAVE_FUTIMES) || defined(HAVE_FUTIMESAT) || defined(HAVE_UTIMES)
356
- // Use microsecond precision.
357
- struct timeval tv[2];
358
- tv[0].tv_sec = pair->src_st.st_atime;
359
- tv[0].tv_usec = atime_nsec / 1000;
360
- tv[1].tv_sec = pair->src_st.st_mtime;
361
- tv[1].tv_usec = mtime_nsec / 1000;
362
-
363
- # if defined(HAVE_FUTIMES)
364
- (void)futimes(pair->dest_fd, tv);
365
- # elif defined(HAVE_FUTIMESAT)
366
- (void)futimesat(pair->dest_fd, NULL, tv);
367
- # else
368
- // Argh, no function to use a file descriptor to set the timestamp.
369
- (void)utimes(pair->dest_name, tv);
370
- # endif
371
-
372
- #elif defined(HAVE_UTIME)
373
- // Use one-second precision. utime() doesn't support using file
374
- // descriptor either. Some systems have broken utime() prototype
375
- // so don't make this const.
376
- struct utimbuf buf = {
377
- .actime = pair->src_st.st_atime,
378
- .modtime = pair->src_st.st_mtime,
379
- };
380
-
381
- // Avoid warnings.
382
- (void)atime_nsec;
383
- (void)mtime_nsec;
384
-
385
- (void)utime(pair->dest_name, &buf);
386
- #endif
387
-
388
- return;
389
- }
390
-
391
-
392
- /// Opens the source file. Returns false on success, true on error.
393
- static bool
394
- io_open_src_real(file_pair *pair)
395
- {
396
- // There's nothing to open when reading from stdin.
397
- if (pair->src_name == stdin_filename) {
398
- pair->src_fd = STDIN_FILENO;
399
- #ifdef TUKLIB_DOSLIKE
400
- setmode(STDIN_FILENO, O_BINARY);
401
- #else
402
- // Try to set stdin to non-blocking mode. It won't work
403
- // e.g. on OpenBSD if stdout is e.g. /dev/null. In such
404
- // case we proceed as if stdin were non-blocking anyway
405
- // (in case of /dev/null it will be in practice). The
406
- // same applies to stdout in io_open_dest_real().
407
- stdin_flags = fcntl(STDIN_FILENO, F_GETFL);
408
- if (stdin_flags == -1) {
409
- message_error(_("Error getting the file status flags "
410
- "from standard input: %s"),
411
- strerror(errno));
412
- return true;
413
- }
414
-
415
- if ((stdin_flags & O_NONBLOCK) == 0
416
- && fcntl(STDIN_FILENO, F_SETFL,
417
- stdin_flags | O_NONBLOCK) != -1)
418
- restore_stdin_flags = true;
419
- #endif
420
- #ifdef HAVE_POSIX_FADVISE
421
- // It will fail if stdin is a pipe and that's fine.
422
- (void)posix_fadvise(STDIN_FILENO, 0, 0, POSIX_FADV_SEQUENTIAL);
423
- #endif
424
- return false;
425
- }
426
-
427
- // Symlinks are not followed unless writing to stdout or --force
428
- // was used.
429
- const bool follow_symlinks = opt_stdout || opt_force;
430
-
431
- // We accept only regular files if we are writing the output
432
- // to disk too. bzip2 allows overriding this with --force but
433
- // gzip and xz don't.
434
- const bool reg_files_only = !opt_stdout;
435
-
436
- // Flags for open()
437
- int flags = O_RDONLY | O_BINARY | O_NOCTTY;
438
-
439
- #ifndef TUKLIB_DOSLIKE
440
- // Use non-blocking I/O:
441
- // - It prevents blocking when opening FIFOs and some other
442
- // special files, which is good if we want to accept only
443
- // regular files.
444
- // - It can help avoiding some race conditions with signal handling.
445
- flags |= O_NONBLOCK;
446
- #endif
447
-
448
- #if defined(O_NOFOLLOW)
449
- if (!follow_symlinks)
450
- flags |= O_NOFOLLOW;
451
- #elif !defined(TUKLIB_DOSLIKE)
452
- // Some POSIX-like systems lack O_NOFOLLOW (it's not required
453
- // by POSIX). Check for symlinks with a separate lstat() on
454
- // these systems.
455
- if (!follow_symlinks) {
456
- struct stat st;
457
- if (lstat(pair->src_name, &st)) {
458
- message_error("%s: %s", pair->src_name,
459
- strerror(errno));
460
- return true;
461
-
462
- } else if (S_ISLNK(st.st_mode)) {
463
- message_warning(_("%s: Is a symbolic link, "
464
- "skipping"), pair->src_name);
465
- return true;
466
- }
467
- }
468
- #else
469
- // Avoid warnings.
470
- (void)follow_symlinks;
471
- #endif
472
-
473
- // Try to open the file. Signals have been blocked so EINTR shouldn't
474
- // be possible.
475
- pair->src_fd = open(pair->src_name, flags);
476
-
477
- if (pair->src_fd == -1) {
478
- // Signals (that have a signal handler) have been blocked.
479
- assert(errno != EINTR);
480
-
481
- #ifdef O_NOFOLLOW
482
- // Give an understandable error message if the reason
483
- // for failing was that the file was a symbolic link.
484
- //
485
- // Note that at least Linux, OpenBSD, Solaris, and Darwin
486
- // use ELOOP to indicate that O_NOFOLLOW was the reason
487
- // that open() failed. Because there may be
488
- // directories in the pathname, ELOOP may occur also
489
- // because of a symlink loop in the directory part.
490
- // So ELOOP doesn't tell us what actually went wrong,
491
- // and this stupidity went into POSIX-1.2008 too.
492
- //
493
- // FreeBSD associates EMLINK with O_NOFOLLOW and
494
- // Tru64 uses ENOTSUP. We use these directly here
495
- // and skip the lstat() call and the associated race.
496
- // I want to hear if there are other kernels that
497
- // fail with something else than ELOOP with O_NOFOLLOW.
498
- bool was_symlink = false;
499
-
500
- # if defined(__FreeBSD__) || defined(__DragonFly__)
501
- if (errno == EMLINK)
502
- was_symlink = true;
503
-
504
- # elif defined(__digital__) && defined(__unix__)
505
- if (errno == ENOTSUP)
506
- was_symlink = true;
507
-
508
- # elif defined(__NetBSD__)
509
- if (errno == EFTYPE)
510
- was_symlink = true;
511
-
512
- # else
513
- if (errno == ELOOP && !follow_symlinks) {
514
- const int saved_errno = errno;
515
- struct stat st;
516
- if (lstat(pair->src_name, &st) == 0
517
- && S_ISLNK(st.st_mode))
518
- was_symlink = true;
519
-
520
- errno = saved_errno;
521
- }
522
- # endif
523
-
524
- if (was_symlink)
525
- message_warning(_("%s: Is a symbolic link, "
526
- "skipping"), pair->src_name);
527
- else
528
- #endif
529
- // Something else than O_NOFOLLOW failing
530
- // (assuming that the race conditions didn't
531
- // confuse us).
532
- message_error("%s: %s", pair->src_name,
533
- strerror(errno));
534
-
535
- return true;
536
- }
537
-
538
- // Stat the source file. We need the result also when we copy
539
- // the permissions, and when unlinking.
540
- //
541
- // NOTE: Use stat() instead of fstat() with DJGPP, because
542
- // then we have a better chance to get st_ino value that can
543
- // be used in io_open_dest_real() to prevent overwriting the
544
- // source file.
545
- #ifdef __DJGPP__
546
- if (stat(pair->src_name, &pair->src_st))
547
- goto error_msg;
548
- #else
549
- if (fstat(pair->src_fd, &pair->src_st))
550
- goto error_msg;
551
- #endif
552
-
553
- if (S_ISDIR(pair->src_st.st_mode)) {
554
- message_warning(_("%s: Is a directory, skipping"),
555
- pair->src_name);
556
- goto error;
557
- }
558
-
559
- if (reg_files_only && !S_ISREG(pair->src_st.st_mode)) {
560
- message_warning(_("%s: Not a regular file, skipping"),
561
- pair->src_name);
562
- goto error;
563
- }
564
-
565
- #ifndef TUKLIB_DOSLIKE
566
- if (reg_files_only && !opt_force) {
567
- if (pair->src_st.st_mode & (S_ISUID | S_ISGID)) {
568
- // gzip rejects setuid and setgid files even
569
- // when --force was used. bzip2 doesn't check
570
- // for them, but calls fchown() after fchmod(),
571
- // and many systems automatically drop setuid
572
- // and setgid bits there.
573
- //
574
- // We accept setuid and setgid files if
575
- // --force was used. We drop these bits
576
- // explicitly in io_copy_attr().
577
- message_warning(_("%s: File has setuid or "
578
- "setgid bit set, skipping"),
579
- pair->src_name);
580
- goto error;
581
- }
582
-
583
- if (pair->src_st.st_mode & S_ISVTX) {
584
- message_warning(_("%s: File has sticky bit "
585
- "set, skipping"),
586
- pair->src_name);
587
- goto error;
588
- }
589
-
590
- if (pair->src_st.st_nlink > 1) {
591
- message_warning(_("%s: Input file has more "
592
- "than one hard link, "
593
- "skipping"), pair->src_name);
594
- goto error;
595
- }
596
- }
597
-
598
- // If it is something else than a regular file, wait until
599
- // there is input available. This way reading from FIFOs
600
- // will work when open() is used with O_NONBLOCK.
601
- if (!S_ISREG(pair->src_st.st_mode)) {
602
- signals_unblock();
603
- const io_wait_ret ret = io_wait(pair, -1, true);
604
- signals_block();
605
-
606
- if (ret != IO_WAIT_MORE)
607
- goto error;
608
- }
609
- #endif
610
-
611
- #ifdef HAVE_POSIX_FADVISE
612
- // It will fail with some special files like FIFOs but that is fine.
613
- (void)posix_fadvise(pair->src_fd, 0, 0, POSIX_FADV_SEQUENTIAL);
614
- #endif
615
-
616
- return false;
617
-
618
- error_msg:
619
- message_error("%s: %s", pair->src_name, strerror(errno));
620
- error:
621
- (void)close(pair->src_fd);
622
- return true;
623
- }
624
-
625
-
626
- extern file_pair *
627
- io_open_src(const char *src_name)
628
- {
629
- if (is_empty_filename(src_name))
630
- return NULL;
631
-
632
- // Since we have only one file open at a time, we can use
633
- // a statically allocated structure.
634
- static file_pair pair;
635
-
636
- pair = (file_pair){
637
- .src_name = src_name,
638
- .dest_name = NULL,
639
- .src_fd = -1,
640
- .dest_fd = -1,
641
- .src_eof = false,
642
- .dest_try_sparse = false,
643
- .dest_pending_sparse = 0,
644
- };
645
-
646
- // Block the signals, for which we have a custom signal handler, so
647
- // that we don't need to worry about EINTR.
648
- signals_block();
649
- const bool error = io_open_src_real(&pair);
650
- signals_unblock();
651
-
652
- return error ? NULL : &pair;
653
- }
654
-
655
-
656
- /// \brief Closes source file of the file_pair structure
657
- ///
658
- /// \param pair File whose src_fd should be closed
659
- /// \param success If true, the file will be removed from the disk if
660
- /// closing succeeds and --keep hasn't been used.
661
- static void
662
- io_close_src(file_pair *pair, bool success)
663
- {
664
- #ifndef TUKLIB_DOSLIKE
665
- if (restore_stdin_flags) {
666
- assert(pair->src_fd == STDIN_FILENO);
667
-
668
- restore_stdin_flags = false;
669
-
670
- if (fcntl(STDIN_FILENO, F_SETFL, stdin_flags) == -1)
671
- message_error(_("Error restoring the status flags "
672
- "to standard input: %s"),
673
- strerror(errno));
674
- }
675
- #endif
676
-
677
- if (pair->src_fd != STDIN_FILENO && pair->src_fd != -1) {
678
- #ifdef TUKLIB_DOSLIKE
679
- (void)close(pair->src_fd);
680
- #endif
681
-
682
- // If we are going to unlink(), do it before closing the file.
683
- // This way there's no risk that someone replaces the file and
684
- // happens to get same inode number, which would make us
685
- // unlink() wrong file.
686
- //
687
- // NOTE: DOS-like systems are an exception to this, because
688
- // they don't allow unlinking files that are open. *sigh*
689
- if (success && !opt_keep_original)
690
- io_unlink(pair->src_name, &pair->src_st);
691
-
692
- #ifndef TUKLIB_DOSLIKE
693
- (void)close(pair->src_fd);
694
- #endif
695
- }
696
-
697
- return;
698
- }
699
-
700
-
701
- static bool
702
- io_open_dest_real(file_pair *pair)
703
- {
704
- if (opt_stdout || pair->src_fd == STDIN_FILENO) {
705
- // We don't modify or free() this.
706
- pair->dest_name = (char *)"(stdout)";
707
- pair->dest_fd = STDOUT_FILENO;
708
- #ifdef TUKLIB_DOSLIKE
709
- setmode(STDOUT_FILENO, O_BINARY);
710
- #else
711
- // Try to set O_NONBLOCK if it isn't already set.
712
- // If it fails, we assume that stdout is non-blocking
713
- // in practice. See the comments in io_open_src_real()
714
- // for similar situation with stdin.
715
- //
716
- // NOTE: O_APPEND may be unset later in this function
717
- // and it relies on stdout_flags being set here.
718
- stdout_flags = fcntl(STDOUT_FILENO, F_GETFL);
719
- if (stdout_flags == -1) {
720
- message_error(_("Error getting the file status flags "
721
- "from standard output: %s"),
722
- strerror(errno));
723
- return true;
724
- }
725
-
726
- if ((stdout_flags & O_NONBLOCK) == 0
727
- && fcntl(STDOUT_FILENO, F_SETFL,
728
- stdout_flags | O_NONBLOCK) != -1)
729
- restore_stdout_flags = true;
730
- #endif
731
- } else {
732
- pair->dest_name = suffix_get_dest_name(pair->src_name);
733
- if (pair->dest_name == NULL)
734
- return true;
735
-
736
- #ifdef __DJGPP__
737
- struct stat st;
738
- if (stat(pair->dest_name, &st) == 0) {
739
- // Check that it isn't a special file like "prn".
740
- if (st.st_dev == -1) {
741
- message_error("%s: Refusing to write to "
742
- "a DOS special file",
743
- pair->dest_name);
744
- free(pair->dest_name);
745
- return true;
746
- }
747
-
748
- // Check that we aren't overwriting the source file.
749
- if (st.st_dev == pair->src_st.st_dev
750
- && st.st_ino == pair->src_st.st_ino) {
751
- message_error("%s: Output file is the same "
752
- "as the input file",
753
- pair->dest_name);
754
- free(pair->dest_name);
755
- return true;
756
- }
757
- }
758
- #endif
759
-
760
- // If --force was used, unlink the target file first.
761
- if (opt_force && unlink(pair->dest_name) && errno != ENOENT) {
762
- message_error(_("%s: Cannot remove: %s"),
763
- pair->dest_name, strerror(errno));
764
- free(pair->dest_name);
765
- return true;
766
- }
767
-
768
- // Open the file.
769
- int flags = O_WRONLY | O_BINARY | O_NOCTTY
770
- | O_CREAT | O_EXCL;
771
- #ifndef TUKLIB_DOSLIKE
772
- flags |= O_NONBLOCK;
773
- #endif
774
- const mode_t mode = S_IRUSR | S_IWUSR;
775
- pair->dest_fd = open(pair->dest_name, flags, mode);
776
-
777
- if (pair->dest_fd == -1) {
778
- message_error("%s: %s", pair->dest_name,
779
- strerror(errno));
780
- free(pair->dest_name);
781
- return true;
782
- }
783
- }
784
-
785
- #ifndef TUKLIB_DOSLIKE
786
- // dest_st isn't used on DOS-like systems except as a dummy
787
- // argument to io_unlink(), so don't fstat() on such systems.
788
- if (fstat(pair->dest_fd, &pair->dest_st)) {
789
- // If fstat() really fails, we have a safe fallback here.
790
- # if defined(__VMS)
791
- pair->dest_st.st_ino[0] = 0;
792
- pair->dest_st.st_ino[1] = 0;
793
- pair->dest_st.st_ino[2] = 0;
794
- # else
795
- pair->dest_st.st_dev = 0;
796
- pair->dest_st.st_ino = 0;
797
- # endif
798
- } else if (try_sparse && opt_mode == MODE_DECOMPRESS) {
799
- // When writing to standard output, we need to be extra
800
- // careful:
801
- // - It may be connected to something else than
802
- // a regular file.
803
- // - We aren't necessarily writing to a new empty file
804
- // or to the end of an existing file.
805
- // - O_APPEND may be active.
806
- //
807
- // TODO: I'm keeping this disabled for DOS-like systems
808
- // for now. FAT doesn't support sparse files, but NTFS
809
- // does, so maybe this should be enabled on Windows after
810
- // some testing.
811
- if (pair->dest_fd == STDOUT_FILENO) {
812
- if (!S_ISREG(pair->dest_st.st_mode))
813
- return false;
814
-
815
- if (stdout_flags & O_APPEND) {
816
- // Creating a sparse file is not possible
817
- // when O_APPEND is active (it's used by
818
- // shell's >> redirection). As I understand
819
- // it, it is safe to temporarily disable
820
- // O_APPEND in xz, because if someone
821
- // happened to write to the same file at the
822
- // same time, results would be bad anyway
823
- // (users shouldn't assume that xz uses any
824
- // specific block size when writing data).
825
- //
826
- // The write position may be something else
827
- // than the end of the file, so we must fix
828
- // it to start writing at the end of the file
829
- // to imitate O_APPEND.
830
- if (lseek(STDOUT_FILENO, 0, SEEK_END) == -1)
831
- return false;
832
-
833
- // Construct the new file status flags.
834
- // If O_NONBLOCK was set earlier in this
835
- // function, it must be kept here too.
836
- int flags = stdout_flags & ~O_APPEND;
837
- if (restore_stdout_flags)
838
- flags |= O_NONBLOCK;
839
-
840
- // If this fcntl() fails, we continue but won't
841
- // try to create sparse output. The original
842
- // flags will still be restored if needed (to
843
- // unset O_NONBLOCK) when the file is finished.
844
- if (fcntl(STDOUT_FILENO, F_SETFL, flags) == -1)
845
- return false;
846
-
847
- // Disabling O_APPEND succeeded. Mark
848
- // that the flags should be restored
849
- // in io_close_dest(). (This may have already
850
- // been set when enabling O_NONBLOCK.)
851
- restore_stdout_flags = true;
852
-
853
- } else if (lseek(STDOUT_FILENO, 0, SEEK_CUR)
854
- != pair->dest_st.st_size) {
855
- // Writing won't start exactly at the end
856
- // of the file. We cannot use sparse output,
857
- // because it would probably corrupt the file.
858
- return false;
859
- }
860
- }
861
-
862
- pair->dest_try_sparse = true;
863
- }
864
- #endif
865
-
866
- return false;
867
- }
868
-
869
-
870
- extern bool
871
- io_open_dest(file_pair *pair)
872
- {
873
- signals_block();
874
- const bool ret = io_open_dest_real(pair);
875
- signals_unblock();
876
- return ret;
877
- }
878
-
879
-
880
- /// \brief Closes destination file of the file_pair structure
881
- ///
882
- /// \param pair File whose dest_fd should be closed
883
- /// \param success If false, the file will be removed from the disk.
884
- ///
885
- /// \return Zero if closing succeeds. On error, -1 is returned and
886
- /// error message printed.
887
- static bool
888
- io_close_dest(file_pair *pair, bool success)
889
- {
890
- #ifndef TUKLIB_DOSLIKE
891
- // If io_open_dest() has disabled O_APPEND, restore it here.
892
- if (restore_stdout_flags) {
893
- assert(pair->dest_fd == STDOUT_FILENO);
894
-
895
- restore_stdout_flags = false;
896
-
897
- if (fcntl(STDOUT_FILENO, F_SETFL, stdout_flags) == -1) {
898
- message_error(_("Error restoring the O_APPEND flag "
899
- "to standard output: %s"),
900
- strerror(errno));
901
- return true;
902
- }
903
- }
904
- #endif
905
-
906
- if (pair->dest_fd == -1 || pair->dest_fd == STDOUT_FILENO)
907
- return false;
908
-
909
- if (close(pair->dest_fd)) {
910
- message_error(_("%s: Closing the file failed: %s"),
911
- pair->dest_name, strerror(errno));
912
-
913
- // Closing destination file failed, so we cannot trust its
914
- // contents. Get rid of junk:
915
- io_unlink(pair->dest_name, &pair->dest_st);
916
- free(pair->dest_name);
917
- return true;
918
- }
919
-
920
- // If the operation using this file wasn't successful, we git rid
921
- // of the junk file.
922
- if (!success)
923
- io_unlink(pair->dest_name, &pair->dest_st);
924
-
925
- free(pair->dest_name);
926
-
927
- return false;
928
- }
929
-
930
-
931
- extern void
932
- io_close(file_pair *pair, bool success)
933
- {
934
- // Take care of sparseness at the end of the output file.
935
- if (success && pair->dest_try_sparse
936
- && pair->dest_pending_sparse > 0) {
937
- // Seek forward one byte less than the size of the pending
938
- // hole, then write one zero-byte. This way the file grows
939
- // to its correct size. An alternative would be to use
940
- // ftruncate() but that isn't portable enough (e.g. it
941
- // doesn't work with FAT on Linux; FAT isn't that important
942
- // since it doesn't support sparse files anyway, but we don't
943
- // want to create corrupt files on it).
944
- if (lseek(pair->dest_fd, pair->dest_pending_sparse - 1,
945
- SEEK_CUR) == -1) {
946
- message_error(_("%s: Seeking failed when trying "
947
- "to create a sparse file: %s"),
948
- pair->dest_name, strerror(errno));
949
- success = false;
950
- } else {
951
- const uint8_t zero[1] = { '\0' };
952
- if (io_write_buf(pair, zero, 1))
953
- success = false;
954
- }
955
- }
956
-
957
- signals_block();
958
-
959
- // Copy the file attributes. We need to skip this if destination
960
- // file isn't open or it is standard output.
961
- if (success && pair->dest_fd != -1 && pair->dest_fd != STDOUT_FILENO)
962
- io_copy_attrs(pair);
963
-
964
- // Close the destination first. If it fails, we must not remove
965
- // the source file!
966
- if (io_close_dest(pair, success))
967
- success = false;
968
-
969
- // Close the source file, and unlink it if the operation using this
970
- // file pair was successful and we haven't requested to keep the
971
- // source file.
972
- io_close_src(pair, success);
973
-
974
- signals_unblock();
975
-
976
- return;
977
- }
978
-
979
-
980
- extern void
981
- io_fix_src_pos(file_pair *pair, size_t rewind_size)
982
- {
983
- assert(rewind_size <= IO_BUFFER_SIZE);
984
-
985
- if (rewind_size > 0) {
986
- // This doesn't need to work on unseekable file descriptors,
987
- // so just ignore possible errors.
988
- (void)lseek(pair->src_fd, -(off_t)(rewind_size), SEEK_CUR);
989
- }
990
-
991
- return;
992
- }
993
-
994
-
995
- extern size_t
996
- io_read(file_pair *pair, io_buf *buf_union, size_t size)
997
- {
998
- // We use small buffers here.
999
- assert(size < SSIZE_MAX);
1000
-
1001
- uint8_t *buf = buf_union->u8;
1002
- size_t left = size;
1003
-
1004
- while (left > 0) {
1005
- const ssize_t amount = read(pair->src_fd, buf, left);
1006
-
1007
- if (amount == 0) {
1008
- pair->src_eof = true;
1009
- break;
1010
- }
1011
-
1012
- if (amount == -1) {
1013
- if (errno == EINTR) {
1014
- if (user_abort)
1015
- return SIZE_MAX;
1016
-
1017
- continue;
1018
- }
1019
-
1020
- #ifndef TUKLIB_DOSLIKE
1021
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
1022
- const io_wait_ret ret = io_wait(pair,
1023
- mytime_get_flush_timeout(),
1024
- true);
1025
- switch (ret) {
1026
- case IO_WAIT_MORE:
1027
- continue;
1028
-
1029
- case IO_WAIT_ERROR:
1030
- return SIZE_MAX;
1031
-
1032
- case IO_WAIT_TIMEOUT:
1033
- return size - left;
1034
-
1035
- default:
1036
- message_bug();
1037
- }
1038
- }
1039
- #endif
1040
-
1041
- message_error(_("%s: Read error: %s"),
1042
- pair->src_name, strerror(errno));
1043
-
1044
- return SIZE_MAX;
1045
- }
1046
-
1047
- buf += (size_t)(amount);
1048
- left -= (size_t)(amount);
1049
- }
1050
-
1051
- return size - left;
1052
- }
1053
-
1054
-
1055
- extern bool
1056
- io_pread(file_pair *pair, io_buf *buf, size_t size, off_t pos)
1057
- {
1058
- // Using lseek() and read() is more portable than pread() and
1059
- // for us it is as good as real pread().
1060
- if (lseek(pair->src_fd, pos, SEEK_SET) != pos) {
1061
- message_error(_("%s: Error seeking the file: %s"),
1062
- pair->src_name, strerror(errno));
1063
- return true;
1064
- }
1065
-
1066
- const size_t amount = io_read(pair, buf, size);
1067
- if (amount == SIZE_MAX)
1068
- return true;
1069
-
1070
- if (amount != size) {
1071
- message_error(_("%s: Unexpected end of file"),
1072
- pair->src_name);
1073
- return true;
1074
- }
1075
-
1076
- return false;
1077
- }
1078
-
1079
-
1080
- static bool
1081
- is_sparse(const io_buf *buf)
1082
- {
1083
- assert(IO_BUFFER_SIZE % sizeof(uint64_t) == 0);
1084
-
1085
- for (size_t i = 0; i < ARRAY_SIZE(buf->u64); ++i)
1086
- if (buf->u64[i] != 0)
1087
- return false;
1088
-
1089
- return true;
1090
- }
1091
-
1092
-
1093
- static bool
1094
- io_write_buf(file_pair *pair, const uint8_t *buf, size_t size)
1095
- {
1096
- assert(size < SSIZE_MAX);
1097
-
1098
- while (size > 0) {
1099
- const ssize_t amount = write(pair->dest_fd, buf, size);
1100
- if (amount == -1) {
1101
- if (errno == EINTR) {
1102
- if (user_abort)
1103
- return true;
1104
-
1105
- continue;
1106
- }
1107
-
1108
- #ifndef TUKLIB_DOSLIKE
1109
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
1110
- if (io_wait(pair, -1, false) == IO_WAIT_MORE)
1111
- continue;
1112
-
1113
- return true;
1114
- }
1115
- #endif
1116
-
1117
- // Handle broken pipe specially. gzip and bzip2
1118
- // don't print anything on SIGPIPE. In addition,
1119
- // gzip --quiet uses exit status 2 (warning) on
1120
- // broken pipe instead of whatever raise(SIGPIPE)
1121
- // would make it return. It is there to hide "Broken
1122
- // pipe" message on some old shells (probably old
1123
- // GNU bash).
1124
- //
1125
- // We don't do anything special with --quiet, which
1126
- // is what bzip2 does too. If we get SIGPIPE, we
1127
- // will handle it like other signals by setting
1128
- // user_abort, and get EPIPE here.
1129
- if (errno != EPIPE)
1130
- message_error(_("%s: Write error: %s"),
1131
- pair->dest_name, strerror(errno));
1132
-
1133
- return true;
1134
- }
1135
-
1136
- buf += (size_t)(amount);
1137
- size -= (size_t)(amount);
1138
- }
1139
-
1140
- return false;
1141
- }
1142
-
1143
-
1144
- extern bool
1145
- io_write(file_pair *pair, const io_buf *buf, size_t size)
1146
- {
1147
- assert(size <= IO_BUFFER_SIZE);
1148
-
1149
- if (pair->dest_try_sparse) {
1150
- // Check if the block is sparse (contains only zeros). If it
1151
- // sparse, we just store the amount and return. We will take
1152
- // care of actually skipping over the hole when we hit the
1153
- // next data block or close the file.
1154
- //
1155
- // Since io_close() requires that dest_pending_sparse > 0
1156
- // if the file ends with sparse block, we must also return
1157
- // if size == 0 to avoid doing the lseek().
1158
- if (size == IO_BUFFER_SIZE) {
1159
- if (is_sparse(buf)) {
1160
- pair->dest_pending_sparse += size;
1161
- return false;
1162
- }
1163
- } else if (size == 0) {
1164
- return false;
1165
- }
1166
-
1167
- // This is not a sparse block. If we have a pending hole,
1168
- // skip it now.
1169
- if (pair->dest_pending_sparse > 0) {
1170
- if (lseek(pair->dest_fd, pair->dest_pending_sparse,
1171
- SEEK_CUR) == -1) {
1172
- message_error(_("%s: Seeking failed when "
1173
- "trying to create a sparse "
1174
- "file: %s"), pair->dest_name,
1175
- strerror(errno));
1176
- return true;
1177
- }
1178
-
1179
- pair->dest_pending_sparse = 0;
1180
- }
1181
- }
1182
-
1183
- return io_write_buf(pair, buf->u8, size);
1184
- }