libarchive-static 1.0.5 → 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 (296) hide show
  1. checksums.yaml +5 -5
  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_internal.h +0 -1
  20. data/ext/libarchive-0.1.1/ext/libarchive_reader.c +6 -4
  21. data/ext/libarchive-0.1.1/ext/libarchive_reader.o +0 -0
  22. data/ext/libarchive-0.1.1/ext/libarchive_ruby.so +0 -0
  23. data/ext/libarchive-0.1.1/ext/libarchive_win32.h +1 -1
  24. data/ext/libarchive-0.1.1/ext/libarchive_writer.c +2 -2
  25. data/ext/libarchive-0.1.1/ext/libarchive_writer.o +0 -0
  26. data/ext/libarchive-3.6.2/Makefile.in +16892 -0
  27. data/ext/libarchive-3.6.2/build/autoconf/ax_append_compile_flags.m4 +67 -0
  28. data/ext/libarchive-3.6.2/build/autoconf/ax_append_flag.m4 +71 -0
  29. data/ext/libarchive-3.6.2/build/autoconf/ax_check_compile_flag.m4 +74 -0
  30. data/ext/libarchive-3.6.2/build/autoconf/ax_require_defined.m4 +37 -0
  31. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/check_stdcall_func.m4 +0 -0
  32. data/ext/libarchive-3.6.2/build/autoconf/compile +348 -0
  33. data/ext/libarchive-3.6.2/build/autoconf/config.guess +1754 -0
  34. data/ext/libarchive-3.6.2/build/autoconf/config.rpath +696 -0
  35. data/ext/libarchive-3.6.2/build/autoconf/config.sub +1890 -0
  36. data/ext/libarchive-3.6.2/build/autoconf/depcomp +791 -0
  37. data/ext/libarchive-3.6.2/build/autoconf/iconv.m4 +271 -0
  38. data/ext/libarchive-3.6.2/build/autoconf/install-sh +541 -0
  39. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/la_uid_t.m4 +0 -0
  40. data/ext/libarchive-3.6.2/build/autoconf/lib-ld.m4 +109 -0
  41. data/ext/libarchive-3.6.2/build/autoconf/lib-link.m4 +777 -0
  42. data/ext/libarchive-3.6.2/build/autoconf/lib-prefix.m4 +224 -0
  43. data/ext/libarchive-3.6.2/build/autoconf/ltmain.sh +11251 -0
  44. data/ext/libarchive-3.6.2/build/autoconf/m4_ax_compile_check_sizeof.m4 +115 -0
  45. data/ext/libarchive-3.6.2/build/autoconf/missing +215 -0
  46. data/ext/libarchive-3.6.2/build/autoconf/test-driver +153 -0
  47. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/pkgconfig/libarchive.pc.in +4 -1
  48. data/ext/libarchive-3.6.2/config.h.in +1504 -0
  49. data/ext/libarchive-3.6.2/configure +25558 -0
  50. data/ext/libarchive-3.6.2/libarchive/archive.h +1212 -0
  51. data/ext/libarchive-3.6.2/libarchive/archive_acl.c +2097 -0
  52. data/ext/libarchive-3.6.2/libarchive/archive_acl_private.h +83 -0
  53. data/ext/libarchive-3.6.2/libarchive/archive_blake2.h +197 -0
  54. data/ext/libarchive-3.6.2/libarchive/archive_blake2_impl.h +161 -0
  55. data/ext/libarchive-3.6.2/libarchive/archive_blake2s_ref.c +369 -0
  56. data/ext/libarchive-3.6.2/libarchive/archive_blake2sp_ref.c +361 -0
  57. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_check_magic.c +63 -22
  58. data/ext/libarchive-3.6.2/libarchive/archive_cmdline.c +227 -0
  59. data/ext/libarchive-3.6.2/libarchive/archive_cmdline_private.h +47 -0
  60. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_crc32.h +17 -0
  61. data/ext/libarchive-3.6.2/libarchive/archive_cryptor.c +534 -0
  62. data/ext/libarchive-3.6.2/libarchive/archive_cryptor_private.h +188 -0
  63. data/ext/libarchive-3.6.2/libarchive/archive_digest.c +1505 -0
  64. data/ext/libarchive-3.6.2/libarchive/archive_digest_private.h +416 -0
  65. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_darwin.c +559 -0
  66. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_freebsd.c +712 -0
  67. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_linux.c +760 -0
  68. data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_sunos.c +824 -0
  69. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_endian.h +48 -15
  70. data/ext/libarchive-3.6.2/libarchive/archive_entry.c +2149 -0
  71. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry.h +305 -106
  72. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_bhfi.c +5 -4
  73. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_stat.c +9 -3
  74. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_link_resolver.c +104 -62
  75. data/ext/libarchive-3.6.2/libarchive/archive_entry_locale.h +92 -0
  76. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_private.h +65 -49
  77. data/ext/libarchive-3.6.2/libarchive/archive_entry_sparse.c +156 -0
  78. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_stat.c +6 -6
  79. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_strmode.c +1 -1
  80. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_xattr.c +4 -6
  81. data/ext/libarchive-3.6.2/libarchive/archive_getdate.c +1165 -0
  82. data/ext/libarchive-3.6.2/libarchive/archive_getdate.h +39 -0
  83. data/ext/libarchive-3.6.2/libarchive/archive_hmac.c +334 -0
  84. data/ext/libarchive-3.6.2/libarchive/archive_hmac_private.h +117 -0
  85. data/ext/libarchive-3.6.2/libarchive/archive_match.c +1875 -0
  86. data/ext/libarchive-3.6.2/libarchive/archive_openssl_evp_private.h +53 -0
  87. data/ext/libarchive-3.6.2/libarchive/archive_openssl_hmac_private.h +54 -0
  88. data/ext/libarchive-3.6.2/libarchive/archive_options.c +218 -0
  89. data/ext/libarchive-3.6.2/libarchive/archive_options_private.h +51 -0
  90. data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.c +337 -0
  91. data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.h +49 -0
  92. data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.c +463 -0
  93. data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.h +52 -0
  94. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_platform.h +77 -9
  95. data/ext/libarchive-3.6.2/libarchive/archive_platform_acl.h +55 -0
  96. data/ext/libarchive-3.6.2/libarchive/archive_platform_xattr.h +47 -0
  97. data/ext/libarchive-3.6.2/libarchive/archive_ppmd7.c +1168 -0
  98. data/ext/libarchive-3.6.2/libarchive/archive_ppmd7_private.h +119 -0
  99. data/ext/libarchive-3.6.2/libarchive/archive_ppmd8.c +1287 -0
  100. data/ext/libarchive-3.6.2/libarchive/archive_ppmd8_private.h +148 -0
  101. data/ext/libarchive-3.6.2/libarchive/archive_ppmd_private.h +151 -0
  102. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_private.h +74 -18
  103. data/ext/libarchive-3.6.2/libarchive/archive_random.c +272 -0
  104. data/ext/libarchive-3.6.2/libarchive/archive_random_private.h +36 -0
  105. data/ext/libarchive-3.6.2/libarchive/archive_rb.c +709 -0
  106. data/ext/libarchive-3.6.2/libarchive/archive_rb.h +113 -0
  107. data/ext/libarchive-3.6.2/libarchive/archive_read.c +1756 -0
  108. data/ext/libarchive-3.6.2/libarchive/archive_read_add_passphrase.c +190 -0
  109. data/ext/libarchive-3.6.2/libarchive/archive_read_append_filter.c +204 -0
  110. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_data_into_fd.c +64 -18
  111. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_entry_from_file.c +1086 -0
  112. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_posix.c +2732 -0
  113. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_private.h +40 -4
  114. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_set_standard_lookup.c +21 -11
  115. data/ext/libarchive-3.6.2/libarchive/archive_read_disk_windows.c +2479 -0
  116. data/ext/libarchive-3.6.2/libarchive/archive_read_extract.c +60 -0
  117. data/ext/{libarchive-2.8.4/libarchive/archive_read_extract.c → libarchive-3.6.2/libarchive/archive_read_extract2.c} +34 -61
  118. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_fd.c +70 -49
  119. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_file.c +38 -23
  120. data/ext/libarchive-3.6.2/libarchive/archive_read_open_filename.c +586 -0
  121. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_memory.c +58 -28
  122. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_private.h +127 -59
  123. data/ext/libarchive-3.6.2/libarchive/archive_read_set_format.c +117 -0
  124. data/ext/libarchive-3.6.2/libarchive/archive_read_set_options.c +133 -0
  125. 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
  126. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_by_code.c +83 -0
  127. 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
  128. 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
  129. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_grzip.c +112 -0
  130. 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
  131. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lrzip.c +122 -0
  132. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lz4.c +742 -0
  133. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lzop.c +499 -0
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_zstd.c +297 -0
  140. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_7zip.c +3900 -0
  141. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_all.c +89 -0
  142. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_ar.c +126 -72
  143. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_by_code.c +92 -0
  144. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cab.c +3228 -0
  145. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cpio.c +1104 -0
  146. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_empty.c +14 -11
  147. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_iso9660.c +990 -541
  148. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_lha.c +2916 -0
  149. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_mtree.c +2150 -0
  150. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar.c +3797 -0
  151. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar5.c +4251 -0
  152. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_raw.c +38 -31
  153. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_tar.c +1157 -629
  154. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_warc.c +848 -0
  155. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_xar.c +439 -258
  156. data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_zip.c +4270 -0
  157. data/ext/libarchive-3.6.2/libarchive/archive_string.c +4240 -0
  158. data/ext/libarchive-3.6.2/libarchive/archive_string.h +243 -0
  159. data/ext/libarchive-3.6.2/libarchive/archive_string_composition.h +2292 -0
  160. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_string_sprintf.c +44 -16
  161. data/ext/libarchive-3.6.2/libarchive/archive_util.c +655 -0
  162. data/ext/libarchive-3.6.2/libarchive/archive_version_details.c +151 -0
  163. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_virtual.c +85 -16
  164. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.c +214 -541
  165. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.h +74 -106
  166. data/ext/libarchive-3.6.2/libarchive/archive_write.c +828 -0
  167. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter.c +72 -0
  168. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_b64encode.c +304 -0
  169. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_by_name.c +77 -0
  170. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_bzip2.c +401 -0
  171. 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
  172. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_grzip.c +135 -0
  173. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_gzip.c +442 -0
  174. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lrzip.c +197 -0
  175. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lz4.c +700 -0
  176. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lzop.c +478 -0
  177. 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
  178. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_program.c +391 -0
  179. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_uuencode.c +295 -0
  180. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_xz.c +545 -0
  181. data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_zstd.c +418 -0
  182. data/ext/libarchive-3.6.2/libarchive/archive_write_disk_posix.c +4711 -0
  183. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_private.h +9 -2
  184. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_set_standard_lookup.c +30 -29
  185. data/ext/libarchive-3.6.2/libarchive/archive_write_disk_windows.c +2842 -0
  186. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_fd.c +15 -10
  187. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_file.c +15 -9
  188. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_filename.c +128 -20
  189. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_memory.c +7 -18
  190. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_private.h +72 -29
  191. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format.c +56 -3
  192. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_7zip.c +2322 -0
  193. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ar.c +54 -34
  194. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_by_name.c +20 -2
  195. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio.c +11 -0
  196. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_binary.c +610 -0
  197. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_newc.c +457 -0
  198. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_odc.c +500 -0
  199. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_filter_by_ext.c +142 -0
  200. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_gnutar.c +755 -0
  201. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_iso9660.c +8165 -0
  202. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_mtree.c +2217 -0
  203. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_pax.c +1049 -387
  204. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_private.h +42 -0
  205. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_raw.c +125 -0
  206. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_shar.c +62 -47
  207. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ustar.c +279 -108
  208. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_v7tar.c +638 -0
  209. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_warc.c +453 -0
  210. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_xar.c +3259 -0
  211. data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_zip.c +1704 -0
  212. data/ext/libarchive-3.6.2/libarchive/archive_write_set_options.c +130 -0
  213. data/ext/libarchive-3.6.2/libarchive/archive_write_set_passphrase.c +95 -0
  214. data/ext/libarchive-3.6.2/libarchive/archive_xxhash.h +48 -0
  215. data/ext/libarchive-3.6.2/libarchive/config_freebsd.h +271 -0
  216. data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/filter_fork.h +10 -5
  217. data/ext/{libarchive-2.8.4/libarchive/filter_fork.c → libarchive-3.6.2/libarchive/filter_fork_posix.c} +98 -19
  218. data/ext/libarchive-3.6.2/libarchive/filter_fork_windows.c +236 -0
  219. data/ext/libarchive-3.6.2/libarchive/xxhash.c +525 -0
  220. data/ext/libarchive-static-makefile +144 -80
  221. data/ext/libarchive-static-wrapper-makefile +1 -1
  222. data/ext/zlib-1.2.13/Makefile.in +404 -0
  223. data/ext/{zlib-1.2.5 → zlib-1.2.13}/adler32.c +51 -34
  224. data/ext/{zlib-1.2.5 → zlib-1.2.13}/compress.c +27 -21
  225. data/ext/zlib-1.2.13/configure +922 -0
  226. data/ext/zlib-1.2.13/crc32.c +1125 -0
  227. data/ext/zlib-1.2.13/crc32.h +9446 -0
  228. data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.c +842 -459
  229. data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.h +37 -33
  230. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzclose.c +0 -0
  231. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzguts.h +103 -16
  232. data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzlib.c +155 -53
  233. data/ext/zlib-1.2.13/gzread.c +650 -0
  234. data/ext/zlib-1.2.13/gzwrite.c +677 -0
  235. data/ext/{zlib-1.2.5 → zlib-1.2.13}/infback.c +24 -12
  236. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.c +49 -66
  237. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.h +0 -0
  238. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffixed.h +3 -3
  239. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.c +209 -94
  240. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.h +9 -5
  241. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.c +24 -50
  242. data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.h +1 -1
  243. data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.c +135 -198
  244. data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.h +0 -0
  245. data/ext/zlib-1.2.13/uncompr.c +93 -0
  246. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zconf.h +182 -63
  247. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zlib.h +617 -295
  248. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.c +50 -41
  249. data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.h +83 -82
  250. metadata +244 -137
  251. data/ext/libarchive-0.1.1/libarchive.c +0 -1762
  252. data/ext/libarchive-2.8.4/Makefile.in +0 -7076
  253. data/ext/libarchive-2.8.4/build/autoconf/compile +0 -143
  254. data/ext/libarchive-2.8.4/build/autoconf/config.guess +0 -1502
  255. data/ext/libarchive-2.8.4/build/autoconf/config.sub +0 -1708
  256. data/ext/libarchive-2.8.4/build/autoconf/depcomp +0 -630
  257. data/ext/libarchive-2.8.4/build/autoconf/install-sh +0 -291
  258. data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +0 -8406
  259. data/ext/libarchive-2.8.4/build/autoconf/missing +0 -376
  260. data/ext/libarchive-2.8.4/config.h.in +0 -772
  261. data/ext/libarchive-2.8.4/configure +0 -17916
  262. data/ext/libarchive-2.8.4/libarchive/archive.h +0 -741
  263. data/ext/libarchive-2.8.4/libarchive/archive_entry.c +0 -2202
  264. data/ext/libarchive-2.8.4/libarchive/archive_hash.h +0 -281
  265. data/ext/libarchive-2.8.4/libarchive/archive_read.c +0 -1249
  266. data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +0 -198
  267. data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +0 -570
  268. data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +0 -272
  269. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +0 -777
  270. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +0 -1304
  271. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +0 -903
  272. data/ext/libarchive-2.8.4/libarchive/archive_string.c +0 -453
  273. data/ext/libarchive-2.8.4/libarchive/archive_string.h +0 -148
  274. data/ext/libarchive-2.8.4/libarchive/archive_util.c +0 -391
  275. data/ext/libarchive-2.8.4/libarchive/archive_write.c +0 -466
  276. data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +0 -2628
  277. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +0 -408
  278. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +0 -477
  279. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +0 -257
  280. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +0 -347
  281. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +0 -438
  282. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +0 -344
  283. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +0 -295
  284. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +0 -1050
  285. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +0 -667
  286. data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +0 -154
  287. data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +0 -113
  288. data/ext/zlib-1.2.5/Makefile.in +0 -257
  289. data/ext/zlib-1.2.5/configure +0 -596
  290. data/ext/zlib-1.2.5/crc32.c +0 -442
  291. data/ext/zlib-1.2.5/crc32.h +0 -441
  292. data/ext/zlib-1.2.5/example.c +0 -565
  293. data/ext/zlib-1.2.5/gzread.c +0 -653
  294. data/ext/zlib-1.2.5/gzwrite.c +0 -531
  295. data/ext/zlib-1.2.5/minigzip.c +0 -440
  296. 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
+ }