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
@@ -1,5 +1,5 @@
1
1
  /*-
2
- * Copyright (c) 2009 Michihiro NAKAJIMA
2
+ * Copyright (c) 2009-2011 Michihiro NAKAJIMA
3
3
  * All rights reserved.
4
4
  *
5
5
  * Redistribution and use in source and binary forms, with or without
@@ -24,7 +24,7 @@
24
24
  */
25
25
 
26
26
  #include "archive_platform.h"
27
- __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_compression_uu.c 201248 2009-12-30 06:12:03Z kientzle $");
27
+ __FBSDID("$FreeBSD$");
28
28
 
29
29
  #ifdef HAVE_ERRNO_H
30
30
  #include <errno.h>
@@ -40,6 +40,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_compression_uu.c 20
40
40
  #include "archive_private.h"
41
41
  #include "archive_read_private.h"
42
42
 
43
+ /* Maximum lookahead during bid phase */
44
+ #define UUENCODE_BID_MAX_READ 128*1024 /* in bytes */
45
+
43
46
  struct uudecode {
44
47
  int64_t total;
45
48
  unsigned char *in_buff;
@@ -53,6 +56,7 @@ struct uudecode {
53
56
  #define ST_READ_UU 1
54
57
  #define ST_UUEND 2
55
58
  #define ST_READ_BASE64 3
59
+ #define ST_IGNORE 4
56
60
  };
57
61
 
58
62
  static int uudecode_bidder_bid(struct archive_read_filter_bidder *,
@@ -63,23 +67,28 @@ static ssize_t uudecode_filter_read(struct archive_read_filter *,
63
67
  const void **);
64
68
  static int uudecode_filter_close(struct archive_read_filter *);
65
69
 
70
+ #if ARCHIVE_VERSION_NUMBER < 4000000
71
+ /* Deprecated; remove in libarchive 4.0 */
66
72
  int
67
- archive_read_support_compression_uu(struct archive *_a)
73
+ archive_read_support_compression_uu(struct archive *a)
68
74
  {
69
- struct archive_read *a = (struct archive_read *)_a;
70
- struct archive_read_filter_bidder *bidder;
75
+ return archive_read_support_filter_uu(a);
76
+ }
77
+ #endif
71
78
 
72
- bidder = __archive_read_get_bidder(a);
73
- archive_clear_error(_a);
74
- if (bidder == NULL)
75
- return (ARCHIVE_FATAL);
79
+ static const struct archive_read_filter_bidder_vtable
80
+ uudecode_bidder_vtable = {
81
+ .bid = uudecode_bidder_bid,
82
+ .init = uudecode_bidder_init,
83
+ };
76
84
 
77
- bidder->data = NULL;
78
- bidder->bid = uudecode_bidder_bid;
79
- bidder->init = uudecode_bidder_init;
80
- bidder->options = NULL;
81
- bidder->free = NULL;
82
- return (ARCHIVE_OK);
85
+ int
86
+ archive_read_support_filter_uu(struct archive *_a)
87
+ {
88
+ struct archive_read *a = (struct archive_read *)_a;
89
+
90
+ return __archive_read_register_bidder(a, NULL, "uu",
91
+ &uudecode_bidder_vtable);
83
92
  }
84
93
 
85
94
  static const unsigned char ascii[256] = {
@@ -194,7 +203,8 @@ get_line(const unsigned char *b, ssize_t avail, ssize_t *nlsize)
194
203
 
195
204
  static ssize_t
196
205
  bid_get_line(struct archive_read_filter *filter,
197
- const unsigned char **b, ssize_t *avail, ssize_t *ravail, ssize_t *nl)
206
+ const unsigned char **b, ssize_t *avail, ssize_t *ravail,
207
+ ssize_t *nl, size_t* nbytes_read)
198
208
  {
199
209
  ssize_t len;
200
210
  int quit;
@@ -205,24 +215,37 @@ bid_get_line(struct archive_read_filter *filter,
205
215
  len = 0;
206
216
  } else
207
217
  len = get_line(*b, *avail, nl);
218
+
208
219
  /*
209
220
  * Read bytes more while it does not reach the end of line.
210
221
  */
211
- while (*nl == 0 && len == *avail && !quit) {
222
+ while (*nl == 0 && len == *avail && !quit &&
223
+ *nbytes_read < UUENCODE_BID_MAX_READ) {
212
224
  ssize_t diff = *ravail - *avail;
225
+ size_t nbytes_req = (*ravail+1023) & ~1023U;
226
+ ssize_t tested;
227
+
228
+ /* Increase reading bytes if it is not enough to at least
229
+ * new two lines. */
230
+ if (nbytes_req < (size_t)*ravail + 160)
231
+ nbytes_req <<= 1;
213
232
 
214
- *b = __archive_read_filter_ahead(filter, 160 + *ravail, avail);
233
+ *b = __archive_read_filter_ahead(filter, nbytes_req, avail);
215
234
  if (*b == NULL) {
216
235
  if (*ravail >= *avail)
217
236
  return (0);
218
- /* Reading bytes reaches the end of file. */
237
+ /* Reading bytes reaches the end of a stream. */
219
238
  *b = __archive_read_filter_ahead(filter, *avail, avail);
220
239
  quit = 1;
221
240
  }
241
+ *nbytes_read = *avail;
222
242
  *ravail = *avail;
223
243
  *b += diff;
224
244
  *avail -= diff;
225
- len = get_line(*b, *avail, nl);
245
+ tested = len;/* Skip some bytes we already determined. */
246
+ len = get_line(*b + tested, *avail - tested, nl);
247
+ if (len >= 0)
248
+ len += tested;
226
249
  }
227
250
  return (len);
228
251
  }
@@ -238,6 +261,7 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
238
261
  ssize_t len, nl;
239
262
  int l;
240
263
  int firstline;
264
+ size_t nbytes_read;
241
265
 
242
266
  (void)self; /* UNUSED */
243
267
 
@@ -247,13 +271,14 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
247
271
 
248
272
  firstline = 20;
249
273
  ravail = avail;
274
+ nbytes_read = avail;
250
275
  for (;;) {
251
- len = bid_get_line(filter, &b, &avail, &ravail, &nl);
276
+ len = bid_get_line(filter, &b, &avail, &ravail, &nl, &nbytes_read);
252
277
  if (len < 0 || nl == 0)
253
- return (0);/* Binary data. */
254
- if (memcmp(b, "begin ", 6) == 0 && len - nl >= 11)
278
+ return (0); /* No match found. */
279
+ if (len - nl >= 11 && memcmp(b, "begin ", 6) == 0)
255
280
  l = 6;
256
- else if (memcmp(b, "begin-base64 ", 13) == 0 && len - nl >= 18)
281
+ else if (len -nl >= 18 && memcmp(b, "begin-base64 ", 13) == 0)
257
282
  l = 13;
258
283
  else
259
284
  l = 0;
@@ -268,15 +293,20 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
268
293
  if (l)
269
294
  break;
270
295
  firstline = 0;
296
+
297
+ /* Do not read more than UUENCODE_BID_MAX_READ bytes */
298
+ if (nbytes_read >= UUENCODE_BID_MAX_READ)
299
+ return (0);
271
300
  }
272
301
  if (!avail)
273
302
  return (0);
274
- len = bid_get_line(filter, &b, &avail, &ravail, &nl);
303
+ len = bid_get_line(filter, &b, &avail, &ravail, &nl, &nbytes_read);
275
304
  if (len < 0 || nl == 0)
276
305
  return (0);/* There are non-ascii characters. */
277
306
  avail -= len;
278
307
 
279
308
  if (l == 6) {
309
+ /* "begin " */
280
310
  if (!uuchar[*b])
281
311
  return (0);
282
312
  /* Get a length of decoded bytes. */
@@ -284,30 +314,14 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
284
314
  if (l > 45)
285
315
  /* Normally, maximum length is 45(character 'M'). */
286
316
  return (0);
287
- while (l && len-nl > 0) {
288
- if (l > 0) {
289
- if (!uuchar[*b++])
290
- return (0);
291
- if (!uuchar[*b++])
292
- return (0);
293
- len -= 2;
294
- --l;
295
- }
296
- if (l > 0) {
297
- if (!uuchar[*b++])
298
- return (0);
299
- --len;
300
- --l;
301
- }
302
- if (l > 0) {
303
- if (!uuchar[*b++])
304
- return (0);
305
- --len;
306
- --l;
307
- }
317
+ if (l > len - nl)
318
+ return (0); /* Line too short. */
319
+ while (l) {
320
+ if (!uuchar[*b++])
321
+ return (0);
322
+ --len;
323
+ --l;
308
324
  }
309
- if (len-nl < 0)
310
- return (0);
311
325
  if (len-nl == 1 &&
312
326
  (uuchar[*b] || /* Check sum. */
313
327
  (*b >= 'a' && *b <= 'z'))) {/* Padding data(MINIX). */
@@ -317,8 +331,8 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
317
331
  b += nl;
318
332
  if (avail && uuchar[*b])
319
333
  return (firstline+30);
320
- }
321
- if (l == 13) {
334
+ } else if (l == 13) {
335
+ /* "begin-base64 " */
322
336
  while (len-nl > 0) {
323
337
  if (!base64[*b++])
324
338
  return (0);
@@ -337,6 +351,12 @@ uudecode_bidder_bid(struct archive_read_filter_bidder *self,
337
351
  return (0);
338
352
  }
339
353
 
354
+ static const struct archive_read_filter_vtable
355
+ uudecode_reader_vtable = {
356
+ .read = uudecode_filter_read,
357
+ .close = uudecode_filter_close,
358
+ };
359
+
340
360
  static int
341
361
  uudecode_bidder_init(struct archive_read_filter *self)
342
362
  {
@@ -344,11 +364,8 @@ uudecode_bidder_init(struct archive_read_filter *self)
344
364
  void *out_buff;
345
365
  void *in_buff;
346
366
 
347
- self->code = ARCHIVE_COMPRESSION_UU;
367
+ self->code = ARCHIVE_FILTER_UU;
348
368
  self->name = "uu";
349
- self->read = uudecode_filter_read;
350
- self->skip = NULL; /* not supported */
351
- self->close = uudecode_filter_close;
352
369
 
353
370
  uudecode = (struct uudecode *)calloc(sizeof(*uudecode), 1);
354
371
  out_buff = malloc(OUT_BUFF_SIZE);
@@ -368,6 +385,7 @@ uudecode_bidder_init(struct archive_read_filter *self)
368
385
  uudecode->in_allocated = IN_BUFF_SIZE;
369
386
  uudecode->out_buff = out_buff;
370
387
  uudecode->state = ST_FIND_HEAD;
388
+ self->vtable = &uudecode_reader_vtable;
371
389
 
372
390
  return (ARCHIVE_OK);
373
391
  }
@@ -381,19 +399,30 @@ ensure_in_buff_size(struct archive_read_filter *self,
381
399
  unsigned char *ptr;
382
400
  size_t newsize;
383
401
 
384
- newsize = uudecode->in_allocated << 1;
402
+ /*
403
+ * Calculate a new buffer size for in_buff.
404
+ * Increase its value until it has enough size we need.
405
+ */
406
+ newsize = uudecode->in_allocated;
407
+ do {
408
+ if (newsize < IN_BUFF_SIZE*32)
409
+ newsize <<= 1;
410
+ else
411
+ newsize += IN_BUFF_SIZE;
412
+ } while (size > newsize);
413
+ /* Allocate the new buffer. */
385
414
  ptr = malloc(newsize);
386
- if (ptr == NULL ||
387
- newsize < uudecode->in_allocated) {
415
+ if (ptr == NULL) {
388
416
  free(ptr);
389
417
  archive_set_error(&self->archive->archive,
390
418
  ENOMEM,
391
419
  "Can't allocate data for uudecode");
392
420
  return (ARCHIVE_FATAL);
393
421
  }
422
+ /* Move the remaining data in in_buff into the new buffer. */
394
423
  if (uudecode->in_cnt)
395
- memmove(ptr, uudecode->in_buff,
396
- uudecode->in_cnt);
424
+ memmove(ptr, uudecode->in_buff, uudecode->in_cnt);
425
+ /* Replace in_buff with the new buffer. */
397
426
  free(uudecode->in_buff);
398
427
  uudecode->in_buff = ptr;
399
428
  uudecode->in_allocated = newsize;
@@ -426,6 +455,10 @@ read_more:
426
455
  total = 0;
427
456
  out = uudecode->out_buff;
428
457
  ravail = avail_in;
458
+ if (uudecode->state == ST_IGNORE) {
459
+ used = avail_in;
460
+ goto finish;
461
+ }
429
462
  if (uudecode->in_cnt) {
430
463
  /*
431
464
  * If there is remaining data which is saved by
@@ -441,19 +474,32 @@ read_more:
441
474
  uudecode->in_cnt = 0;
442
475
  }
443
476
  for (;used < avail_in; d += llen, used += llen) {
444
- int l, body;
477
+ int64_t l, body;
445
478
 
446
479
  b = d;
447
480
  len = get_line(b, avail_in - used, &nl);
448
481
  if (len < 0) {
449
482
  /* Non-ascii character is found. */
483
+ if (uudecode->state == ST_FIND_HEAD &&
484
+ (uudecode->total > 0 || total > 0)) {
485
+ uudecode->state = ST_IGNORE;
486
+ used = avail_in;
487
+ goto finish;
488
+ }
450
489
  archive_set_error(&self->archive->archive,
451
490
  ARCHIVE_ERRNO_MISC,
452
491
  "Insufficient compressed data");
453
492
  return (ARCHIVE_FATAL);
454
493
  }
455
494
  llen = len;
456
- if (nl == 0) {
495
+ if ((nl == 0) && (uudecode->state != ST_UUEND)) {
496
+ if (total == 0 && ravail <= 0) {
497
+ /* There is nothing more to read, fail */
498
+ archive_set_error(&self->archive->archive,
499
+ ARCHIVE_ERRNO_FILE_FORMAT,
500
+ "Missing format data");
501
+ return (ARCHIVE_FATAL);
502
+ }
457
503
  /*
458
504
  * Save remaining data which does not contain
459
505
  * NL('\n','\r').
@@ -463,7 +509,7 @@ read_more:
463
509
  return (ARCHIVE_FATAL);
464
510
  if (uudecode->in_buff != b)
465
511
  memmove(uudecode->in_buff, b, len);
466
- uudecode->in_cnt = len;
512
+ uudecode->in_cnt = (int)len;
467
513
  if (total == 0) {
468
514
  /* Do not return 0; it means end-of-file.
469
515
  * We should try to read bytes more. */
@@ -471,16 +517,22 @@ read_more:
471
517
  self->upstream, ravail);
472
518
  goto read_more;
473
519
  }
520
+ used += len;
474
521
  break;
475
522
  }
476
- if (total + len * 2 > OUT_BUFF_SIZE)
477
- break;
478
523
  switch (uudecode->state) {
479
524
  default:
480
525
  case ST_FIND_HEAD:
481
- if (len - nl > 13 && memcmp(b, "begin ", 6) == 0)
526
+ /* Do not read more than UUENCODE_BID_MAX_READ bytes */
527
+ if (total + len >= UUENCODE_BID_MAX_READ) {
528
+ archive_set_error(&self->archive->archive,
529
+ ARCHIVE_ERRNO_FILE_FORMAT,
530
+ "Invalid format data");
531
+ return (ARCHIVE_FATAL);
532
+ }
533
+ if (len - nl >= 11 && memcmp(b, "begin ", 6) == 0)
482
534
  l = 6;
483
- else if (len - nl > 18 &&
535
+ else if (len - nl >= 18 &&
484
536
  memcmp(b, "begin-base64 ", 13) == 0)
485
537
  l = 13;
486
538
  else
@@ -495,6 +547,8 @@ read_more:
495
547
  }
496
548
  break;
497
549
  case ST_READ_UU:
550
+ if (total + len * 2 > OUT_BUFF_SIZE)
551
+ goto finish;
498
552
  body = len - nl;
499
553
  if (!uuchar[*b] || body <= 0) {
500
554
  archive_set_error(&self->archive->archive,
@@ -502,7 +556,7 @@ read_more:
502
556
  "Insufficient compressed data");
503
557
  return (ARCHIVE_FATAL);
504
558
  }
505
- /* Get length of undecoded bytes of curent line. */
559
+ /* Get length of undecoded bytes of current line. */
506
560
  l = UUDECODE(*b++);
507
561
  body--;
508
562
  if (l > body) {
@@ -518,14 +572,13 @@ read_more:
518
572
  while (l > 0) {
519
573
  int n = 0;
520
574
 
521
- if (l > 0) {
522
- if (!uuchar[b[0]] || !uuchar[b[1]])
523
- break;
524
- n = UUDECODE(*b++) << 18;
525
- n |= UUDECODE(*b++) << 12;
526
- *out++ = n >> 16; total++;
527
- --l;
528
- }
575
+ if (!uuchar[b[0]] || !uuchar[b[1]])
576
+ break;
577
+ n = UUDECODE(*b++) << 18;
578
+ n |= UUDECODE(*b++) << 12;
579
+ *out++ = n >> 16; total++;
580
+ --l;
581
+
529
582
  if (l > 0) {
530
583
  if (!uuchar[b[0]])
531
584
  break;
@@ -559,6 +612,8 @@ read_more:
559
612
  }
560
613
  break;
561
614
  case ST_READ_BASE64:
615
+ if (total + len * 2 > OUT_BUFF_SIZE)
616
+ goto finish;
562
617
  l = len - nl;
563
618
  if (l >= 3 && b[0] == '=' && b[1] == '=' &&
564
619
  b[2] == '=') {
@@ -568,14 +623,13 @@ read_more:
568
623
  while (l > 0) {
569
624
  int n = 0;
570
625
 
571
- if (l > 0) {
572
- if (!base64[b[0]] || !base64[b[1]])
573
- break;
574
- n = base64num[*b++] << 18;
575
- n |= base64num[*b++] << 12;
576
- *out++ = n >> 16; total++;
577
- l -= 2;
578
- }
626
+ if (!base64[b[0]] || !base64[b[1]])
627
+ break;
628
+ n = base64num[*b++] << 18;
629
+ n |= base64num[*b++] << 12;
630
+ *out++ = n >> 16; total++;
631
+ l -= 2;
632
+
579
633
  if (l > 0) {
580
634
  if (*b == '=')
581
635
  break;
@@ -604,8 +658,10 @@ read_more:
604
658
  break;
605
659
  }
606
660
  }
607
-
608
- __archive_read_filter_consume(self->upstream, ravail);
661
+ finish:
662
+ if (ravail < avail_in)
663
+ used -= avail_in - ravail;
664
+ __archive_read_filter_consume(self->upstream, used);
609
665
 
610
666
  *buff = uudecode->out_buff;
611
667
  uudecode->total += total;