node-liblzma 1.0.4 → 1.1.6

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 +655 -49
  4. package/lib/lzma.js +326 -319
  5. package/package.json +36 -24
  6. package/prebuilds/darwin-x64/node.napi.node +0 -0
  7. package/prebuilds/linux-x64/node.napi.node +0 -0
  8. package/prebuilds/win32-x64/node.napi.node +0 -0
  9. package/scripts/download_extract_deps.py +29 -0
  10. package/scripts/prebuildify.py +13 -0
  11. package/scripts/walk_sources.py +7 -0
  12. package/.npmignore +0 -1
  13. package/.travis.yml +0 -35
  14. package/build/Makefile +0 -329
  15. package/build/Release/.deps/Release/node-liblzma.node.d +0 -1
  16. package/build/Release/.deps/Release/obj.target/action_after_build.stamp.d +0 -1
  17. package/build/Release/.deps/Release/obj.target/node-liblzma/src/bindings/module.o.d +0 -89
  18. package/build/Release/.deps/Release/obj.target/node-liblzma/src/bindings/node-liblzma.o.d +0 -89
  19. package/build/Release/.deps/Release/obj.target/node-liblzma.node.d +0 -1
  20. package/build/Release/.deps/home/o2/dev/node-liblzma/build/node-liblzma.node.d +0 -1
  21. package/build/Release/node-liblzma.node +0 -0
  22. package/build/Release/obj.target/action_after_build.stamp +0 -0
  23. package/build/Release/obj.target/node-liblzma/src/bindings/module.o +0 -0
  24. package/build/Release/obj.target/node-liblzma/src/bindings/node-liblzma.o +0 -0
  25. package/build/Release/obj.target/node-liblzma.node +0 -0
  26. package/build/action_after_build.target.mk +0 -32
  27. package/build/binding.Makefile +0 -6
  28. package/build/config.gypi +0 -143
  29. package/build/node-liblzma.node +0 -0
  30. package/build/node-liblzma.target.mk +0 -144
  31. package/build.yml +0 -65
  32. package/deps/xz/ABOUT-NLS +0 -1327
  33. package/deps/xz/AUTHORS +0 -27
  34. package/deps/xz/COPYING +0 -65
  35. package/deps/xz/COPYING.GPLv2 +0 -339
  36. package/deps/xz/COPYING.GPLv3 +0 -674
  37. package/deps/xz/COPYING.LGPLv2.1 +0 -502
  38. package/deps/xz/ChangeLog +0 -14953
  39. package/deps/xz/Doxyfile +0 -1234
  40. package/deps/xz/Doxyfile.in +0 -1234
  41. package/deps/xz/INSTALL +0 -554
  42. package/deps/xz/INSTALL.generic +0 -365
  43. package/deps/xz/Makefile +0 -1067
  44. package/deps/xz/Makefile.am +0 -109
  45. package/deps/xz/Makefile.in +0 -1067
  46. package/deps/xz/NEWS +0 -505
  47. package/deps/xz/PACKAGERS +0 -231
  48. package/deps/xz/README +0 -308
  49. package/deps/xz/THANKS +0 -116
  50. package/deps/xz/TODO +0 -111
  51. package/deps/xz/aclocal.m4 +0 -1225
  52. package/deps/xz/autogen.sh +0 -22
  53. package/deps/xz/autom4te.cache/output.0 +0 -21751
  54. package/deps/xz/autom4te.cache/output.1 +0 -21751
  55. package/deps/xz/autom4te.cache/requests +0 -415
  56. package/deps/xz/autom4te.cache/traces.0 +0 -6996
  57. package/deps/xz/autom4te.cache/traces.1 +0 -1783
  58. package/deps/xz/build-aux/compile +0 -347
  59. package/deps/xz/build-aux/config.guess +0 -1558
  60. package/deps/xz/build-aux/config.rpath +0 -672
  61. package/deps/xz/build-aux/config.sub +0 -1791
  62. package/deps/xz/build-aux/depcomp +0 -791
  63. package/deps/xz/build-aux/install-sh +0 -527
  64. package/deps/xz/build-aux/ltmain.sh +0 -9661
  65. package/deps/xz/build-aux/manconv.sh +0 -58
  66. package/deps/xz/build-aux/missing +0 -215
  67. package/deps/xz/build-aux/version.sh +0 -24
  68. package/deps/xz/config.h +0 -487
  69. package/deps/xz/config.h.in +0 -486
  70. package/deps/xz/config.h.in~ +0 -485
  71. package/deps/xz/config.log +0 -5446
  72. package/deps/xz/config.status +0 -2587
  73. package/deps/xz/configure +0 -21751
  74. package/deps/xz/configure.ac +0 -842
  75. package/deps/xz/debug/.deps/crc32.Po +0 -1
  76. package/deps/xz/debug/.deps/full_flush.Po +0 -1
  77. package/deps/xz/debug/.deps/hex2bin.Po +0 -1
  78. package/deps/xz/debug/.deps/known_sizes.Po +0 -1
  79. package/deps/xz/debug/.deps/memusage.Po +0 -1
  80. package/deps/xz/debug/.deps/repeat.Po +0 -1
  81. package/deps/xz/debug/.deps/sync_flush.Po +0 -1
  82. package/deps/xz/debug/Makefile +0 -691
  83. package/deps/xz/debug/Makefile.am +0 -30
  84. package/deps/xz/debug/Makefile.in +0 -691
  85. package/deps/xz/debug/README +0 -17
  86. package/deps/xz/debug/crc32.c +0 -39
  87. package/deps/xz/debug/full_flush.c +0 -103
  88. package/deps/xz/debug/hex2bin.c +0 -53
  89. package/deps/xz/debug/known_sizes.c +0 -129
  90. package/deps/xz/debug/memusage.c +0 -51
  91. package/deps/xz/debug/repeat.c +0 -36
  92. package/deps/xz/debug/sync_flush.c +0 -125
  93. package/deps/xz/debug/translation.bash +0 -100
  94. package/deps/xz/doc/examples/00_README.txt +0 -31
  95. package/deps/xz/doc/examples/01_compress_easy.c +0 -297
  96. package/deps/xz/doc/examples/02_decompress.c +0 -287
  97. package/deps/xz/doc/examples/03_compress_custom.c +0 -193
  98. package/deps/xz/doc/examples/04_compress_easy_mt.c +0 -206
  99. package/deps/xz/doc/examples/Makefile +0 -24
  100. package/deps/xz/doc/examples_old/xz_pipe_comp.c +0 -127
  101. package/deps/xz/doc/examples_old/xz_pipe_decomp.c +0 -123
  102. package/deps/xz/doc/faq.txt +0 -224
  103. package/deps/xz/doc/history.txt +0 -150
  104. package/deps/xz/doc/lzma-file-format.txt +0 -166
  105. package/deps/xz/doc/man/pdf-a4/lzmainfo-a4.pdf +0 -0
  106. package/deps/xz/doc/man/pdf-a4/xz-a4.pdf +0 -0
  107. package/deps/xz/doc/man/pdf-a4/xzdec-a4.pdf +0 -0
  108. package/deps/xz/doc/man/pdf-a4/xzdiff-a4.pdf +0 -0
  109. package/deps/xz/doc/man/pdf-a4/xzgrep-a4.pdf +0 -0
  110. package/deps/xz/doc/man/pdf-a4/xzless-a4.pdf +0 -0
  111. package/deps/xz/doc/man/pdf-a4/xzmore-a4.pdf +0 -0
  112. package/deps/xz/doc/man/pdf-letter/lzmainfo-letter.pdf +0 -0
  113. package/deps/xz/doc/man/pdf-letter/xz-letter.pdf +0 -0
  114. package/deps/xz/doc/man/pdf-letter/xzdec-letter.pdf +0 -0
  115. package/deps/xz/doc/man/pdf-letter/xzdiff-letter.pdf +0 -0
  116. package/deps/xz/doc/man/pdf-letter/xzgrep-letter.pdf +0 -0
  117. package/deps/xz/doc/man/pdf-letter/xzless-letter.pdf +0 -0
  118. package/deps/xz/doc/man/pdf-letter/xzmore-letter.pdf +0 -0
  119. package/deps/xz/doc/man/txt/lzmainfo.txt +0 -40
  120. package/deps/xz/doc/man/txt/xz.txt +0 -1483
  121. package/deps/xz/doc/man/txt/xzdec.txt +0 -80
  122. package/deps/xz/doc/man/txt/xzdiff.txt +0 -36
  123. package/deps/xz/doc/man/txt/xzgrep.txt +0 -39
  124. package/deps/xz/doc/man/txt/xzless.txt +0 -39
  125. package/deps/xz/doc/man/txt/xzmore.txt +0 -34
  126. package/deps/xz/doc/xz-file-format.txt +0 -1150
  127. package/deps/xz/dos/INSTALL.txt +0 -79
  128. package/deps/xz/dos/Makefile +0 -147
  129. package/deps/xz/dos/README.txt +0 -123
  130. package/deps/xz/dos/config.h +0 -130
  131. package/deps/xz/extra/7z2lzma/7z2lzma.bash +0 -115
  132. package/deps/xz/extra/scanlzma/scanlzma.c +0 -84
  133. package/deps/xz/include/lzma/base.h +0 -654
  134. package/deps/xz/include/lzma/bcj.h +0 -90
  135. package/deps/xz/include/lzma/block.h +0 -581
  136. package/deps/xz/include/lzma/check.h +0 -150
  137. package/deps/xz/include/lzma/container.h +0 -619
  138. package/deps/xz/include/lzma/delta.h +0 -77
  139. package/deps/xz/include/lzma/filter.h +0 -425
  140. package/deps/xz/include/lzma/hardware.h +0 -64
  141. package/deps/xz/include/lzma/index.h +0 -682
  142. package/deps/xz/include/lzma/index_hash.h +0 -107
  143. package/deps/xz/include/lzma/lzma12.h +0 -420
  144. package/deps/xz/include/lzma/stream_flags.h +0 -223
  145. package/deps/xz/include/lzma/version.h +0 -121
  146. package/deps/xz/include/lzma/vli.h +0 -166
  147. package/deps/xz/include/lzma.h +0 -321
  148. package/deps/xz/lib/.deps/getopt.Po +0 -1
  149. package/deps/xz/lib/.deps/getopt1.Po +0 -1
  150. package/deps/xz/lib/Makefile +0 -566
  151. package/deps/xz/lib/Makefile.am +0 -32
  152. package/deps/xz/lib/Makefile.in +0 -566
  153. package/deps/xz/lib/getopt.c +0 -1197
  154. package/deps/xz/lib/getopt.in.h +0 -226
  155. package/deps/xz/lib/getopt1.c +0 -171
  156. package/deps/xz/lib/getopt_int.h +0 -131
  157. package/deps/xz/lib/liblzma.a +0 -0
  158. package/deps/xz/lib/liblzma.la +0 -41
  159. package/deps/xz/lib/pkgconfig/liblzma.pc +0 -19
  160. package/deps/xz/libtool +0 -10221
  161. package/deps/xz/m4/ax_pthread.m4 +0 -332
  162. package/deps/xz/m4/codeset.m4 +0 -21
  163. package/deps/xz/m4/fcntl-o.m4 +0 -81
  164. package/deps/xz/m4/getopt.m4 +0 -71
  165. package/deps/xz/m4/gettext.m4 +0 -383
  166. package/deps/xz/m4/glibc2.m4 +0 -30
  167. package/deps/xz/m4/glibc21.m4 +0 -30
  168. package/deps/xz/m4/iconv.m4 +0 -199
  169. package/deps/xz/m4/intdiv0.m4 +0 -84
  170. package/deps/xz/m4/intl.m4 +0 -294
  171. package/deps/xz/m4/intldir.m4 +0 -19
  172. package/deps/xz/m4/intlmacosx.m4 +0 -51
  173. package/deps/xz/m4/intmax.m4 +0 -33
  174. package/deps/xz/m4/inttypes-pri.m4 +0 -36
  175. package/deps/xz/m4/inttypes_h.m4 +0 -26
  176. package/deps/xz/m4/lcmessage.m4 +0 -31
  177. package/deps/xz/m4/lib-ld.m4 +0 -110
  178. package/deps/xz/m4/lib-link.m4 +0 -774
  179. package/deps/xz/m4/lib-prefix.m4 +0 -224
  180. package/deps/xz/m4/libtool.m4 +0 -7997
  181. package/deps/xz/m4/lock.m4 +0 -37
  182. package/deps/xz/m4/longlong.m4 +0 -106
  183. package/deps/xz/m4/ltoptions.m4 +0 -384
  184. package/deps/xz/m4/ltsugar.m4 +0 -123
  185. package/deps/xz/m4/ltversion.m4 +0 -23
  186. package/deps/xz/m4/lt~obsolete.m4 +0 -98
  187. package/deps/xz/m4/nls.m4 +0 -32
  188. package/deps/xz/m4/po.m4 +0 -449
  189. package/deps/xz/m4/posix-shell.m4 +0 -63
  190. package/deps/xz/m4/printf-posix.m4 +0 -45
  191. package/deps/xz/m4/progtest.m4 +0 -92
  192. package/deps/xz/m4/size_max.m4 +0 -75
  193. package/deps/xz/m4/stdint_h.m4 +0 -26
  194. package/deps/xz/m4/threadlib.m4 +0 -347
  195. package/deps/xz/m4/tuklib_common.m4 +0 -22
  196. package/deps/xz/m4/tuklib_cpucores.m4 +0 -148
  197. package/deps/xz/m4/tuklib_integer.m4 +0 -74
  198. package/deps/xz/m4/tuklib_mbstr.m4 +0 -30
  199. package/deps/xz/m4/tuklib_physmem.m4 +0 -212
  200. package/deps/xz/m4/tuklib_progname.m4 +0 -25
  201. package/deps/xz/m4/uintmax_t.m4 +0 -30
  202. package/deps/xz/m4/visibility.m4 +0 -74
  203. package/deps/xz/m4/wchar_t.m4 +0 -20
  204. package/deps/xz/m4/wint_t.m4 +0 -28
  205. package/deps/xz/m4/xsize.m4 +0 -13
  206. package/deps/xz/macosx/build.sh +0 -113
  207. package/deps/xz/po/LINGUAS +0 -6
  208. package/deps/xz/po/Makefile +0 -549
  209. package/deps/xz/po/Makefile.in +0 -444
  210. package/deps/xz/po/Makefile.in.in +0 -444
  211. package/deps/xz/po/Makevars +0 -46
  212. package/deps/xz/po/Makevars.template +0 -41
  213. package/deps/xz/po/POTFILES +0 -12
  214. package/deps/xz/po/POTFILES.in +0 -13
  215. package/deps/xz/po/Rules-quot +0 -47
  216. package/deps/xz/po/boldquot.sed +0 -10
  217. package/deps/xz/po/cs.gmo +0 -0
  218. package/deps/xz/po/cs.po +0 -989
  219. package/deps/xz/po/de.gmo +0 -0
  220. package/deps/xz/po/de.po +0 -990
  221. package/deps/xz/po/en@boldquot.header +0 -25
  222. package/deps/xz/po/en@quot.header +0 -22
  223. package/deps/xz/po/fr.gmo +0 -0
  224. package/deps/xz/po/fr.po +0 -974
  225. package/deps/xz/po/insert-header.sin +0 -23
  226. package/deps/xz/po/it.gmo +0 -0
  227. package/deps/xz/po/it.po +0 -975
  228. package/deps/xz/po/pl.gmo +0 -0
  229. package/deps/xz/po/pl.po +0 -964
  230. package/deps/xz/po/quot.sed +0 -6
  231. package/deps/xz/po/remove-potcdate.sin +0 -19
  232. package/deps/xz/po/stamp-po +0 -1
  233. package/deps/xz/po/vi.gmo +0 -0
  234. package/deps/xz/po/vi.po +0 -970
  235. package/deps/xz/po/xz.pot +0 -854
  236. package/deps/xz/share/doc/xz/AUTHORS +0 -27
  237. package/deps/xz/share/doc/xz/COPYING +0 -65
  238. package/deps/xz/share/doc/xz/COPYING.GPLv2 +0 -339
  239. package/deps/xz/share/doc/xz/NEWS +0 -505
  240. package/deps/xz/share/doc/xz/README +0 -308
  241. package/deps/xz/share/doc/xz/THANKS +0 -116
  242. package/deps/xz/share/doc/xz/TODO +0 -111
  243. package/deps/xz/share/doc/xz/examples/00_README.txt +0 -31
  244. package/deps/xz/share/doc/xz/examples/01_compress_easy.c +0 -297
  245. package/deps/xz/share/doc/xz/examples/02_decompress.c +0 -287
  246. package/deps/xz/share/doc/xz/examples/03_compress_custom.c +0 -193
  247. package/deps/xz/share/doc/xz/examples/04_compress_easy_mt.c +0 -206
  248. package/deps/xz/share/doc/xz/examples/Makefile +0 -24
  249. package/deps/xz/share/doc/xz/examples_old/xz_pipe_comp.c +0 -127
  250. package/deps/xz/share/doc/xz/examples_old/xz_pipe_decomp.c +0 -123
  251. package/deps/xz/share/doc/xz/faq.txt +0 -224
  252. package/deps/xz/share/doc/xz/history.txt +0 -150
  253. package/deps/xz/share/doc/xz/lzma-file-format.txt +0 -166
  254. package/deps/xz/share/doc/xz/xz-file-format.txt +0 -1150
  255. package/deps/xz/share/locale/cs/LC_MESSAGES/xz.mo +0 -0
  256. package/deps/xz/share/locale/de/LC_MESSAGES/xz.mo +0 -0
  257. package/deps/xz/share/locale/fr/LC_MESSAGES/xz.mo +0 -0
  258. package/deps/xz/share/locale/it/LC_MESSAGES/xz.mo +0 -0
  259. package/deps/xz/share/locale/pl/LC_MESSAGES/xz.mo +0 -0
  260. package/deps/xz/share/locale/vi/LC_MESSAGES/xz.mo +0 -0
  261. package/deps/xz/src/Makefile +0 -674
  262. package/deps/xz/src/Makefile.am +0 -42
  263. package/deps/xz/src/Makefile.in +0 -674
  264. package/deps/xz/src/common/common_w32res.rc +0 -50
  265. package/deps/xz/src/common/mythread.h +0 -521
  266. package/deps/xz/src/common/sysdefs.h +0 -202
  267. package/deps/xz/src/common/tuklib_common.h +0 -71
  268. package/deps/xz/src/common/tuklib_config.h +0 -7
  269. package/deps/xz/src/common/tuklib_cpucores.c +0 -91
  270. package/deps/xz/src/common/tuklib_cpucores.h +0 -23
  271. package/deps/xz/src/common/tuklib_exit.c +0 -57
  272. package/deps/xz/src/common/tuklib_exit.h +0 -25
  273. package/deps/xz/src/common/tuklib_gettext.h +0 -44
  274. package/deps/xz/src/common/tuklib_integer.h +0 -523
  275. package/deps/xz/src/common/tuklib_mbstr.h +0 -66
  276. package/deps/xz/src/common/tuklib_mbstr_fw.c +0 -31
  277. package/deps/xz/src/common/tuklib_mbstr_width.c +0 -64
  278. package/deps/xz/src/common/tuklib_open_stdxxx.c +0 -57
  279. package/deps/xz/src/common/tuklib_open_stdxxx.h +0 -23
  280. package/deps/xz/src/common/tuklib_physmem.c +0 -215
  281. package/deps/xz/src/common/tuklib_physmem.h +0 -28
  282. package/deps/xz/src/common/tuklib_progname.c +0 -50
  283. package/deps/xz/src/common/tuklib_progname.h +0 -32
  284. package/deps/xz/src/liblzma/.deps/liblzma_la-alone_decoder.Plo +0 -269
  285. package/deps/xz/src/liblzma/.deps/liblzma_la-alone_encoder.Plo +0 -263
  286. package/deps/xz/src/liblzma/.deps/liblzma_la-arm.Plo +0 -263
  287. package/deps/xz/src/liblzma/.deps/liblzma_la-armthumb.Plo +0 -263
  288. package/deps/xz/src/liblzma/.deps/liblzma_la-auto_decoder.Plo +0 -263
  289. package/deps/xz/src/liblzma/.deps/liblzma_la-block_buffer_decoder.Plo +0 -261
  290. package/deps/xz/src/liblzma/.deps/liblzma_la-block_buffer_encoder.Plo +0 -273
  291. package/deps/xz/src/liblzma/.deps/liblzma_la-block_decoder.Plo +0 -268
  292. package/deps/xz/src/liblzma/.deps/liblzma_la-block_encoder.Plo +0 -268
  293. package/deps/xz/src/liblzma/.deps/liblzma_la-block_header_decoder.Plo +0 -263
  294. package/deps/xz/src/liblzma/.deps/liblzma_la-block_header_encoder.Plo +0 -263
  295. package/deps/xz/src/liblzma/.deps/liblzma_la-block_util.Plo +0 -260
  296. package/deps/xz/src/liblzma/.deps/liblzma_la-check.Plo +0 -261
  297. package/deps/xz/src/liblzma/.deps/liblzma_la-common.Plo +0 -258
  298. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_fast.Plo +0 -263
  299. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_small.Plo +0 -1
  300. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_table.Plo +0 -260
  301. package/deps/xz/src/liblzma/.deps/liblzma_la-crc32_x86.Plo +0 -1
  302. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_fast.Plo +0 -263
  303. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_small.Plo +0 -1
  304. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_table.Plo +0 -260
  305. package/deps/xz/src/liblzma/.deps/liblzma_la-crc64_x86.Plo +0 -1
  306. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_common.Plo +0 -263
  307. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_decoder.Plo +0 -265
  308. package/deps/xz/src/liblzma/.deps/liblzma_la-delta_encoder.Plo +0 -265
  309. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_buffer_encoder.Plo +0 -261
  310. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_decoder_memusage.Plo +0 -261
  311. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_encoder.Plo +0 -261
  312. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_encoder_memusage.Plo +0 -261
  313. package/deps/xz/src/liblzma/.deps/liblzma_la-easy_preset.Plo +0 -261
  314. package/deps/xz/src/liblzma/.deps/liblzma_la-fastpos_table.Plo +0 -261
  315. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_buffer_decoder.Plo +0 -261
  316. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_buffer_encoder.Plo +0 -261
  317. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_common.Plo +0 -261
  318. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_decoder.Plo +0 -283
  319. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_encoder.Plo +0 -283
  320. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_flags_decoder.Plo +0 -261
  321. package/deps/xz/src/liblzma/.deps/liblzma_la-filter_flags_encoder.Plo +0 -261
  322. package/deps/xz/src/liblzma/.deps/liblzma_la-hardware_cputhreads.Plo +0 -260
  323. package/deps/xz/src/liblzma/.deps/liblzma_la-hardware_physmem.Plo +0 -260
  324. package/deps/xz/src/liblzma/.deps/liblzma_la-ia64.Plo +0 -263
  325. package/deps/xz/src/liblzma/.deps/liblzma_la-index.Plo +0 -262
  326. package/deps/xz/src/liblzma/.deps/liblzma_la-index_decoder.Plo +0 -266
  327. package/deps/xz/src/liblzma/.deps/liblzma_la-index_encoder.Plo +0 -268
  328. package/deps/xz/src/liblzma/.deps/liblzma_la-index_hash.Plo +0 -265
  329. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_decoder.Plo +0 -261
  330. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_encoder.Plo +0 -286
  331. package/deps/xz/src/liblzma/.deps/liblzma_la-lz_encoder_mf.Plo +0 -286
  332. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma2_decoder.Plo +0 -266
  333. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma2_encoder.Plo +0 -268
  334. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_decoder.Plo +0 -274
  335. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder.Plo +0 -285
  336. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_optimum_fast.Plo +0 -300
  337. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_optimum_normal.Plo +0 -303
  338. package/deps/xz/src/liblzma/.deps/liblzma_la-lzma_encoder_presets.Plo +0 -259
  339. package/deps/xz/src/liblzma/.deps/liblzma_la-outqueue.Plo +0 -260
  340. package/deps/xz/src/liblzma/.deps/liblzma_la-powerpc.Plo +0 -263
  341. package/deps/xz/src/liblzma/.deps/liblzma_la-price_table.Plo +0 -266
  342. package/deps/xz/src/liblzma/.deps/liblzma_la-sha256.Plo +0 -261
  343. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_coder.Plo +0 -263
  344. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_decoder.Plo +0 -263
  345. package/deps/xz/src/liblzma/.deps/liblzma_la-simple_encoder.Plo +0 -263
  346. package/deps/xz/src/liblzma/.deps/liblzma_la-sparc.Plo +0 -263
  347. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_buffer_decoder.Plo +0 -261
  348. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_buffer_encoder.Plo +0 -261
  349. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_decoder.Plo +0 -263
  350. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_encoder.Plo +0 -263
  351. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_encoder_mt.Plo +0 -273
  352. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_common.Plo +0 -261
  353. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_decoder.Plo +0 -261
  354. package/deps/xz/src/liblzma/.deps/liblzma_la-stream_flags_encoder.Plo +0 -261
  355. package/deps/xz/src/liblzma/.deps/liblzma_la-tuklib_cpucores.Plo +0 -170
  356. package/deps/xz/src/liblzma/.deps/liblzma_la-tuklib_physmem.Plo +0 -170
  357. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_decoder.Plo +0 -258
  358. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_encoder.Plo +0 -258
  359. package/deps/xz/src/liblzma/.deps/liblzma_la-vli_size.Plo +0 -258
  360. package/deps/xz/src/liblzma/.deps/liblzma_la-x86.Plo +0 -263
  361. package/deps/xz/src/liblzma/.libs/liblzma.a +0 -0
  362. package/deps/xz/src/liblzma/.libs/liblzma.lai +0 -41
  363. package/deps/xz/src/liblzma/Makefile +0 -1858
  364. package/deps/xz/src/liblzma/Makefile.am +0 -122
  365. package/deps/xz/src/liblzma/Makefile.in +0 -1858
  366. package/deps/xz/src/liblzma/api/Makefile +0 -608
  367. package/deps/xz/src/liblzma/api/Makefile.am +0 -23
  368. package/deps/xz/src/liblzma/api/Makefile.in +0 -608
  369. package/deps/xz/src/liblzma/api/lzma/base.h +0 -654
  370. package/deps/xz/src/liblzma/api/lzma/bcj.h +0 -90
  371. package/deps/xz/src/liblzma/api/lzma/block.h +0 -581
  372. package/deps/xz/src/liblzma/api/lzma/check.h +0 -150
  373. package/deps/xz/src/liblzma/api/lzma/container.h +0 -619
  374. package/deps/xz/src/liblzma/api/lzma/delta.h +0 -77
  375. package/deps/xz/src/liblzma/api/lzma/filter.h +0 -425
  376. package/deps/xz/src/liblzma/api/lzma/hardware.h +0 -64
  377. package/deps/xz/src/liblzma/api/lzma/index.h +0 -682
  378. package/deps/xz/src/liblzma/api/lzma/index_hash.h +0 -107
  379. package/deps/xz/src/liblzma/api/lzma/lzma12.h +0 -420
  380. package/deps/xz/src/liblzma/api/lzma/stream_flags.h +0 -223
  381. package/deps/xz/src/liblzma/api/lzma/version.h +0 -121
  382. package/deps/xz/src/liblzma/api/lzma/vli.h +0 -166
  383. package/deps/xz/src/liblzma/api/lzma.h +0 -321
  384. package/deps/xz/src/liblzma/check/Makefile.inc +0 -53
  385. package/deps/xz/src/liblzma/check/check.c +0 -174
  386. package/deps/xz/src/liblzma/check/check.h +0 -162
  387. package/deps/xz/src/liblzma/check/crc32_fast.c +0 -82
  388. package/deps/xz/src/liblzma/check/crc32_small.c +0 -61
  389. package/deps/xz/src/liblzma/check/crc32_table.c +0 -19
  390. package/deps/xz/src/liblzma/check/crc32_table_be.h +0 -525
  391. package/deps/xz/src/liblzma/check/crc32_table_le.h +0 -525
  392. package/deps/xz/src/liblzma/check/crc32_tablegen.c +0 -117
  393. package/deps/xz/src/liblzma/check/crc32_x86.S +0 -304
  394. package/deps/xz/src/liblzma/check/crc64_fast.c +0 -72
  395. package/deps/xz/src/liblzma/check/crc64_small.c +0 -53
  396. package/deps/xz/src/liblzma/check/crc64_table.c +0 -19
  397. package/deps/xz/src/liblzma/check/crc64_table_be.h +0 -521
  398. package/deps/xz/src/liblzma/check/crc64_table_le.h +0 -521
  399. package/deps/xz/src/liblzma/check/crc64_tablegen.c +0 -88
  400. package/deps/xz/src/liblzma/check/crc64_x86.S +0 -287
  401. package/deps/xz/src/liblzma/check/crc_macros.h +0 -30
  402. package/deps/xz/src/liblzma/check/sha256.c +0 -196
  403. package/deps/xz/src/liblzma/common/Makefile.inc +0 -76
  404. package/deps/xz/src/liblzma/common/alone_decoder.c +0 -238
  405. package/deps/xz/src/liblzma/common/alone_decoder.h +0 -23
  406. package/deps/xz/src/liblzma/common/alone_encoder.c +0 -157
  407. package/deps/xz/src/liblzma/common/auto_decoder.c +0 -186
  408. package/deps/xz/src/liblzma/common/block_buffer_decoder.c +0 -80
  409. package/deps/xz/src/liblzma/common/block_buffer_encoder.c +0 -337
  410. package/deps/xz/src/liblzma/common/block_buffer_encoder.h +0 -24
  411. package/deps/xz/src/liblzma/common/block_decoder.c +0 -252
  412. package/deps/xz/src/liblzma/common/block_decoder.h +0 -22
  413. package/deps/xz/src/liblzma/common/block_encoder.c +0 -217
  414. package/deps/xz/src/liblzma/common/block_encoder.h +0 -47
  415. package/deps/xz/src/liblzma/common/block_header_decoder.c +0 -124
  416. package/deps/xz/src/liblzma/common/block_header_encoder.c +0 -132
  417. package/deps/xz/src/liblzma/common/block_util.c +0 -90
  418. package/deps/xz/src/liblzma/common/common.c +0 -443
  419. package/deps/xz/src/liblzma/common/common.h +0 -318
  420. package/deps/xz/src/liblzma/common/easy_buffer_encoder.c +0 -27
  421. package/deps/xz/src/liblzma/common/easy_decoder_memusage.c +0 -24
  422. package/deps/xz/src/liblzma/common/easy_encoder.c +0 -24
  423. package/deps/xz/src/liblzma/common/easy_encoder_memusage.c +0 -24
  424. package/deps/xz/src/liblzma/common/easy_preset.c +0 -27
  425. package/deps/xz/src/liblzma/common/easy_preset.h +0 -32
  426. package/deps/xz/src/liblzma/common/filter_buffer_decoder.c +0 -88
  427. package/deps/xz/src/liblzma/common/filter_buffer_encoder.c +0 -55
  428. package/deps/xz/src/liblzma/common/filter_common.c +0 -337
  429. package/deps/xz/src/liblzma/common/filter_common.h +0 -48
  430. package/deps/xz/src/liblzma/common/filter_decoder.c +0 -184
  431. package/deps/xz/src/liblzma/common/filter_decoder.h +0 -23
  432. package/deps/xz/src/liblzma/common/filter_encoder.c +0 -286
  433. package/deps/xz/src/liblzma/common/filter_encoder.h +0 -27
  434. package/deps/xz/src/liblzma/common/filter_flags_decoder.c +0 -46
  435. package/deps/xz/src/liblzma/common/filter_flags_encoder.c +0 -56
  436. package/deps/xz/src/liblzma/common/hardware_cputhreads.c +0 -22
  437. package/deps/xz/src/liblzma/common/hardware_physmem.c +0 -25
  438. package/deps/xz/src/liblzma/common/index.c +0 -1246
  439. package/deps/xz/src/liblzma/common/index.h +0 -73
  440. package/deps/xz/src/liblzma/common/index_decoder.c +0 -345
  441. package/deps/xz/src/liblzma/common/index_encoder.c +0 -254
  442. package/deps/xz/src/liblzma/common/index_encoder.h +0 -23
  443. package/deps/xz/src/liblzma/common/index_hash.c +0 -334
  444. package/deps/xz/src/liblzma/common/memcmplen.h +0 -175
  445. package/deps/xz/src/liblzma/common/outqueue.c +0 -184
  446. package/deps/xz/src/liblzma/common/outqueue.h +0 -156
  447. package/deps/xz/src/liblzma/common/stream_buffer_decoder.c +0 -91
  448. package/deps/xz/src/liblzma/common/stream_buffer_encoder.c +0 -141
  449. package/deps/xz/src/liblzma/common/stream_decoder.c +0 -462
  450. package/deps/xz/src/liblzma/common/stream_decoder.h +0 -22
  451. package/deps/xz/src/liblzma/common/stream_encoder.c +0 -332
  452. package/deps/xz/src/liblzma/common/stream_encoder_mt.c +0 -1131
  453. package/deps/xz/src/liblzma/common/stream_flags_common.c +0 -47
  454. package/deps/xz/src/liblzma/common/stream_flags_common.h +0 -33
  455. package/deps/xz/src/liblzma/common/stream_flags_decoder.c +0 -82
  456. package/deps/xz/src/liblzma/common/stream_flags_encoder.c +0 -86
  457. package/deps/xz/src/liblzma/common/vli_decoder.c +0 -86
  458. package/deps/xz/src/liblzma/common/vli_encoder.c +0 -69
  459. package/deps/xz/src/liblzma/common/vli_size.c +0 -30
  460. package/deps/xz/src/liblzma/delta/Makefile.inc +0 -23
  461. package/deps/xz/src/liblzma/delta/delta_common.c +0 -70
  462. package/deps/xz/src/liblzma/delta/delta_common.h +0 -20
  463. package/deps/xz/src/liblzma/delta/delta_decoder.c +0 -76
  464. package/deps/xz/src/liblzma/delta/delta_decoder.h +0 -26
  465. package/deps/xz/src/liblzma/delta/delta_encoder.c +0 -121
  466. package/deps/xz/src/liblzma/delta/delta_encoder.h +0 -24
  467. package/deps/xz/src/liblzma/delta/delta_private.h +0 -37
  468. package/deps/xz/src/liblzma/liblzma.la +0 -41
  469. package/deps/xz/src/liblzma/liblzma.map +0 -108
  470. package/deps/xz/src/liblzma/liblzma.pc +0 -19
  471. package/deps/xz/src/liblzma/liblzma.pc.in +0 -19
  472. package/deps/xz/src/liblzma/liblzma_la-alone_decoder.lo +0 -12
  473. package/deps/xz/src/liblzma/liblzma_la-alone_decoder.o +0 -0
  474. package/deps/xz/src/liblzma/liblzma_la-alone_encoder.lo +0 -12
  475. package/deps/xz/src/liblzma/liblzma_la-alone_encoder.o +0 -0
  476. package/deps/xz/src/liblzma/liblzma_la-arm.lo +0 -12
  477. package/deps/xz/src/liblzma/liblzma_la-arm.o +0 -0
  478. package/deps/xz/src/liblzma/liblzma_la-armthumb.lo +0 -12
  479. package/deps/xz/src/liblzma/liblzma_la-armthumb.o +0 -0
  480. package/deps/xz/src/liblzma/liblzma_la-auto_decoder.lo +0 -12
  481. package/deps/xz/src/liblzma/liblzma_la-auto_decoder.o +0 -0
  482. package/deps/xz/src/liblzma/liblzma_la-block_buffer_decoder.lo +0 -12
  483. package/deps/xz/src/liblzma/liblzma_la-block_buffer_decoder.o +0 -0
  484. package/deps/xz/src/liblzma/liblzma_la-block_buffer_encoder.lo +0 -12
  485. package/deps/xz/src/liblzma/liblzma_la-block_buffer_encoder.o +0 -0
  486. package/deps/xz/src/liblzma/liblzma_la-block_decoder.lo +0 -12
  487. package/deps/xz/src/liblzma/liblzma_la-block_decoder.o +0 -0
  488. package/deps/xz/src/liblzma/liblzma_la-block_encoder.lo +0 -12
  489. package/deps/xz/src/liblzma/liblzma_la-block_encoder.o +0 -0
  490. package/deps/xz/src/liblzma/liblzma_la-block_header_decoder.lo +0 -12
  491. package/deps/xz/src/liblzma/liblzma_la-block_header_decoder.o +0 -0
  492. package/deps/xz/src/liblzma/liblzma_la-block_header_encoder.lo +0 -12
  493. package/deps/xz/src/liblzma/liblzma_la-block_header_encoder.o +0 -0
  494. package/deps/xz/src/liblzma/liblzma_la-block_util.lo +0 -12
  495. package/deps/xz/src/liblzma/liblzma_la-block_util.o +0 -0
  496. package/deps/xz/src/liblzma/liblzma_la-check.lo +0 -12
  497. package/deps/xz/src/liblzma/liblzma_la-check.o +0 -0
  498. package/deps/xz/src/liblzma/liblzma_la-common.lo +0 -12
  499. package/deps/xz/src/liblzma/liblzma_la-common.o +0 -0
  500. package/deps/xz/src/liblzma/liblzma_la-crc32_fast.lo +0 -12
  501. package/deps/xz/src/liblzma/liblzma_la-crc32_fast.o +0 -0
  502. package/deps/xz/src/liblzma/liblzma_la-crc32_table.lo +0 -12
  503. package/deps/xz/src/liblzma/liblzma_la-crc32_table.o +0 -0
  504. package/deps/xz/src/liblzma/liblzma_la-crc64_fast.lo +0 -12
  505. package/deps/xz/src/liblzma/liblzma_la-crc64_fast.o +0 -0
  506. package/deps/xz/src/liblzma/liblzma_la-crc64_table.lo +0 -12
  507. package/deps/xz/src/liblzma/liblzma_la-crc64_table.o +0 -0
  508. package/deps/xz/src/liblzma/liblzma_la-delta_common.lo +0 -12
  509. package/deps/xz/src/liblzma/liblzma_la-delta_common.o +0 -0
  510. package/deps/xz/src/liblzma/liblzma_la-delta_decoder.lo +0 -12
  511. package/deps/xz/src/liblzma/liblzma_la-delta_decoder.o +0 -0
  512. package/deps/xz/src/liblzma/liblzma_la-delta_encoder.lo +0 -12
  513. package/deps/xz/src/liblzma/liblzma_la-delta_encoder.o +0 -0
  514. package/deps/xz/src/liblzma/liblzma_la-easy_buffer_encoder.lo +0 -12
  515. package/deps/xz/src/liblzma/liblzma_la-easy_buffer_encoder.o +0 -0
  516. package/deps/xz/src/liblzma/liblzma_la-easy_decoder_memusage.lo +0 -12
  517. package/deps/xz/src/liblzma/liblzma_la-easy_decoder_memusage.o +0 -0
  518. package/deps/xz/src/liblzma/liblzma_la-easy_encoder.lo +0 -12
  519. package/deps/xz/src/liblzma/liblzma_la-easy_encoder.o +0 -0
  520. package/deps/xz/src/liblzma/liblzma_la-easy_encoder_memusage.lo +0 -12
  521. package/deps/xz/src/liblzma/liblzma_la-easy_encoder_memusage.o +0 -0
  522. package/deps/xz/src/liblzma/liblzma_la-easy_preset.lo +0 -12
  523. package/deps/xz/src/liblzma/liblzma_la-easy_preset.o +0 -0
  524. package/deps/xz/src/liblzma/liblzma_la-fastpos_table.lo +0 -12
  525. package/deps/xz/src/liblzma/liblzma_la-fastpos_table.o +0 -0
  526. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_decoder.lo +0 -12
  527. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_decoder.o +0 -0
  528. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_encoder.lo +0 -12
  529. package/deps/xz/src/liblzma/liblzma_la-filter_buffer_encoder.o +0 -0
  530. package/deps/xz/src/liblzma/liblzma_la-filter_common.lo +0 -12
  531. package/deps/xz/src/liblzma/liblzma_la-filter_common.o +0 -0
  532. package/deps/xz/src/liblzma/liblzma_la-filter_decoder.lo +0 -12
  533. package/deps/xz/src/liblzma/liblzma_la-filter_decoder.o +0 -0
  534. package/deps/xz/src/liblzma/liblzma_la-filter_encoder.lo +0 -12
  535. package/deps/xz/src/liblzma/liblzma_la-filter_encoder.o +0 -0
  536. package/deps/xz/src/liblzma/liblzma_la-filter_flags_decoder.lo +0 -12
  537. package/deps/xz/src/liblzma/liblzma_la-filter_flags_decoder.o +0 -0
  538. package/deps/xz/src/liblzma/liblzma_la-filter_flags_encoder.lo +0 -12
  539. package/deps/xz/src/liblzma/liblzma_la-filter_flags_encoder.o +0 -0
  540. package/deps/xz/src/liblzma/liblzma_la-hardware_cputhreads.lo +0 -12
  541. package/deps/xz/src/liblzma/liblzma_la-hardware_cputhreads.o +0 -0
  542. package/deps/xz/src/liblzma/liblzma_la-hardware_physmem.lo +0 -12
  543. package/deps/xz/src/liblzma/liblzma_la-hardware_physmem.o +0 -0
  544. package/deps/xz/src/liblzma/liblzma_la-ia64.lo +0 -12
  545. package/deps/xz/src/liblzma/liblzma_la-ia64.o +0 -0
  546. package/deps/xz/src/liblzma/liblzma_la-index.lo +0 -12
  547. package/deps/xz/src/liblzma/liblzma_la-index.o +0 -0
  548. package/deps/xz/src/liblzma/liblzma_la-index_decoder.lo +0 -12
  549. package/deps/xz/src/liblzma/liblzma_la-index_decoder.o +0 -0
  550. package/deps/xz/src/liblzma/liblzma_la-index_encoder.lo +0 -12
  551. package/deps/xz/src/liblzma/liblzma_la-index_encoder.o +0 -0
  552. package/deps/xz/src/liblzma/liblzma_la-index_hash.lo +0 -12
  553. package/deps/xz/src/liblzma/liblzma_la-index_hash.o +0 -0
  554. package/deps/xz/src/liblzma/liblzma_la-lz_decoder.lo +0 -12
  555. package/deps/xz/src/liblzma/liblzma_la-lz_decoder.o +0 -0
  556. package/deps/xz/src/liblzma/liblzma_la-lz_encoder.lo +0 -12
  557. package/deps/xz/src/liblzma/liblzma_la-lz_encoder.o +0 -0
  558. package/deps/xz/src/liblzma/liblzma_la-lz_encoder_mf.lo +0 -12
  559. package/deps/xz/src/liblzma/liblzma_la-lz_encoder_mf.o +0 -0
  560. package/deps/xz/src/liblzma/liblzma_la-lzma2_decoder.lo +0 -12
  561. package/deps/xz/src/liblzma/liblzma_la-lzma2_decoder.o +0 -0
  562. package/deps/xz/src/liblzma/liblzma_la-lzma2_encoder.lo +0 -12
  563. package/deps/xz/src/liblzma/liblzma_la-lzma2_encoder.o +0 -0
  564. package/deps/xz/src/liblzma/liblzma_la-lzma_decoder.lo +0 -12
  565. package/deps/xz/src/liblzma/liblzma_la-lzma_decoder.o +0 -0
  566. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder.lo +0 -12
  567. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder.o +0 -0
  568. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_fast.lo +0 -12
  569. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_fast.o +0 -0
  570. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_normal.lo +0 -12
  571. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_optimum_normal.o +0 -0
  572. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_presets.lo +0 -12
  573. package/deps/xz/src/liblzma/liblzma_la-lzma_encoder_presets.o +0 -0
  574. package/deps/xz/src/liblzma/liblzma_la-outqueue.lo +0 -12
  575. package/deps/xz/src/liblzma/liblzma_la-outqueue.o +0 -0
  576. package/deps/xz/src/liblzma/liblzma_la-powerpc.lo +0 -12
  577. package/deps/xz/src/liblzma/liblzma_la-powerpc.o +0 -0
  578. package/deps/xz/src/liblzma/liblzma_la-price_table.lo +0 -12
  579. package/deps/xz/src/liblzma/liblzma_la-price_table.o +0 -0
  580. package/deps/xz/src/liblzma/liblzma_la-sha256.lo +0 -12
  581. package/deps/xz/src/liblzma/liblzma_la-sha256.o +0 -0
  582. package/deps/xz/src/liblzma/liblzma_la-simple_coder.lo +0 -12
  583. package/deps/xz/src/liblzma/liblzma_la-simple_coder.o +0 -0
  584. package/deps/xz/src/liblzma/liblzma_la-simple_decoder.lo +0 -12
  585. package/deps/xz/src/liblzma/liblzma_la-simple_decoder.o +0 -0
  586. package/deps/xz/src/liblzma/liblzma_la-simple_encoder.lo +0 -12
  587. package/deps/xz/src/liblzma/liblzma_la-simple_encoder.o +0 -0
  588. package/deps/xz/src/liblzma/liblzma_la-sparc.lo +0 -12
  589. package/deps/xz/src/liblzma/liblzma_la-sparc.o +0 -0
  590. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_decoder.lo +0 -12
  591. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_decoder.o +0 -0
  592. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_encoder.lo +0 -12
  593. package/deps/xz/src/liblzma/liblzma_la-stream_buffer_encoder.o +0 -0
  594. package/deps/xz/src/liblzma/liblzma_la-stream_decoder.lo +0 -12
  595. package/deps/xz/src/liblzma/liblzma_la-stream_decoder.o +0 -0
  596. package/deps/xz/src/liblzma/liblzma_la-stream_encoder.lo +0 -12
  597. package/deps/xz/src/liblzma/liblzma_la-stream_encoder.o +0 -0
  598. package/deps/xz/src/liblzma/liblzma_la-stream_encoder_mt.lo +0 -12
  599. package/deps/xz/src/liblzma/liblzma_la-stream_encoder_mt.o +0 -0
  600. package/deps/xz/src/liblzma/liblzma_la-stream_flags_common.lo +0 -12
  601. package/deps/xz/src/liblzma/liblzma_la-stream_flags_common.o +0 -0
  602. package/deps/xz/src/liblzma/liblzma_la-stream_flags_decoder.lo +0 -12
  603. package/deps/xz/src/liblzma/liblzma_la-stream_flags_decoder.o +0 -0
  604. package/deps/xz/src/liblzma/liblzma_la-stream_flags_encoder.lo +0 -12
  605. package/deps/xz/src/liblzma/liblzma_la-stream_flags_encoder.o +0 -0
  606. package/deps/xz/src/liblzma/liblzma_la-tuklib_cpucores.lo +0 -12
  607. package/deps/xz/src/liblzma/liblzma_la-tuklib_cpucores.o +0 -0
  608. package/deps/xz/src/liblzma/liblzma_la-tuklib_physmem.lo +0 -12
  609. package/deps/xz/src/liblzma/liblzma_la-tuklib_physmem.o +0 -0
  610. package/deps/xz/src/liblzma/liblzma_la-vli_decoder.lo +0 -12
  611. package/deps/xz/src/liblzma/liblzma_la-vli_decoder.o +0 -0
  612. package/deps/xz/src/liblzma/liblzma_la-vli_encoder.lo +0 -12
  613. package/deps/xz/src/liblzma/liblzma_la-vli_encoder.o +0 -0
  614. package/deps/xz/src/liblzma/liblzma_la-vli_size.lo +0 -12
  615. package/deps/xz/src/liblzma/liblzma_la-vli_size.o +0 -0
  616. package/deps/xz/src/liblzma/liblzma_la-x86.lo +0 -12
  617. package/deps/xz/src/liblzma/liblzma_la-x86.o +0 -0
  618. package/deps/xz/src/liblzma/liblzma_w32res.rc +0 -12
  619. package/deps/xz/src/liblzma/lz/Makefile.inc +0 -22
  620. package/deps/xz/src/liblzma/lz/lz_decoder.c +0 -300
  621. package/deps/xz/src/liblzma/lz/lz_decoder.h +0 -235
  622. package/deps/xz/src/liblzma/lz/lz_encoder.c +0 -605
  623. package/deps/xz/src/liblzma/lz/lz_encoder.h +0 -328
  624. package/deps/xz/src/liblzma/lz/lz_encoder_hash.h +0 -108
  625. package/deps/xz/src/liblzma/lz/lz_encoder_hash_table.h +0 -68
  626. package/deps/xz/src/liblzma/lz/lz_encoder_mf.c +0 -744
  627. package/deps/xz/src/liblzma/lzma/Makefile.inc +0 -43
  628. package/deps/xz/src/liblzma/lzma/fastpos.h +0 -141
  629. package/deps/xz/src/liblzma/lzma/fastpos_table.c +0 -519
  630. package/deps/xz/src/liblzma/lzma/fastpos_tablegen.c +0 -56
  631. package/deps/xz/src/liblzma/lzma/lzma2_decoder.c +0 -304
  632. package/deps/xz/src/liblzma/lzma/lzma2_decoder.h +0 -29
  633. package/deps/xz/src/liblzma/lzma/lzma2_encoder.c +0 -403
  634. package/deps/xz/src/liblzma/lzma/lzma2_encoder.h +0 -43
  635. package/deps/xz/src/liblzma/lzma/lzma_common.h +0 -224
  636. package/deps/xz/src/liblzma/lzma/lzma_decoder.c +0 -1061
  637. package/deps/xz/src/liblzma/lzma/lzma_decoder.h +0 -53
  638. package/deps/xz/src/liblzma/lzma/lzma_encoder.c +0 -676
  639. package/deps/xz/src/liblzma/lzma/lzma_encoder.h +0 -55
  640. package/deps/xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c +0 -169
  641. package/deps/xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c +0 -854
  642. package/deps/xz/src/liblzma/lzma/lzma_encoder_presets.c +0 -63
  643. package/deps/xz/src/liblzma/lzma/lzma_encoder_private.h +0 -148
  644. package/deps/xz/src/liblzma/rangecoder/Makefile.inc +0 -21
  645. package/deps/xz/src/liblzma/rangecoder/price.h +0 -92
  646. package/deps/xz/src/liblzma/rangecoder/price_table.c +0 -22
  647. package/deps/xz/src/liblzma/rangecoder/price_tablegen.c +0 -87
  648. package/deps/xz/src/liblzma/rangecoder/range_common.h +0 -73
  649. package/deps/xz/src/liblzma/rangecoder/range_decoder.h +0 -185
  650. package/deps/xz/src/liblzma/rangecoder/range_encoder.h +0 -231
  651. package/deps/xz/src/liblzma/simple/Makefile.inc +0 -47
  652. package/deps/xz/src/liblzma/simple/arm.c +0 -71
  653. package/deps/xz/src/liblzma/simple/armthumb.c +0 -76
  654. package/deps/xz/src/liblzma/simple/ia64.c +0 -112
  655. package/deps/xz/src/liblzma/simple/powerpc.c +0 -75
  656. package/deps/xz/src/liblzma/simple/simple_coder.c +0 -277
  657. package/deps/xz/src/liblzma/simple/simple_coder.h +0 -72
  658. package/deps/xz/src/liblzma/simple/simple_decoder.c +0 -40
  659. package/deps/xz/src/liblzma/simple/simple_decoder.h +0 -22
  660. package/deps/xz/src/liblzma/simple/simple_encoder.c +0 -38
  661. package/deps/xz/src/liblzma/simple/simple_encoder.h +0 -23
  662. package/deps/xz/src/liblzma/simple/simple_private.h +0 -76
  663. package/deps/xz/src/liblzma/simple/sparc.c +0 -83
  664. package/deps/xz/src/liblzma/simple/x86.c +0 -156
  665. package/deps/xz/src/liblzma/validate_map.sh +0 -68
  666. package/deps/xz/src/lzmainfo/.deps/lzmainfo-lzmainfo.Po +0 -1
  667. package/deps/xz/src/lzmainfo/.deps/lzmainfo-tuklib_exit.Po +0 -1
  668. package/deps/xz/src/lzmainfo/.deps/lzmainfo-tuklib_progname.Po +0 -1
  669. package/deps/xz/src/lzmainfo/Makefile +0 -802
  670. package/deps/xz/src/lzmainfo/Makefile.am +0 -39
  671. package/deps/xz/src/lzmainfo/Makefile.in +0 -802
  672. package/deps/xz/src/lzmainfo/lzmainfo.1 +0 -60
  673. package/deps/xz/src/lzmainfo/lzmainfo.c +0 -219
  674. package/deps/xz/src/lzmainfo/lzmainfo_w32res.rc +0 -12
  675. package/deps/xz/src/scripts/Makefile +0 -642
  676. package/deps/xz/src/scripts/Makefile.am +0 -55
  677. package/deps/xz/src/scripts/Makefile.in +0 -642
  678. package/deps/xz/src/scripts/xzdiff +0 -200
  679. package/deps/xz/src/scripts/xzdiff.1 +0 -77
  680. package/deps/xz/src/scripts/xzdiff.in +0 -200
  681. package/deps/xz/src/scripts/xzgrep +0 -215
  682. package/deps/xz/src/scripts/xzgrep.1 +0 -98
  683. package/deps/xz/src/scripts/xzgrep.in +0 -215
  684. package/deps/xz/src/scripts/xzless +0 -58
  685. package/deps/xz/src/scripts/xzless.1 +0 -69
  686. package/deps/xz/src/scripts/xzless.in +0 -58
  687. package/deps/xz/src/scripts/xzmore +0 -78
  688. package/deps/xz/src/scripts/xzmore.1 +0 -55
  689. package/deps/xz/src/scripts/xzmore.in +0 -78
  690. package/deps/xz/src/xz/.deps/xz-args.Po +0 -1
  691. package/deps/xz/src/xz/.deps/xz-coder.Po +0 -1
  692. package/deps/xz/src/xz/.deps/xz-file_io.Po +0 -1
  693. package/deps/xz/src/xz/.deps/xz-hardware.Po +0 -1
  694. package/deps/xz/src/xz/.deps/xz-list.Po +0 -1
  695. package/deps/xz/src/xz/.deps/xz-main.Po +0 -1
  696. package/deps/xz/src/xz/.deps/xz-message.Po +0 -1
  697. package/deps/xz/src/xz/.deps/xz-mytime.Po +0 -1
  698. package/deps/xz/src/xz/.deps/xz-options.Po +0 -1
  699. package/deps/xz/src/xz/.deps/xz-signals.Po +0 -1
  700. package/deps/xz/src/xz/.deps/xz-suffix.Po +0 -1
  701. package/deps/xz/src/xz/.deps/xz-tuklib_exit.Po +0 -1
  702. package/deps/xz/src/xz/.deps/xz-tuklib_mbstr_fw.Po +0 -1
  703. package/deps/xz/src/xz/.deps/xz-tuklib_mbstr_width.Po +0 -1
  704. package/deps/xz/src/xz/.deps/xz-tuklib_open_stdxxx.Po +0 -1
  705. package/deps/xz/src/xz/.deps/xz-tuklib_progname.Po +0 -1
  706. package/deps/xz/src/xz/.deps/xz-util.Po +0 -1
  707. package/deps/xz/src/xz/Makefile +0 -1066
  708. package/deps/xz/src/xz/Makefile.am +0 -107
  709. package/deps/xz/src/xz/Makefile.in +0 -1066
  710. package/deps/xz/src/xz/args.c +0 -684
  711. package/deps/xz/src/xz/args.h +0 -44
  712. package/deps/xz/src/xz/coder.c +0 -919
  713. package/deps/xz/src/xz/coder.h +0 -76
  714. package/deps/xz/src/xz/file_io.c +0 -1184
  715. package/deps/xz/src/xz/file_io.h +0 -150
  716. package/deps/xz/src/xz/hardware.c +0 -150
  717. package/deps/xz/src/xz/hardware.h +0 -37
  718. package/deps/xz/src/xz/list.c +0 -1186
  719. package/deps/xz/src/xz/list.h +0 -18
  720. package/deps/xz/src/xz/main.c +0 -307
  721. package/deps/xz/src/xz/main.h +0 -30
  722. package/deps/xz/src/xz/message.c +0 -1258
  723. package/deps/xz/src/xz/message.h +0 -167
  724. package/deps/xz/src/xz/mytime.c +0 -89
  725. package/deps/xz/src/xz/mytime.h +0 -47
  726. package/deps/xz/src/xz/options.c +0 -363
  727. package/deps/xz/src/xz/options.h +0 -31
  728. package/deps/xz/src/xz/private.h +0 -59
  729. package/deps/xz/src/xz/signals.c +0 -209
  730. package/deps/xz/src/xz/signals.h +0 -43
  731. package/deps/xz/src/xz/suffix.c +0 -399
  732. package/deps/xz/src/xz/suffix.h +0 -28
  733. package/deps/xz/src/xz/util.c +0 -288
  734. package/deps/xz/src/xz/util.h +0 -123
  735. package/deps/xz/src/xz/xz.1 +0 -2786
  736. package/deps/xz/src/xz/xz_w32res.rc +0 -12
  737. package/deps/xz/src/xzdec/.deps/lzmadec-tuklib_exit.Po +0 -1
  738. package/deps/xz/src/xzdec/.deps/lzmadec-tuklib_progname.Po +0 -1
  739. package/deps/xz/src/xzdec/.deps/lzmadec-xzdec.Po +0 -1
  740. package/deps/xz/src/xzdec/.deps/xzdec-tuklib_exit.Po +0 -1
  741. package/deps/xz/src/xzdec/.deps/xzdec-tuklib_progname.Po +0 -1
  742. package/deps/xz/src/xzdec/.deps/xzdec-xzdec.Po +0 -1
  743. package/deps/xz/src/xzdec/Makefile +0 -901
  744. package/deps/xz/src/xzdec/Makefile.am +0 -82
  745. package/deps/xz/src/xzdec/Makefile.in +0 -901
  746. package/deps/xz/src/xzdec/lzmadec_w32res.rc +0 -12
  747. package/deps/xz/src/xzdec/xzdec.1 +0 -146
  748. package/deps/xz/src/xzdec/xzdec.c +0 -323
  749. package/deps/xz/src/xzdec/xzdec_w32res.rc +0 -12
  750. package/deps/xz/stamp-h1 +0 -1
  751. package/deps/xz/tests/.deps/create_compress_files.Po +0 -1
  752. package/deps/xz/tests/.deps/test_bcj_exact_size.Po +0 -1
  753. package/deps/xz/tests/.deps/test_block_header.Po +0 -1
  754. package/deps/xz/tests/.deps/test_check.Po +0 -1
  755. package/deps/xz/tests/.deps/test_filter_flags.Po +0 -1
  756. package/deps/xz/tests/.deps/test_index.Po +0 -1
  757. package/deps/xz/tests/.deps/test_stream_flags.Po +0 -1
  758. package/deps/xz/tests/Makefile +0 -832
  759. package/deps/xz/tests/Makefile.am +0 -57
  760. package/deps/xz/tests/Makefile.in +0 -832
  761. package/deps/xz/tests/bcj_test.c +0 -65
  762. package/deps/xz/tests/compress_prepared_bcj_sparc +0 -0
  763. package/deps/xz/tests/compress_prepared_bcj_x86 +0 -0
  764. package/deps/xz/tests/create_compress_files.c +0 -158
  765. package/deps/xz/tests/files/README +0 -240
  766. package/deps/xz/tests/files/bad-0-backward_size.xz +0 -0
  767. package/deps/xz/tests/files/bad-0-empty-truncated.xz +0 -0
  768. package/deps/xz/tests/files/bad-0-footer_magic.xz +0 -0
  769. package/deps/xz/tests/files/bad-0-header_magic.xz +0 -0
  770. package/deps/xz/tests/files/bad-0-nonempty_index.xz +0 -0
  771. package/deps/xz/tests/files/bad-0cat-alone.xz +0 -0
  772. package/deps/xz/tests/files/bad-0cat-header_magic.xz +0 -0
  773. package/deps/xz/tests/files/bad-0catpad-empty.xz +0 -0
  774. package/deps/xz/tests/files/bad-0pad-empty.xz +0 -0
  775. package/deps/xz/tests/files/bad-1-block_header-1.xz +0 -0
  776. package/deps/xz/tests/files/bad-1-block_header-2.xz +0 -0
  777. package/deps/xz/tests/files/bad-1-block_header-3.xz +0 -0
  778. package/deps/xz/tests/files/bad-1-block_header-4.xz +0 -0
  779. package/deps/xz/tests/files/bad-1-block_header-5.xz +0 -0
  780. package/deps/xz/tests/files/bad-1-block_header-6.xz +0 -0
  781. package/deps/xz/tests/files/bad-1-check-crc32.xz +0 -0
  782. package/deps/xz/tests/files/bad-1-check-crc64.xz +0 -0
  783. package/deps/xz/tests/files/bad-1-check-sha256.xz +0 -0
  784. package/deps/xz/tests/files/bad-1-lzma2-1.xz +0 -0
  785. package/deps/xz/tests/files/bad-1-lzma2-2.xz +0 -0
  786. package/deps/xz/tests/files/bad-1-lzma2-3.xz +0 -0
  787. package/deps/xz/tests/files/bad-1-lzma2-4.xz +0 -0
  788. package/deps/xz/tests/files/bad-1-lzma2-5.xz +0 -0
  789. package/deps/xz/tests/files/bad-1-lzma2-6.xz +0 -0
  790. package/deps/xz/tests/files/bad-1-lzma2-7.xz +0 -0
  791. package/deps/xz/tests/files/bad-1-lzma2-8.xz +0 -0
  792. package/deps/xz/tests/files/bad-1-stream_flags-1.xz +0 -0
  793. package/deps/xz/tests/files/bad-1-stream_flags-2.xz +0 -0
  794. package/deps/xz/tests/files/bad-1-stream_flags-3.xz +0 -0
  795. package/deps/xz/tests/files/bad-1-vli-1.xz +0 -0
  796. package/deps/xz/tests/files/bad-1-vli-2.xz +0 -0
  797. package/deps/xz/tests/files/bad-2-compressed_data_padding.xz +0 -0
  798. package/deps/xz/tests/files/bad-2-index-1.xz +0 -0
  799. package/deps/xz/tests/files/bad-2-index-2.xz +0 -0
  800. package/deps/xz/tests/files/bad-2-index-3.xz +0 -0
  801. package/deps/xz/tests/files/bad-2-index-4.xz +0 -0
  802. package/deps/xz/tests/files/bad-2-index-5.xz +0 -0
  803. package/deps/xz/tests/files/good-0-empty.xz +0 -0
  804. package/deps/xz/tests/files/good-0cat-empty.xz +0 -0
  805. package/deps/xz/tests/files/good-0catpad-empty.xz +0 -0
  806. package/deps/xz/tests/files/good-0pad-empty.xz +0 -0
  807. package/deps/xz/tests/files/good-1-3delta-lzma2.xz +0 -0
  808. package/deps/xz/tests/files/good-1-block_header-1.xz +0 -0
  809. package/deps/xz/tests/files/good-1-block_header-2.xz +0 -0
  810. package/deps/xz/tests/files/good-1-block_header-3.xz +0 -0
  811. package/deps/xz/tests/files/good-1-check-crc32.xz +0 -0
  812. package/deps/xz/tests/files/good-1-check-crc64.xz +0 -0
  813. package/deps/xz/tests/files/good-1-check-none.xz +0 -0
  814. package/deps/xz/tests/files/good-1-check-sha256.xz +0 -0
  815. package/deps/xz/tests/files/good-1-delta-lzma2.tiff.xz +0 -0
  816. package/deps/xz/tests/files/good-1-lzma2-1.xz +0 -0
  817. package/deps/xz/tests/files/good-1-lzma2-2.xz +0 -0
  818. package/deps/xz/tests/files/good-1-lzma2-3.xz +0 -0
  819. package/deps/xz/tests/files/good-1-lzma2-4.xz +0 -0
  820. package/deps/xz/tests/files/good-1-lzma2-5.xz +0 -0
  821. package/deps/xz/tests/files/good-1-sparc-lzma2.xz +0 -0
  822. package/deps/xz/tests/files/good-1-x86-lzma2.xz +0 -0
  823. package/deps/xz/tests/files/good-2-lzma2.xz +0 -0
  824. package/deps/xz/tests/files/unsupported-block_header.xz +0 -0
  825. package/deps/xz/tests/files/unsupported-check.xz +0 -0
  826. package/deps/xz/tests/files/unsupported-filter_flags-1.xz +0 -0
  827. package/deps/xz/tests/files/unsupported-filter_flags-2.xz +0 -0
  828. package/deps/xz/tests/files/unsupported-filter_flags-3.xz +0 -0
  829. package/deps/xz/tests/test_bcj_exact_size.c +0 -113
  830. package/deps/xz/tests/test_block_header.c +0 -240
  831. package/deps/xz/tests/test_check.c +0 -83
  832. package/deps/xz/tests/test_compress.sh +0 -142
  833. package/deps/xz/tests/test_files.sh +0 -57
  834. package/deps/xz/tests/test_filter_flags.c +0 -258
  835. package/deps/xz/tests/test_index.c +0 -659
  836. package/deps/xz/tests/test_scripts.sh +0 -76
  837. package/deps/xz/tests/test_stream_flags.c +0 -180
  838. package/deps/xz/tests/tests.h +0 -124
  839. package/deps/xz/tests/xzgrep_expected_output +0 -39
  840. package/deps/xz/windows/INSTALL-MSVC.txt +0 -47
  841. package/deps/xz/windows/INSTALL-MinGW.txt +0 -138
  842. package/deps/xz/windows/README-Windows.txt +0 -122
  843. package/deps/xz/windows/build.bash +0 -203
  844. package/deps/xz/windows/config.h +0 -142
  845. package/deps/xz/windows/liblzma.vcxproj +0 -354
  846. package/deps/xz/windows/liblzma_dll.vcxproj +0 -383
  847. package/deps/xz/windows/xz_win.sln +0 -48
  848. package/node_modules/node-pre-gyp/CHANGELOG.md +0 -319
  849. package/node_modules/node-pre-gyp/LICENSE +0 -27
  850. package/node_modules/node-pre-gyp/README.md +0 -570
  851. package/node_modules/node-pre-gyp/appveyor.yml +0 -30
  852. package/node_modules/node-pre-gyp/bin/node-pre-gyp +0 -131
  853. package/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd +0 -2
  854. package/node_modules/node-pre-gyp/lib/build.js +0 -43
  855. package/node_modules/node-pre-gyp/lib/clean.js +0 -23
  856. package/node_modules/node-pre-gyp/lib/configure.js +0 -48
  857. package/node_modules/node-pre-gyp/lib/info.js +0 -40
  858. package/node_modules/node-pre-gyp/lib/install.js +0 -215
  859. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +0 -192
  860. package/node_modules/node-pre-gyp/lib/package.js +0 -46
  861. package/node_modules/node-pre-gyp/lib/pre-binding.js +0 -25
  862. package/node_modules/node-pre-gyp/lib/publish.js +0 -77
  863. package/node_modules/node-pre-gyp/lib/rebuild.js +0 -13
  864. package/node_modules/node-pre-gyp/lib/reinstall.js +0 -13
  865. package/node_modules/node-pre-gyp/lib/reveal.js +0 -31
  866. package/node_modules/node-pre-gyp/lib/testbinary.js +0 -73
  867. package/node_modules/node-pre-gyp/lib/testpackage.js +0 -49
  868. package/node_modules/node-pre-gyp/lib/unpublish.js +0 -41
  869. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +0 -1222
  870. package/node_modules/node-pre-gyp/lib/util/compile.js +0 -87
  871. package/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js +0 -94
  872. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html +0 -26
  873. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json +0 -9
  874. package/node_modules/node-pre-gyp/lib/util/s3_setup.js +0 -27
  875. package/node_modules/node-pre-gyp/lib/util/versioning.js +0 -308
  876. package/node_modules/node-pre-gyp/package.json +0 -136
  877. package/src/bindings/module.cpp +0 -107
  878. package/src/bindings/node-liblzma.cpp +0 -320
  879. package/src/bindings/node-liblzma.hpp +0 -115
  880. package/src/lzma.coffee +0 -339
@@ -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
- }