libarchive-static 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/ext/extconf.rb +2 -9
  3. data/ext/libarchive-0.1.1/ext/archive_read_support_compression.c +6 -6
  4. data/ext/libarchive-0.1.1/ext/archive_read_support_compression.o +0 -0
  5. data/ext/libarchive-0.1.1/ext/archive_read_support_format.o +0 -0
  6. data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.c +1 -1
  7. data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.o +0 -0
  8. data/ext/libarchive-0.1.1/ext/archive_write_set_compression.c +5 -5
  9. data/ext/libarchive-0.1.1/ext/archive_write_set_compression.o +0 -0
  10. data/ext/libarchive-0.1.1/ext/config.h +23 -0
  11. data/ext/libarchive-0.1.1/ext/config.log +230 -0
  12. data/ext/libarchive-0.1.1/ext/config.status +671 -0
  13. data/ext/libarchive-0.1.1/ext/libarchive.c +1 -1
  14. data/ext/libarchive-0.1.1/ext/libarchive.o +0 -0
  15. data/ext/libarchive-0.1.1/ext/libarchive_archive.c +7 -7
  16. data/ext/libarchive-0.1.1/ext/libarchive_archive.o +0 -0
  17. data/ext/libarchive-0.1.1/ext/libarchive_entry.c +6 -0
  18. data/ext/libarchive-0.1.1/ext/libarchive_entry.o +0 -0
  19. data/ext/libarchive-0.1.1/ext/libarchive_reader.c +6 -4
  20. data/ext/libarchive-0.1.1/ext/libarchive_reader.o +0 -0
  21. data/ext/libarchive-0.1.1/ext/libarchive_ruby.so +0 -0
  22. data/ext/libarchive-0.1.1/ext/libarchive_win32.h +1 -1
  23. data/ext/libarchive-0.1.1/ext/libarchive_writer.c +2 -2
  24. data/ext/libarchive-0.1.1/ext/libarchive_writer.o +0 -0
  25. data/ext/libarchive-3.6.2/Makefile.in +16892 -0
  26. data/ext/libarchive-3.6.2/build/autoconf/ax_append_compile_flags.m4 +67 -0
  27. data/ext/libarchive-3.6.2/build/autoconf/ax_append_flag.m4 +71 -0
  28. data/ext/libarchive-3.6.2/build/autoconf/ax_check_compile_flag.m4 +74 -0
  29. data/ext/libarchive-3.6.2/build/autoconf/ax_require_defined.m4 +37 -0
  30. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/check_stdcall_func.m4 +0 -0
  31. data/ext/libarchive-3.6.2/build/autoconf/compile +348 -0
  32. data/ext/libarchive-3.6.2/build/autoconf/config.guess +1754 -0
  33. data/ext/libarchive-3.6.2/build/autoconf/config.rpath +696 -0
  34. data/ext/libarchive-3.6.2/build/autoconf/config.sub +1890 -0
  35. data/ext/libarchive-3.6.2/build/autoconf/depcomp +791 -0
  36. data/ext/libarchive-3.6.2/build/autoconf/iconv.m4 +271 -0
  37. data/ext/libarchive-3.6.2/build/autoconf/install-sh +541 -0
  38. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/la_uid_t.m4 +0 -0
  39. data/ext/libarchive-3.6.2/build/autoconf/lib-ld.m4 +109 -0
  40. data/ext/libarchive-3.6.2/build/autoconf/lib-link.m4 +777 -0
  41. data/ext/libarchive-3.6.2/build/autoconf/lib-prefix.m4 +224 -0
  42. data/ext/libarchive-3.6.2/build/autoconf/ltmain.sh +11251 -0
  43. data/ext/libarchive-3.6.2/build/autoconf/m4_ax_compile_check_sizeof.m4 +115 -0
  44. data/ext/libarchive-3.6.2/build/autoconf/missing +215 -0
  45. data/ext/libarchive-3.6.2/build/autoconf/test-driver +153 -0
  46. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/pkgconfig/libarchive.pc.in +4 -1
  47. data/ext/libarchive-3.6.2/config.h.in +1504 -0
  48. data/ext/libarchive-3.6.2/configure +25558 -0
  49. data/ext/libarchive-3.6.2/libarchive/archive.h +1212 -0
  50. data/ext/libarchive-3.6.2/libarchive/archive_acl.c +2097 -0
  51. data/ext/libarchive-3.6.2/libarchive/archive_acl_private.h +83 -0
  52. data/ext/libarchive-3.6.2/libarchive/archive_blake2.h +197 -0
  53. data/ext/libarchive-3.6.2/libarchive/archive_blake2_impl.h +161 -0
  54. data/ext/libarchive-3.6.2/libarchive/archive_blake2s_ref.c +369 -0
  55. data/ext/libarchive-3.6.2/libarchive/archive_blake2sp_ref.c +361 -0
  56. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_check_magic.c +63 -22
  57. data/ext/libarchive-3.6.2/libarchive/archive_cmdline.c +227 -0
  58. data/ext/libarchive-3.6.2/libarchive/archive_cmdline_private.h +47 -0
  59. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_crc32.h +17 -0
  60. data/ext/libarchive-3.6.2/libarchive/archive_cryptor.c +534 -0
  61. data/ext/libarchive-3.6.2/libarchive/archive_cryptor_private.h +188 -0
  62. data/ext/libarchive-3.6.2/libarchive/archive_digest.c +1505 -0
  63. data/ext/libarchive-3.6.2/libarchive/archive_digest_private.h +416 -0
  64. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_darwin.c +559 -0
  65. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_freebsd.c +712 -0
  66. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_linux.c +760 -0
  67. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_sunos.c +824 -0
  68. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_endian.h +48 -15
  69. data/ext/libarchive-3.6.2/libarchive/archive_entry.c +2149 -0
  70. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry.h +305 -106
  71. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_bhfi.c +5 -4
  72. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_stat.c +9 -3
  73. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_link_resolver.c +104 -62
  74. data/ext/libarchive-3.6.2/libarchive/archive_entry_locale.h +92 -0
  75. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_private.h +65 -49
  76. data/ext/libarchive-3.6.2/libarchive/archive_entry_sparse.c +156 -0
  77. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_stat.c +6 -6
  78. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_strmode.c +1 -1
  79. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_xattr.c +4 -6
  80. data/ext/libarchive-3.6.2/libarchive/archive_getdate.c +1165 -0
  81. data/ext/libarchive-3.6.2/libarchive/archive_getdate.h +39 -0
  82. data/ext/libarchive-3.6.2/libarchive/archive_hmac.c +334 -0
  83. data/ext/libarchive-3.6.2/libarchive/archive_hmac_private.h +117 -0
  84. data/ext/libarchive-3.6.2/libarchive/archive_match.c +1875 -0
  85. data/ext/libarchive-3.6.2/libarchive/archive_openssl_evp_private.h +53 -0
  86. data/ext/libarchive-3.6.2/libarchive/archive_openssl_hmac_private.h +54 -0
  87. data/ext/libarchive-3.6.2/libarchive/archive_options.c +218 -0
  88. data/ext/libarchive-3.6.2/libarchive/archive_options_private.h +51 -0
  89. data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.c +337 -0
  90. data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.h +49 -0
  91. data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.c +463 -0
  92. data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.h +52 -0
  93. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_platform.h +77 -9
  94. data/ext/libarchive-3.6.2/libarchive/archive_platform_acl.h +55 -0
  95. data/ext/libarchive-3.6.2/libarchive/archive_platform_xattr.h +47 -0
  96. data/ext/libarchive-3.6.2/libarchive/archive_ppmd7.c +1168 -0
  97. data/ext/libarchive-3.6.2/libarchive/archive_ppmd7_private.h +119 -0
  98. data/ext/libarchive-3.6.2/libarchive/archive_ppmd8.c +1287 -0
  99. data/ext/libarchive-3.6.2/libarchive/archive_ppmd8_private.h +148 -0
  100. data/ext/libarchive-3.6.2/libarchive/archive_ppmd_private.h +151 -0
  101. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_private.h +74 -18
  102. data/ext/libarchive-3.6.2/libarchive/archive_random.c +272 -0
  103. data/ext/libarchive-3.6.2/libarchive/archive_random_private.h +36 -0
  104. data/ext/libarchive-3.6.2/libarchive/archive_rb.c +709 -0
  105. data/ext/libarchive-3.6.2/libarchive/archive_rb.h +113 -0
  106. data/ext/libarchive-3.6.2/libarchive/archive_read.c +1756 -0
  107. data/ext/libarchive-3.6.2/libarchive/archive_read_add_passphrase.c +190 -0
  108. data/ext/libarchive-3.6.2/libarchive/archive_read_append_filter.c +204 -0
  109. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_data_into_fd.c +64 -18
  110. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_entry_from_file.c +1086 -0
  111. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_posix.c +2732 -0
  112. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_private.h +40 -4
  113. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_set_standard_lookup.c +21 -11
  114. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_windows.c +2479 -0
  115. data/ext/libarchive-3.6.2/libarchive/archive_read_extract.c +60 -0
  116. data/ext/{libarchive-2.8.4/libarchive/archive_read_extract.c → libarchive-3.6.2/libarchive/archive_read_extract2.c} +34 -61
  117. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_fd.c +70 -49
  118. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_file.c +38 -23
  119. data/ext/libarchive-3.6.2/libarchive/archive_read_open_filename.c +586 -0
  120. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_memory.c +58 -28
  121. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_private.h +127 -59
  122. data/ext/libarchive-3.6.2/libarchive/archive_read_set_format.c +117 -0
  123. data/ext/libarchive-3.6.2/libarchive/archive_read_set_options.c +133 -0
  124. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_all.c → libarchive-3.6.2/libarchive/archive_read_support_filter_all.c} +35 -10
  125. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_by_code.c +83 -0
  126. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_bzip2.c → libarchive-3.6.2/libarchive/archive_read_support_filter_bzip2.c} +38 -26
  127. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_compress.c → libarchive-3.6.2/libarchive/archive_read_support_filter_compress.c} +52 -44
  128. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_grzip.c +112 -0
  129. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_gzip.c → libarchive-3.6.2/libarchive/archive_read_support_filter_gzip.c} +108 -37
  130. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lrzip.c +122 -0
  131. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lz4.c +742 -0
  132. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lzop.c +499 -0
  133. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_none.c → libarchive-3.6.2/libarchive/archive_read_support_filter_none.c} +15 -3
  134. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_program.c → libarchive-3.6.2/libarchive/archive_read_support_filter_program.c} +114 -77
  135. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_rpm.c → libarchive-3.6.2/libarchive/archive_read_support_filter_rpm.c} +31 -31
  136. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_uu.c → libarchive-3.6.2/libarchive/archive_read_support_filter_uu.c} +141 -85
  137. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_compression_xz.c → libarchive-3.6.2/libarchive/archive_read_support_filter_xz.c} +369 -284
  138. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_zstd.c +297 -0
  139. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_7zip.c +3900 -0
  140. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_all.c +89 -0
  141. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_ar.c +126 -72
  142. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_by_code.c +92 -0
  143. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cab.c +3228 -0
  144. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cpio.c +1104 -0
  145. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_empty.c +14 -11
  146. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_iso9660.c +990 -541
  147. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_lha.c +2916 -0
  148. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_mtree.c +2150 -0
  149. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar.c +3797 -0
  150. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar5.c +4251 -0
  151. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_raw.c +38 -31
  152. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_tar.c +1157 -629
  153. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_warc.c +848 -0
  154. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_xar.c +439 -258
  155. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_zip.c +4270 -0
  156. data/ext/libarchive-3.6.2/libarchive/archive_string.c +4240 -0
  157. data/ext/libarchive-3.6.2/libarchive/archive_string.h +243 -0
  158. data/ext/libarchive-3.6.2/libarchive/archive_string_composition.h +2292 -0
  159. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_string_sprintf.c +44 -16
  160. data/ext/libarchive-3.6.2/libarchive/archive_util.c +655 -0
  161. data/ext/libarchive-3.6.2/libarchive/archive_version_details.c +151 -0
  162. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_virtual.c +85 -16
  163. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.c +214 -541
  164. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.h +74 -106
  165. data/ext/libarchive-3.6.2/libarchive/archive_write.c +828 -0
  166. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter.c +72 -0
  167. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_b64encode.c +304 -0
  168. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_by_name.c +77 -0
  169. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_bzip2.c +401 -0
  170. data/ext/{libarchive-2.8.4/libarchive/archive_write_set_compression_compress.c → libarchive-3.6.2/libarchive/archive_write_add_filter_compress.c} +86 -131
  171. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_grzip.c +135 -0
  172. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_gzip.c +442 -0
  173. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lrzip.c +197 -0
  174. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lz4.c +700 -0
  175. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lzop.c +478 -0
  176. data/ext/{libarchive-2.8.4/libarchive/archive_read_support_format_all.c → libarchive-3.6.2/libarchive/archive_write_add_filter_none.c} +11 -11
  177. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_program.c +391 -0
  178. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_uuencode.c +295 -0
  179. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_xz.c +545 -0
  180. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_zstd.c +418 -0
  181. data/ext/libarchive-3.6.2/libarchive/archive_write_disk_posix.c +4711 -0
  182. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_private.h +9 -2
  183. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_set_standard_lookup.c +30 -29
  184. data/ext/libarchive-3.6.2/libarchive/archive_write_disk_windows.c +2842 -0
  185. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_fd.c +15 -10
  186. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_file.c +15 -9
  187. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_filename.c +128 -20
  188. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_memory.c +7 -18
  189. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_private.h +72 -29
  190. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format.c +56 -3
  191. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_7zip.c +2322 -0
  192. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ar.c +54 -34
  193. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_by_name.c +20 -2
  194. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio.c +11 -0
  195. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_binary.c +610 -0
  196. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_newc.c +457 -0
  197. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_odc.c +500 -0
  198. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_filter_by_ext.c +142 -0
  199. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_gnutar.c +755 -0
  200. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_iso9660.c +8165 -0
  201. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_mtree.c +2217 -0
  202. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_pax.c +1049 -387
  203. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_private.h +42 -0
  204. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_raw.c +125 -0
  205. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_shar.c +62 -47
  206. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ustar.c +279 -108
  207. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_v7tar.c +638 -0
  208. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_warc.c +453 -0
  209. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_xar.c +3259 -0
  210. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_zip.c +1704 -0
  211. data/ext/libarchive-3.6.2/libarchive/archive_write_set_options.c +130 -0
  212. data/ext/libarchive-3.6.2/libarchive/archive_write_set_passphrase.c +95 -0
  213. data/ext/libarchive-3.6.2/libarchive/archive_xxhash.h +48 -0
  214. data/ext/libarchive-3.6.2/libarchive/config_freebsd.h +271 -0
  215. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/filter_fork.h +10 -5
  216. data/ext/{libarchive-2.8.4/libarchive/filter_fork.c → libarchive-3.6.2/libarchive/filter_fork_posix.c} +98 -19
  217. data/ext/libarchive-3.6.2/libarchive/filter_fork_windows.c +236 -0
  218. data/ext/libarchive-3.6.2/libarchive/xxhash.c +525 -0
  219. data/ext/libarchive-static-makefile +144 -80
  220. data/ext/libarchive-static-wrapper-makefile +1 -1
  221. data/ext/zlib-1.2.13/Makefile.in +404 -0
  222. data/ext/{zlib-1.2.5 → zlib-1.2.13}/adler32.c +51 -34
  223. data/ext/{zlib-1.2.5 → zlib-1.2.13}/compress.c +27 -21
  224. data/ext/zlib-1.2.13/configure +922 -0
  225. data/ext/zlib-1.2.13/crc32.c +1125 -0
  226. data/ext/zlib-1.2.13/crc32.h +9446 -0
  227. data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.c +842 -459
  228. data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.h +37 -33
  229. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzclose.c +0 -0
  230. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzguts.h +103 -16
  231. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzlib.c +155 -53
  232. data/ext/zlib-1.2.13/gzread.c +650 -0
  233. data/ext/zlib-1.2.13/gzwrite.c +677 -0
  234. data/ext/{zlib-1.2.5 → zlib-1.2.13}/infback.c +24 -12
  235. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.c +49 -66
  236. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.h +0 -0
  237. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffixed.h +3 -3
  238. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.c +209 -94
  239. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.h +9 -5
  240. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.c +24 -50
  241. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.h +1 -1
  242. data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.c +135 -198
  243. data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.h +0 -0
  244. data/ext/zlib-1.2.13/uncompr.c +93 -0
  245. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zconf.h +182 -63
  246. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zlib.h +617 -295
  247. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.c +50 -41
  248. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.h +83 -82
  249. metadata +241 -133
  250. data/ext/libarchive-0.1.1/libarchive.c +0 -1762
  251. data/ext/libarchive-2.8.4/Makefile.in +0 -7076
  252. data/ext/libarchive-2.8.4/build/autoconf/compile +0 -143
  253. data/ext/libarchive-2.8.4/build/autoconf/config.guess +0 -1502
  254. data/ext/libarchive-2.8.4/build/autoconf/config.sub +0 -1708
  255. data/ext/libarchive-2.8.4/build/autoconf/depcomp +0 -630
  256. data/ext/libarchive-2.8.4/build/autoconf/install-sh +0 -291
  257. data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +0 -8406
  258. data/ext/libarchive-2.8.4/build/autoconf/missing +0 -376
  259. data/ext/libarchive-2.8.4/config.h.in +0 -772
  260. data/ext/libarchive-2.8.4/configure +0 -17916
  261. data/ext/libarchive-2.8.4/libarchive/archive.h +0 -741
  262. data/ext/libarchive-2.8.4/libarchive/archive_entry.c +0 -2202
  263. data/ext/libarchive-2.8.4/libarchive/archive_hash.h +0 -281
  264. data/ext/libarchive-2.8.4/libarchive/archive_read.c +0 -1249
  265. data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +0 -198
  266. data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +0 -570
  267. data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +0 -272
  268. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +0 -777
  269. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +0 -1304
  270. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +0 -903
  271. data/ext/libarchive-2.8.4/libarchive/archive_string.c +0 -453
  272. data/ext/libarchive-2.8.4/libarchive/archive_string.h +0 -148
  273. data/ext/libarchive-2.8.4/libarchive/archive_util.c +0 -391
  274. data/ext/libarchive-2.8.4/libarchive/archive_write.c +0 -466
  275. data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +0 -2628
  276. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +0 -408
  277. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +0 -477
  278. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +0 -257
  279. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +0 -347
  280. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +0 -438
  281. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +0 -344
  282. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +0 -295
  283. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +0 -1050
  284. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +0 -667
  285. data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +0 -154
  286. data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +0 -113
  287. data/ext/zlib-1.2.5/Makefile.in +0 -257
  288. data/ext/zlib-1.2.5/configure +0 -596
  289. data/ext/zlib-1.2.5/crc32.c +0 -442
  290. data/ext/zlib-1.2.5/crc32.h +0 -441
  291. data/ext/zlib-1.2.5/example.c +0 -565
  292. data/ext/zlib-1.2.5/gzread.c +0 -653
  293. data/ext/zlib-1.2.5/gzwrite.c +0 -531
  294. data/ext/zlib-1.2.5/minigzip.c +0 -440
  295. data/ext/zlib-1.2.5/uncompr.c +0 -59
@@ -88,7 +88,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_compress.c
88
88
  #define CLEAR 256 /* Table clear output code. */
89
89
 
90
90
  struct private_data {
91
- off_t in_count, out_count, checkpoint;
91
+ int64_t in_count, out_count, checkpoint;
92
92
 
93
93
  int code_len; /* Number of bits/code. */
94
94
  int cur_maxcode; /* Maximum code, given n_bits. */
@@ -108,23 +108,35 @@ struct private_data {
108
108
  size_t compressed_offset;
109
109
  };
110
110
 
111
- static int archive_compressor_compress_finish(struct archive_write *);
112
- static int archive_compressor_compress_init(struct archive_write *);
113
- static int archive_compressor_compress_write(struct archive_write *,
111
+ static int archive_compressor_compress_open(struct archive_write_filter *);
112
+ static int archive_compressor_compress_write(struct archive_write_filter *,
114
113
  const void *, size_t);
114
+ static int archive_compressor_compress_close(struct archive_write_filter *);
115
+ static int archive_compressor_compress_free(struct archive_write_filter *);
116
+
117
+ #if ARCHIVE_VERSION_NUMBER < 4000000
118
+ int
119
+ archive_write_set_compression_compress(struct archive *a)
120
+ {
121
+ __archive_write_filters_free(a);
122
+ return (archive_write_add_filter_compress(a));
123
+ }
124
+ #endif
115
125
 
116
126
  /*
117
- * Allocate, initialize and return a archive object.
127
+ * Add a compress filter to this write handle.
118
128
  */
119
129
  int
120
- archive_write_set_compression_compress(struct archive *_a)
130
+ archive_write_add_filter_compress(struct archive *_a)
121
131
  {
122
132
  struct archive_write *a = (struct archive_write *)_a;
123
- __archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
124
- ARCHIVE_STATE_NEW, "archive_write_set_compression_compress");
125
- a->compressor.init = &archive_compressor_compress_init;
126
- a->archive.compression_code = ARCHIVE_COMPRESSION_COMPRESS;
127
- a->archive.compression_name = "compress";
133
+ struct archive_write_filter *f = __archive_write_allocate_filter(_a);
134
+
135
+ archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
136
+ ARCHIVE_STATE_NEW, "archive_write_add_filter_compress");
137
+ f->open = &archive_compressor_compress_open;
138
+ f->code = ARCHIVE_FILTER_COMPRESS;
139
+ f->name = "compress";
128
140
  return (ARCHIVE_OK);
129
141
  }
130
142
 
@@ -132,46 +144,43 @@ archive_write_set_compression_compress(struct archive *_a)
132
144
  * Setup callback.
133
145
  */
134
146
  static int
135
- archive_compressor_compress_init(struct archive_write *a)
147
+ archive_compressor_compress_open(struct archive_write_filter *f)
136
148
  {
137
- int ret;
138
149
  struct private_data *state;
150
+ size_t bs = 65536, bpb;
139
151
 
140
- a->archive.compression_code = ARCHIVE_COMPRESSION_COMPRESS;
141
- a->archive.compression_name = "compress";
152
+ f->code = ARCHIVE_FILTER_COMPRESS;
153
+ f->name = "compress";
142
154
 
143
- if (a->bytes_per_block < 4) {
144
- archive_set_error(&a->archive, EINVAL,
145
- "Can't write Compress header as single block");
146
- return (ARCHIVE_FATAL);
147
- }
148
-
149
- if (a->client_opener != NULL) {
150
- ret = (a->client_opener)(&a->archive, a->client_data);
151
- if (ret != ARCHIVE_OK)
152
- return (ret);
153
- }
154
-
155
- state = (struct private_data *)malloc(sizeof(*state));
155
+ state = (struct private_data *)calloc(1, sizeof(*state));
156
156
  if (state == NULL) {
157
- archive_set_error(&a->archive, ENOMEM,
157
+ archive_set_error(f->archive, ENOMEM,
158
158
  "Can't allocate data for compression");
159
159
  return (ARCHIVE_FATAL);
160
160
  }
161
- memset(state, 0, sizeof(*state));
162
161
 
163
- state->compressed_buffer_size = a->bytes_per_block;
162
+ if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
163
+ /* Buffer size should be a multiple number of the of bytes
164
+ * per block for performance. */
165
+ bpb = archive_write_get_bytes_per_block(f->archive);
166
+ if (bpb > bs)
167
+ bs = bpb;
168
+ else if (bpb != 0)
169
+ bs -= bs % bpb;
170
+ }
171
+ state->compressed_buffer_size = bs;
164
172
  state->compressed = malloc(state->compressed_buffer_size);
165
173
 
166
174
  if (state->compressed == NULL) {
167
- archive_set_error(&a->archive, ENOMEM,
175
+ archive_set_error(f->archive, ENOMEM,
168
176
  "Can't allocate data for compression buffer");
169
177
  free(state);
170
178
  return (ARCHIVE_FATAL);
171
179
  }
172
180
 
173
- a->compressor.write = archive_compressor_compress_write;
174
- a->compressor.finish = archive_compressor_compress_finish;
181
+ f->write = archive_compressor_compress_write;
182
+ f->close = archive_compressor_compress_close;
183
+ f->free = archive_compressor_compress_free;
175
184
 
176
185
  state->max_maxcode = 0x10000; /* Should NEVER generate this code. */
177
186
  state->in_count = 0; /* Length of input. */
@@ -192,7 +201,7 @@ archive_compressor_compress_init(struct archive_write *a)
192
201
  state->compressed[2] = 0x90; /* Block mode, 16bit max */
193
202
  state->compressed_offset = 3;
194
203
 
195
- a->compressor.data = state;
204
+ f->data = state;
196
205
  return (0);
197
206
  }
198
207
 
@@ -200,7 +209,7 @@ archive_compressor_compress_init(struct archive_write *a)
200
209
  * Output the given code.
201
210
  * Inputs:
202
211
  * code: A n_bits-bit integer. If == -1, then EOF. This assumes
203
- * that n_bits =< (long)wordsize - 1.
212
+ * that n_bits <= (long)wordsize - 1.
204
213
  * Outputs:
205
214
  * Outputs code to the file.
206
215
  * Assumptions:
@@ -211,25 +220,22 @@ archive_compressor_compress_init(struct archive_write *a)
211
220
  * code in turn. When the buffer fills up empty it and start over.
212
221
  */
213
222
 
214
- static unsigned char rmask[9] =
223
+ static const unsigned char rmask[9] =
215
224
  {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
216
225
 
217
226
  static int
218
- output_byte(struct archive_write *a, unsigned char c)
227
+ output_byte(struct archive_write_filter *f, unsigned char c)
219
228
  {
220
- struct private_data *state = a->compressor.data;
221
- ssize_t bytes_written;
229
+ struct private_data *state = f->data;
222
230
 
223
231
  state->compressed[state->compressed_offset++] = c;
224
232
  ++state->out_count;
225
233
 
226
234
  if (state->compressed_buffer_size == state->compressed_offset) {
227
- bytes_written = (a->client_writer)(&a->archive,
228
- a->client_data,
235
+ int ret = __archive_write_filter(f->next_filter,
229
236
  state->compressed, state->compressed_buffer_size);
230
- if (bytes_written <= 0)
237
+ if (ret != ARCHIVE_OK)
231
238
  return ARCHIVE_FATAL;
232
- a->archive.raw_position += bytes_written;
233
239
  state->compressed_offset = 0;
234
240
  }
235
241
 
@@ -237,9 +243,9 @@ output_byte(struct archive_write *a, unsigned char c)
237
243
  }
238
244
 
239
245
  static int
240
- output_code(struct archive_write *a, int ocode)
246
+ output_code(struct archive_write_filter *f, int ocode)
241
247
  {
242
- struct private_data *state = a->compressor.data;
248
+ struct private_data *state = f->data;
243
249
  int bits, ret, clear_flg, bit_offset;
244
250
 
245
251
  clear_flg = ocode == CLEAR;
@@ -250,13 +256,13 @@ output_code(struct archive_write *a, int ocode)
250
256
  */
251
257
  bit_offset = state->bit_offset % 8;
252
258
  state->bit_buf |= (ocode << bit_offset) & 0xff;
253
- output_byte(a, state->bit_buf);
259
+ output_byte(f, state->bit_buf);
254
260
 
255
261
  bits = state->code_len - (8 - bit_offset);
256
262
  ocode >>= 8 - bit_offset;
257
263
  /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */
258
264
  if (bits >= 8) {
259
- output_byte(a, ocode & 0xff);
265
+ output_byte(f, ocode & 0xff);
260
266
  ocode >>= 8;
261
267
  bits -= 8;
262
268
  }
@@ -277,7 +283,7 @@ output_code(struct archive_write *a, int ocode)
277
283
  */
278
284
  if (state->bit_offset > 0) {
279
285
  while (state->bit_offset < state->code_len * 8) {
280
- ret = output_byte(a, state->bit_buf);
286
+ ret = output_byte(f, state->bit_buf);
281
287
  if (ret != ARCHIVE_OK)
282
288
  return ret;
283
289
  state->bit_offset += 8;
@@ -303,15 +309,15 @@ output_code(struct archive_write *a, int ocode)
303
309
  }
304
310
 
305
311
  static int
306
- output_flush(struct archive_write *a)
312
+ output_flush(struct archive_write_filter *f)
307
313
  {
308
- struct private_data *state = a->compressor.data;
314
+ struct private_data *state = f->data;
309
315
  int ret;
310
316
 
311
317
  /* At EOF, write the rest of the buffer. */
312
318
  if (state->bit_offset % 8) {
313
319
  state->code_len = (state->bit_offset % 8 + 7) / 8;
314
- ret = output_byte(a, state->bit_buf);
320
+ ret = output_byte(f, state->bit_buf);
315
321
  if (ret != ARCHIVE_OK)
316
322
  return ret;
317
323
  }
@@ -323,23 +329,15 @@ output_flush(struct archive_write *a)
323
329
  * Write data to the compressed stream.
324
330
  */
325
331
  static int
326
- archive_compressor_compress_write(struct archive_write *a, const void *buff,
327
- size_t length)
332
+ archive_compressor_compress_write(struct archive_write_filter *f,
333
+ const void *buff, size_t length)
328
334
  {
329
- struct private_data *state;
335
+ struct private_data *state = (struct private_data *)f->data;
330
336
  int i;
331
337
  int ratio;
332
338
  int c, disp, ret;
333
339
  const unsigned char *bp;
334
340
 
335
- state = (struct private_data *)a->compressor.data;
336
- if (a->client_writer == NULL) {
337
- archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
338
- "No write callback is registered? "
339
- "This is probably an internal programming error.");
340
- return (ARCHIVE_FATAL);
341
- }
342
-
343
341
  if (length == 0)
344
342
  return ARCHIVE_OK;
345
343
 
@@ -368,7 +366,7 @@ archive_compressor_compress_write(struct archive_write *a, const void *buff,
368
366
  disp = 1;
369
367
  else
370
368
  disp = HSIZE - i;
371
- probe:
369
+ probe:
372
370
  if ((i -= disp) < 0)
373
371
  i += HSIZE;
374
372
 
@@ -378,8 +376,8 @@ archive_compressor_compress_write(struct archive_write *a, const void *buff,
378
376
  }
379
377
  if (state->hashtab[i] >= 0)
380
378
  goto probe;
381
- nomatch:
382
- ret = output_code(a, state->cur_code);
379
+ nomatch:
380
+ ret = output_code(f, state->cur_code);
383
381
  if (ret != ARCHIVE_OK)
384
382
  return ret;
385
383
  state->cur_code = c;
@@ -393,12 +391,12 @@ archive_compressor_compress_write(struct archive_write *a, const void *buff,
393
391
 
394
392
  state->checkpoint = state->in_count + CHECK_GAP;
395
393
 
396
- if (state->in_count <= 0x007fffff)
397
- ratio = state->in_count * 256 / state->out_count;
398
- else if ((ratio = state->out_count / 256) == 0)
394
+ if (state->in_count <= 0x007fffff && state->out_count != 0)
395
+ ratio = (int)(state->in_count * 256 / state->out_count);
396
+ else if ((ratio = (int)(state->out_count / 256)) == 0)
399
397
  ratio = 0x7fffffff;
400
398
  else
401
- ratio = state->in_count / ratio;
399
+ ratio = (int)(state->in_count / ratio);
402
400
 
403
401
  if (ratio > state->compress_ratio)
404
402
  state->compress_ratio = ratio;
@@ -406,7 +404,7 @@ archive_compressor_compress_write(struct archive_write *a, const void *buff,
406
404
  state->compress_ratio = 0;
407
405
  memset(state->hashtab, 0xff, sizeof(state->hashtab));
408
406
  state->first_free = FIRST;
409
- ret = output_code(a, CLEAR);
407
+ ret = output_code(f, CLEAR);
410
408
  if (ret != ARCHIVE_OK)
411
409
  return ret;
412
410
  }
@@ -420,73 +418,30 @@ archive_compressor_compress_write(struct archive_write *a, const void *buff,
420
418
  * Finish the compression...
421
419
  */
422
420
  static int
423
- archive_compressor_compress_finish(struct archive_write *a)
421
+ archive_compressor_compress_close(struct archive_write_filter *f)
424
422
  {
425
- ssize_t block_length, target_block_length, bytes_written;
423
+ struct private_data *state = (struct private_data *)f->data;
426
424
  int ret;
427
- struct private_data *state;
428
- size_t tocopy;
429
-
430
- state = (struct private_data *)a->compressor.data;
431
- if (a->client_writer == NULL) {
432
- archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
433
- "No write callback is registered? "
434
- "This is probably an internal programming error.");
435
- ret = ARCHIVE_FATAL;
436
- goto cleanup;
437
- }
438
425
 
439
- /* By default, always pad the uncompressed data. */
440
- if (a->pad_uncompressed) {
441
- while (state->in_count % a->bytes_per_block != 0) {
442
- tocopy = a->bytes_per_block -
443
- (state->in_count % a->bytes_per_block);
444
- if (tocopy > a->null_length)
445
- tocopy = a->null_length;
446
- ret = archive_compressor_compress_write(a, a->nulls,
447
- tocopy);
448
- if (ret != ARCHIVE_OK)
449
- goto cleanup;
450
- }
451
- }
452
-
453
- ret = output_code(a, state->cur_code);
426
+ ret = output_code(f, state->cur_code);
454
427
  if (ret != ARCHIVE_OK)
455
- goto cleanup;
456
- ret = output_flush(a);
428
+ return ret;
429
+ ret = output_flush(f);
457
430
  if (ret != ARCHIVE_OK)
458
- goto cleanup;
459
-
460
- /* Optionally, pad the final compressed block. */
461
- block_length = state->compressed_offset;
462
-
463
- /* Tricky calculation to determine size of last block. */
464
- if (a->bytes_in_last_block <= 0)
465
- /* Default or Zero: pad to full block */
466
- target_block_length = a->bytes_per_block;
467
- else
468
- /* Round length to next multiple of bytes_in_last_block. */
469
- target_block_length = a->bytes_in_last_block *
470
- ( (block_length + a->bytes_in_last_block - 1) /
471
- a->bytes_in_last_block);
472
- if (target_block_length > a->bytes_per_block)
473
- target_block_length = a->bytes_per_block;
474
- if (block_length < target_block_length) {
475
- memset(state->compressed + state->compressed_offset, 0,
476
- target_block_length - block_length);
477
- block_length = target_block_length;
478
- }
431
+ return ret;
479
432
 
480
433
  /* Write the last block */
481
- bytes_written = (a->client_writer)(&a->archive, a->client_data,
482
- state->compressed, block_length);
483
- if (bytes_written <= 0)
484
- ret = ARCHIVE_FATAL;
485
- else
486
- a->archive.raw_position += bytes_written;
487
-
488
- cleanup:
434
+ ret = __archive_write_filter(f->next_filter,
435
+ state->compressed, state->compressed_offset);
436
+ return (ret);
437
+ }
438
+
439
+ static int
440
+ archive_compressor_compress_free(struct archive_write_filter *f)
441
+ {
442
+ struct private_data *state = (struct private_data *)f->data;
443
+
489
444
  free(state->compressed);
490
445
  free(state);
491
- return (ret);
446
+ return (ARCHIVE_OK);
492
447
  }
@@ -0,0 +1,135 @@
1
+ /*-
2
+ * Copyright (c) 2003-2007 Tim Kientzle
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ *
14
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
15
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
18
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
+ */
25
+
26
+ #include "archive_platform.h"
27
+
28
+ __FBSDID("$FreeBSD$");
29
+
30
+ #ifdef HAVE_ERRNO_H
31
+ #include <errno.h>
32
+ #endif
33
+ #ifdef HAVE_STDLIB_H
34
+ #include <stdlib.h>
35
+ #endif
36
+
37
+ #include "archive.h"
38
+ #include "archive_write_private.h"
39
+
40
+ struct write_grzip {
41
+ struct archive_write_program_data *pdata;
42
+ };
43
+
44
+ static int archive_write_grzip_open(struct archive_write_filter *);
45
+ static int archive_write_grzip_options(struct archive_write_filter *,
46
+ const char *, const char *);
47
+ static int archive_write_grzip_write(struct archive_write_filter *,
48
+ const void *, size_t);
49
+ static int archive_write_grzip_close(struct archive_write_filter *);
50
+ static int archive_write_grzip_free(struct archive_write_filter *);
51
+
52
+ int
53
+ archive_write_add_filter_grzip(struct archive *_a)
54
+ {
55
+ struct archive_write_filter *f = __archive_write_allocate_filter(_a);
56
+ struct write_grzip *data;
57
+
58
+ archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
59
+ ARCHIVE_STATE_NEW, "archive_write_add_filter_grzip");
60
+
61
+ data = calloc(1, sizeof(*data));
62
+ if (data == NULL) {
63
+ archive_set_error(_a, ENOMEM, "Can't allocate memory");
64
+ return (ARCHIVE_FATAL);
65
+ }
66
+ data->pdata = __archive_write_program_allocate("grzip");
67
+ if (data->pdata == NULL) {
68
+ free(data);
69
+ archive_set_error(_a, ENOMEM, "Can't allocate memory");
70
+ return (ARCHIVE_FATAL);
71
+ }
72
+
73
+ f->name = "grzip";
74
+ f->code = ARCHIVE_FILTER_GRZIP;
75
+ f->data = data;
76
+ f->open = archive_write_grzip_open;
77
+ f->options = archive_write_grzip_options;
78
+ f->write = archive_write_grzip_write;
79
+ f->close = archive_write_grzip_close;
80
+ f->free = archive_write_grzip_free;
81
+
82
+ /* Note: This filter always uses an external program, so we
83
+ * return "warn" to inform of the fact. */
84
+ archive_set_error(_a, ARCHIVE_ERRNO_MISC,
85
+ "Using external grzip program for grzip compression");
86
+ return (ARCHIVE_WARN);
87
+ }
88
+
89
+ static int
90
+ archive_write_grzip_options(struct archive_write_filter *f, const char *key,
91
+ const char *value)
92
+ {
93
+ (void)f; /* UNUSED */
94
+ (void)key; /* UNUSED */
95
+ (void)value; /* UNUSED */
96
+ /* Note: The "warn" return is just to inform the options
97
+ * supervisor that we didn't handle it. It will generate
98
+ * a suitable error if no one used this option. */
99
+ return (ARCHIVE_WARN);
100
+ }
101
+
102
+ static int
103
+ archive_write_grzip_open(struct archive_write_filter *f)
104
+ {
105
+ struct write_grzip *data = (struct write_grzip *)f->data;
106
+
107
+ return __archive_write_program_open(f, data->pdata, "grzip");
108
+ }
109
+
110
+ static int
111
+ archive_write_grzip_write(struct archive_write_filter *f,
112
+ const void *buff, size_t length)
113
+ {
114
+ struct write_grzip *data = (struct write_grzip *)f->data;
115
+
116
+ return __archive_write_program_write(f, data->pdata, buff, length);
117
+ }
118
+
119
+ static int
120
+ archive_write_grzip_close(struct archive_write_filter *f)
121
+ {
122
+ struct write_grzip *data = (struct write_grzip *)f->data;
123
+
124
+ return __archive_write_program_close(f, data->pdata);
125
+ }
126
+
127
+ static int
128
+ archive_write_grzip_free(struct archive_write_filter *f)
129
+ {
130
+ struct write_grzip *data = (struct write_grzip *)f->data;
131
+
132
+ __archive_write_program_free(data->pdata);
133
+ free(data);
134
+ return (ARCHIVE_OK);
135
+ }