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.
- checksums.yaml +4 -4
- data/ext/extconf.rb +2 -9
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.c +6 -6
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_format.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.c +1 -1
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.o +0 -0
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.c +5 -5
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.o +0 -0
- data/ext/libarchive-0.1.1/ext/config.h +23 -0
- data/ext/libarchive-0.1.1/ext/config.log +230 -0
- data/ext/libarchive-0.1.1/ext/config.status +671 -0
- data/ext/libarchive-0.1.1/ext/libarchive.c +1 -1
- data/ext/libarchive-0.1.1/ext/libarchive.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_archive.c +7 -7
- data/ext/libarchive-0.1.1/ext/libarchive_archive.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_entry.c +6 -0
- data/ext/libarchive-0.1.1/ext/libarchive_entry.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_reader.c +6 -4
- data/ext/libarchive-0.1.1/ext/libarchive_reader.o +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_ruby.so +0 -0
- data/ext/libarchive-0.1.1/ext/libarchive_win32.h +1 -1
- data/ext/libarchive-0.1.1/ext/libarchive_writer.c +2 -2
- data/ext/libarchive-0.1.1/ext/libarchive_writer.o +0 -0
- data/ext/libarchive-3.6.2/Makefile.in +16892 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_append_compile_flags.m4 +67 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_append_flag.m4 +71 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_check_compile_flag.m4 +74 -0
- data/ext/libarchive-3.6.2/build/autoconf/ax_require_defined.m4 +37 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/check_stdcall_func.m4 +0 -0
- data/ext/libarchive-3.6.2/build/autoconf/compile +348 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.guess +1754 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.rpath +696 -0
- data/ext/libarchive-3.6.2/build/autoconf/config.sub +1890 -0
- data/ext/libarchive-3.6.2/build/autoconf/depcomp +791 -0
- data/ext/libarchive-3.6.2/build/autoconf/iconv.m4 +271 -0
- data/ext/libarchive-3.6.2/build/autoconf/install-sh +541 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/autoconf/la_uid_t.m4 +0 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-ld.m4 +109 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-link.m4 +777 -0
- data/ext/libarchive-3.6.2/build/autoconf/lib-prefix.m4 +224 -0
- data/ext/libarchive-3.6.2/build/autoconf/ltmain.sh +11251 -0
- data/ext/libarchive-3.6.2/build/autoconf/m4_ax_compile_check_sizeof.m4 +115 -0
- data/ext/libarchive-3.6.2/build/autoconf/missing +215 -0
- data/ext/libarchive-3.6.2/build/autoconf/test-driver +153 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/build/pkgconfig/libarchive.pc.in +4 -1
- data/ext/libarchive-3.6.2/config.h.in +1504 -0
- data/ext/libarchive-3.6.2/configure +25558 -0
- data/ext/libarchive-3.6.2/libarchive/archive.h +1212 -0
- data/ext/libarchive-3.6.2/libarchive/archive_acl.c +2097 -0
- data/ext/libarchive-3.6.2/libarchive/archive_acl_private.h +83 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2.h +197 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2_impl.h +161 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2s_ref.c +369 -0
- data/ext/libarchive-3.6.2/libarchive/archive_blake2sp_ref.c +361 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_check_magic.c +63 -22
- data/ext/libarchive-3.6.2/libarchive/archive_cmdline.c +227 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cmdline_private.h +47 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_crc32.h +17 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cryptor.c +534 -0
- data/ext/libarchive-3.6.2/libarchive/archive_cryptor_private.h +188 -0
- data/ext/libarchive-3.6.2/libarchive/archive_digest.c +1505 -0
- data/ext/libarchive-3.6.2/libarchive/archive_digest_private.h +416 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_darwin.c +559 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_freebsd.c +712 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_linux.c +760 -0
- data/ext/libarchive-3.6.2/libarchive/archive_disk_acl_sunos.c +824 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_endian.h +48 -15
- data/ext/libarchive-3.6.2/libarchive/archive_entry.c +2149 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry.h +305 -106
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_bhfi.c +5 -4
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_copy_stat.c +9 -3
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_link_resolver.c +104 -62
- data/ext/libarchive-3.6.2/libarchive/archive_entry_locale.h +92 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_private.h +65 -49
- data/ext/libarchive-3.6.2/libarchive/archive_entry_sparse.c +156 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_stat.c +6 -6
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_strmode.c +1 -1
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_entry_xattr.c +4 -6
- data/ext/libarchive-3.6.2/libarchive/archive_getdate.c +1165 -0
- data/ext/libarchive-3.6.2/libarchive/archive_getdate.h +39 -0
- data/ext/libarchive-3.6.2/libarchive/archive_hmac.c +334 -0
- data/ext/libarchive-3.6.2/libarchive/archive_hmac_private.h +117 -0
- data/ext/libarchive-3.6.2/libarchive/archive_match.c +1875 -0
- data/ext/libarchive-3.6.2/libarchive/archive_openssl_evp_private.h +53 -0
- data/ext/libarchive-3.6.2/libarchive/archive_openssl_hmac_private.h +54 -0
- data/ext/libarchive-3.6.2/libarchive/archive_options.c +218 -0
- data/ext/libarchive-3.6.2/libarchive/archive_options_private.h +51 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.c +337 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pack_dev.h +49 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.c +463 -0
- data/ext/libarchive-3.6.2/libarchive/archive_pathmatch.h +52 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_platform.h +77 -9
- data/ext/libarchive-3.6.2/libarchive/archive_platform_acl.h +55 -0
- data/ext/libarchive-3.6.2/libarchive/archive_platform_xattr.h +47 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd7.c +1168 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd7_private.h +119 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd8.c +1287 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd8_private.h +148 -0
- data/ext/libarchive-3.6.2/libarchive/archive_ppmd_private.h +151 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_private.h +74 -18
- data/ext/libarchive-3.6.2/libarchive/archive_random.c +272 -0
- data/ext/libarchive-3.6.2/libarchive/archive_random_private.h +36 -0
- data/ext/libarchive-3.6.2/libarchive/archive_rb.c +709 -0
- data/ext/libarchive-3.6.2/libarchive/archive_rb.h +113 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read.c +1756 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_add_passphrase.c +190 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_append_filter.c +204 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_data_into_fd.c +64 -18
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_entry_from_file.c +1086 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_posix.c +2732 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_private.h +40 -4
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_disk_set_standard_lookup.c +21 -11
- data/ext/libarchive-3.6.2/libarchive/archive_read_disk_windows.c +2479 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_extract.c +60 -0
- data/ext/{libarchive-2.8.4/libarchive/archive_read_extract.c → libarchive-3.6.2/libarchive/archive_read_extract2.c} +34 -61
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_fd.c +70 -49
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_file.c +38 -23
- data/ext/libarchive-3.6.2/libarchive/archive_read_open_filename.c +586 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_open_memory.c +58 -28
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_private.h +127 -59
- data/ext/libarchive-3.6.2/libarchive/archive_read_set_format.c +117 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_set_options.c +133 -0
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_by_code.c +83 -0
- 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
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_grzip.c +112 -0
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lrzip.c +122 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lz4.c +742 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_lzop.c +499 -0
- 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
- 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
- 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
- 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
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_filter_zstd.c +297 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_7zip.c +3900 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_all.c +89 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_ar.c +126 -72
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_by_code.c +92 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cab.c +3228 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_cpio.c +1104 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_empty.c +14 -11
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_iso9660.c +990 -541
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_lha.c +2916 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_mtree.c +2150 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar.c +3797 -0
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_rar5.c +4251 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_raw.c +38 -31
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_tar.c +1157 -629
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_warc.c +848 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_read_support_format_xar.c +439 -258
- data/ext/libarchive-3.6.2/libarchive/archive_read_support_format_zip.c +4270 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string.c +4240 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string.h +243 -0
- data/ext/libarchive-3.6.2/libarchive/archive_string_composition.h +2292 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_string_sprintf.c +44 -16
- data/ext/libarchive-3.6.2/libarchive/archive_util.c +655 -0
- data/ext/libarchive-3.6.2/libarchive/archive_version_details.c +151 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_virtual.c +85 -16
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.c +214 -541
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_windows.h +74 -106
- data/ext/libarchive-3.6.2/libarchive/archive_write.c +828 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter.c +72 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_b64encode.c +304 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_by_name.c +77 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_bzip2.c +401 -0
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_grzip.c +135 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_gzip.c +442 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lrzip.c +197 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lz4.c +700 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_lzop.c +478 -0
- 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
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_program.c +391 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_uuencode.c +295 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_xz.c +545 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_add_filter_zstd.c +418 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_disk_posix.c +4711 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_private.h +9 -2
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_disk_set_standard_lookup.c +30 -29
- data/ext/libarchive-3.6.2/libarchive/archive_write_disk_windows.c +2842 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_fd.c +15 -10
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_file.c +15 -9
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_filename.c +128 -20
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_open_memory.c +7 -18
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_private.h +72 -29
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format.c +56 -3
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_7zip.c +2322 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ar.c +54 -34
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_by_name.c +20 -2
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio.c +11 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_binary.c +610 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_newc.c +457 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_cpio_odc.c +500 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_filter_by_ext.c +142 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_gnutar.c +755 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_iso9660.c +8165 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_mtree.c +2217 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_pax.c +1049 -387
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_private.h +42 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_raw.c +125 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_shar.c +62 -47
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/archive_write_set_format_ustar.c +279 -108
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_v7tar.c +638 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_warc.c +453 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_xar.c +3259 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_format_zip.c +1704 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_options.c +130 -0
- data/ext/libarchive-3.6.2/libarchive/archive_write_set_passphrase.c +95 -0
- data/ext/libarchive-3.6.2/libarchive/archive_xxhash.h +48 -0
- data/ext/libarchive-3.6.2/libarchive/config_freebsd.h +271 -0
- data/ext/{libarchive-2.8.4 → libarchive-3.6.2}/libarchive/filter_fork.h +10 -5
- data/ext/{libarchive-2.8.4/libarchive/filter_fork.c → libarchive-3.6.2/libarchive/filter_fork_posix.c} +98 -19
- data/ext/libarchive-3.6.2/libarchive/filter_fork_windows.c +236 -0
- data/ext/libarchive-3.6.2/libarchive/xxhash.c +525 -0
- data/ext/libarchive-static-makefile +144 -80
- data/ext/libarchive-static-wrapper-makefile +1 -1
- data/ext/zlib-1.2.13/Makefile.in +404 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/adler32.c +51 -34
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/compress.c +27 -21
- data/ext/zlib-1.2.13/configure +922 -0
- data/ext/zlib-1.2.13/crc32.c +1125 -0
- data/ext/zlib-1.2.13/crc32.h +9446 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.c +842 -459
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/deflate.h +37 -33
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzclose.c +0 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzguts.h +103 -16
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/gzlib.c +155 -53
- data/ext/zlib-1.2.13/gzread.c +650 -0
- data/ext/zlib-1.2.13/gzwrite.c +677 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/infback.c +24 -12
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.c +49 -66
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffast.h +0 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inffixed.h +3 -3
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.c +209 -94
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inflate.h +9 -5
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.c +24 -50
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/inftrees.h +1 -1
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.c +135 -198
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/trees.h +0 -0
- data/ext/zlib-1.2.13/uncompr.c +93 -0
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zconf.h +182 -63
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zlib.h +617 -295
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.c +50 -41
- data/ext/{zlib-1.2.5 → zlib-1.2.13}/zutil.h +83 -82
- metadata +241 -133
- data/ext/libarchive-0.1.1/libarchive.c +0 -1762
- data/ext/libarchive-2.8.4/Makefile.in +0 -7076
- data/ext/libarchive-2.8.4/build/autoconf/compile +0 -143
- data/ext/libarchive-2.8.4/build/autoconf/config.guess +0 -1502
- data/ext/libarchive-2.8.4/build/autoconf/config.sub +0 -1708
- data/ext/libarchive-2.8.4/build/autoconf/depcomp +0 -630
- data/ext/libarchive-2.8.4/build/autoconf/install-sh +0 -291
- data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +0 -8406
- data/ext/libarchive-2.8.4/build/autoconf/missing +0 -376
- data/ext/libarchive-2.8.4/config.h.in +0 -772
- data/ext/libarchive-2.8.4/configure +0 -17916
- data/ext/libarchive-2.8.4/libarchive/archive.h +0 -741
- data/ext/libarchive-2.8.4/libarchive/archive_entry.c +0 -2202
- data/ext/libarchive-2.8.4/libarchive/archive_hash.h +0 -281
- data/ext/libarchive-2.8.4/libarchive/archive_read.c +0 -1249
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +0 -198
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +0 -570
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +0 -272
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +0 -777
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +0 -1304
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +0 -903
- data/ext/libarchive-2.8.4/libarchive/archive_string.c +0 -453
- data/ext/libarchive-2.8.4/libarchive/archive_string.h +0 -148
- data/ext/libarchive-2.8.4/libarchive/archive_util.c +0 -391
- data/ext/libarchive-2.8.4/libarchive/archive_write.c +0 -466
- data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +0 -2628
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +0 -408
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +0 -477
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +0 -257
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +0 -347
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +0 -438
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +0 -344
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +0 -295
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +0 -1050
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +0 -667
- data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +0 -154
- data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +0 -113
- data/ext/zlib-1.2.5/Makefile.in +0 -257
- data/ext/zlib-1.2.5/configure +0 -596
- data/ext/zlib-1.2.5/crc32.c +0 -442
- data/ext/zlib-1.2.5/crc32.h +0 -441
- data/ext/zlib-1.2.5/example.c +0 -565
- data/ext/zlib-1.2.5/gzread.c +0 -653
- data/ext/zlib-1.2.5/gzwrite.c +0 -531
- data/ext/zlib-1.2.5/minigzip.c +0 -440
- data/ext/zlib-1.2.5/uncompr.c +0 -59
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
#include "archive_platform.h"
|
|
27
27
|
|
|
28
|
-
__FBSDID("$FreeBSD
|
|
28
|
+
__FBSDID("$FreeBSD$");
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
#ifdef HAVE_ERRNO_H
|
|
@@ -37,6 +37,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_compression_gzip.c
|
|
|
37
37
|
#ifdef HAVE_STRING_H
|
|
38
38
|
#include <string.h>
|
|
39
39
|
#endif
|
|
40
|
+
#ifdef HAVE_LIMITS_H
|
|
41
|
+
#include <limits.h>
|
|
42
|
+
#endif
|
|
40
43
|
#ifdef HAVE_UNISTD_H
|
|
41
44
|
#include <unistd.h>
|
|
42
45
|
#endif
|
|
@@ -45,6 +48,8 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_compression_gzip.c
|
|
|
45
48
|
#endif
|
|
46
49
|
|
|
47
50
|
#include "archive.h"
|
|
51
|
+
#include "archive_entry.h"
|
|
52
|
+
#include "archive_endian.h"
|
|
48
53
|
#include "archive_private.h"
|
|
49
54
|
#include "archive_read_private.h"
|
|
50
55
|
|
|
@@ -56,6 +61,8 @@ struct private_data {
|
|
|
56
61
|
size_t out_block_size;
|
|
57
62
|
int64_t total_out;
|
|
58
63
|
unsigned long crc;
|
|
64
|
+
uint32_t mtime;
|
|
65
|
+
char *name;
|
|
59
66
|
char eof; /* True = found end of compressed data. */
|
|
60
67
|
};
|
|
61
68
|
|
|
@@ -72,32 +79,42 @@ static int gzip_filter_close(struct archive_read_filter *);
|
|
|
72
79
|
*
|
|
73
80
|
* TODO: If zlib is unavailable, gzip_bidder_init() should
|
|
74
81
|
* use the compress_program framework to try to fire up an external
|
|
75
|
-
*
|
|
82
|
+
* gzip program.
|
|
76
83
|
*/
|
|
77
84
|
static int gzip_bidder_bid(struct archive_read_filter_bidder *,
|
|
78
85
|
struct archive_read_filter *);
|
|
79
86
|
static int gzip_bidder_init(struct archive_read_filter *);
|
|
80
87
|
|
|
88
|
+
#if ARCHIVE_VERSION_NUMBER < 4000000
|
|
89
|
+
/* Deprecated; remove in libarchive 4.0 */
|
|
81
90
|
int
|
|
82
|
-
archive_read_support_compression_gzip(struct archive *
|
|
91
|
+
archive_read_support_compression_gzip(struct archive *a)
|
|
92
|
+
{
|
|
93
|
+
return archive_read_support_filter_gzip(a);
|
|
94
|
+
}
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
static const struct archive_read_filter_bidder_vtable
|
|
98
|
+
gzip_bidder_vtable = {
|
|
99
|
+
.bid = gzip_bidder_bid,
|
|
100
|
+
.init = gzip_bidder_init,
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
int
|
|
104
|
+
archive_read_support_filter_gzip(struct archive *_a)
|
|
83
105
|
{
|
|
84
106
|
struct archive_read *a = (struct archive_read *)_a;
|
|
85
|
-
struct archive_read_filter_bidder *bidder = __archive_read_get_bidder(a);
|
|
86
107
|
|
|
87
|
-
if (
|
|
108
|
+
if (__archive_read_register_bidder(a, NULL, "gzip",
|
|
109
|
+
&gzip_bidder_vtable) != ARCHIVE_OK)
|
|
88
110
|
return (ARCHIVE_FATAL);
|
|
89
111
|
|
|
90
|
-
bidder->data = NULL;
|
|
91
|
-
bidder->bid = gzip_bidder_bid;
|
|
92
|
-
bidder->init = gzip_bidder_init;
|
|
93
|
-
bidder->options = NULL;
|
|
94
|
-
bidder->free = NULL; /* No data, so no cleanup necessary. */
|
|
95
112
|
/* Signal the extent of gzip support with the return value here. */
|
|
96
113
|
#if HAVE_ZLIB_H
|
|
97
114
|
return (ARCHIVE_OK);
|
|
98
115
|
#else
|
|
99
116
|
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
|
|
100
|
-
"Using external
|
|
117
|
+
"Using external gzip program");
|
|
101
118
|
return (ARCHIVE_WARN);
|
|
102
119
|
#endif
|
|
103
120
|
}
|
|
@@ -109,13 +126,22 @@ archive_read_support_compression_gzip(struct archive *_a)
|
|
|
109
126
|
* number of bytes in header. If pbits is non-NULL, it receives a
|
|
110
127
|
* count of bits verified, suitable for use by bidder.
|
|
111
128
|
*/
|
|
112
|
-
static
|
|
113
|
-
peek_at_header(struct archive_read_filter *filter, int *pbits
|
|
129
|
+
static ssize_t
|
|
130
|
+
peek_at_header(struct archive_read_filter *filter, int *pbits,
|
|
131
|
+
#ifdef HAVE_ZLIB_H
|
|
132
|
+
struct private_data *state
|
|
133
|
+
#else
|
|
134
|
+
void *state
|
|
135
|
+
#endif
|
|
136
|
+
)
|
|
114
137
|
{
|
|
115
138
|
const unsigned char *p;
|
|
116
139
|
ssize_t avail, len;
|
|
117
140
|
int bits = 0;
|
|
118
141
|
int header_flags;
|
|
142
|
+
#ifndef HAVE_ZLIB_H
|
|
143
|
+
(void)state; /* UNUSED */
|
|
144
|
+
#endif
|
|
119
145
|
|
|
120
146
|
/* Start by looking at the first ten bytes of the header, which
|
|
121
147
|
* is all fixed layout. */
|
|
@@ -123,20 +149,19 @@ peek_at_header(struct archive_read_filter *filter, int *pbits)
|
|
|
123
149
|
p = __archive_read_filter_ahead(filter, len, &avail);
|
|
124
150
|
if (p == NULL || avail == 0)
|
|
125
151
|
return (0);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
bits += 8;
|
|
129
|
-
if (p[1] != 0213)
|
|
130
|
-
return (0);
|
|
131
|
-
bits += 8;
|
|
132
|
-
if (p[2] != 8) /* We only support deflation. */
|
|
152
|
+
/* We only support deflation- third byte must be 0x08. */
|
|
153
|
+
if (memcmp(p, "\x1F\x8B\x08", 3) != 0)
|
|
133
154
|
return (0);
|
|
134
|
-
bits +=
|
|
155
|
+
bits += 24;
|
|
135
156
|
if ((p[3] & 0xE0)!= 0) /* No reserved flags set. */
|
|
136
157
|
return (0);
|
|
137
158
|
bits += 3;
|
|
138
159
|
header_flags = p[3];
|
|
139
|
-
/* Bytes 4-7 are mod time. */
|
|
160
|
+
/* Bytes 4-7 are mod time in little endian. */
|
|
161
|
+
#ifdef HAVE_ZLIB_H
|
|
162
|
+
if (state)
|
|
163
|
+
state->mtime = archive_le32dec(p + 4);
|
|
164
|
+
#endif
|
|
140
165
|
/* Byte 8 is deflate flags. */
|
|
141
166
|
/* XXXX TODO: return deflate flags back to consume_header for use
|
|
142
167
|
in initializing the decompressor. */
|
|
@@ -153,6 +178,9 @@ peek_at_header(struct archive_read_filter *filter, int *pbits)
|
|
|
153
178
|
|
|
154
179
|
/* Null-terminated optional filename. */
|
|
155
180
|
if (header_flags & 8) {
|
|
181
|
+
#ifdef HAVE_ZLIB_H
|
|
182
|
+
ssize_t file_start = len;
|
|
183
|
+
#endif
|
|
156
184
|
do {
|
|
157
185
|
++len;
|
|
158
186
|
if (avail < len)
|
|
@@ -161,6 +189,14 @@ peek_at_header(struct archive_read_filter *filter, int *pbits)
|
|
|
161
189
|
if (p == NULL)
|
|
162
190
|
return (0);
|
|
163
191
|
} while (p[len - 1] != 0);
|
|
192
|
+
|
|
193
|
+
#ifdef HAVE_ZLIB_H
|
|
194
|
+
if (state) {
|
|
195
|
+
/* Reset the name in case of repeat header reads. */
|
|
196
|
+
free(state->name);
|
|
197
|
+
state->name = strdup((const char *)&p[file_start]);
|
|
198
|
+
}
|
|
199
|
+
#endif
|
|
164
200
|
}
|
|
165
201
|
|
|
166
202
|
/* Null-terminated optional comment. */
|
|
@@ -206,17 +242,16 @@ gzip_bidder_bid(struct archive_read_filter_bidder *self,
|
|
|
206
242
|
|
|
207
243
|
(void)self; /* UNUSED */
|
|
208
244
|
|
|
209
|
-
if (peek_at_header(filter, &bits_checked))
|
|
245
|
+
if (peek_at_header(filter, &bits_checked, NULL))
|
|
210
246
|
return (bits_checked);
|
|
211
247
|
return (0);
|
|
212
248
|
}
|
|
213
249
|
|
|
214
|
-
|
|
215
250
|
#ifndef HAVE_ZLIB_H
|
|
216
251
|
|
|
217
252
|
/*
|
|
218
253
|
* If we don't have the library on this system, we can't do the
|
|
219
|
-
* decompression directly. We can, however, try to run
|
|
254
|
+
* decompression directly. We can, however, try to run "gzip -d"
|
|
220
255
|
* in case that's available.
|
|
221
256
|
*/
|
|
222
257
|
static int
|
|
@@ -224,17 +259,44 @@ gzip_bidder_init(struct archive_read_filter *self)
|
|
|
224
259
|
{
|
|
225
260
|
int r;
|
|
226
261
|
|
|
227
|
-
r = __archive_read_program(self, "
|
|
262
|
+
r = __archive_read_program(self, "gzip -d");
|
|
228
263
|
/* Note: We set the format here even if __archive_read_program()
|
|
229
264
|
* above fails. We do, after all, know what the format is
|
|
230
265
|
* even if we weren't able to read it. */
|
|
231
|
-
self->code =
|
|
266
|
+
self->code = ARCHIVE_FILTER_GZIP;
|
|
232
267
|
self->name = "gzip";
|
|
233
268
|
return (r);
|
|
234
269
|
}
|
|
235
270
|
|
|
236
271
|
#else
|
|
237
272
|
|
|
273
|
+
static int
|
|
274
|
+
gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry)
|
|
275
|
+
{
|
|
276
|
+
struct private_data *state;
|
|
277
|
+
|
|
278
|
+
state = (struct private_data *)self->data;
|
|
279
|
+
|
|
280
|
+
/* A mtime of 0 is considered invalid/missing. */
|
|
281
|
+
if (state->mtime != 0)
|
|
282
|
+
archive_entry_set_mtime(entry, state->mtime, 0);
|
|
283
|
+
|
|
284
|
+
/* If the name is available, extract it. */
|
|
285
|
+
if (state->name)
|
|
286
|
+
archive_entry_set_pathname(entry, state->name);
|
|
287
|
+
|
|
288
|
+
return (ARCHIVE_OK);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
static const struct archive_read_filter_vtable
|
|
292
|
+
gzip_reader_vtable = {
|
|
293
|
+
.read = gzip_filter_read,
|
|
294
|
+
.close = gzip_filter_close,
|
|
295
|
+
#ifdef HAVE_ZLIB_H
|
|
296
|
+
.read_header = gzip_read_header,
|
|
297
|
+
#endif
|
|
298
|
+
};
|
|
299
|
+
|
|
238
300
|
/*
|
|
239
301
|
* Initialize the filter object.
|
|
240
302
|
*/
|
|
@@ -245,7 +307,7 @@ gzip_bidder_init(struct archive_read_filter *self)
|
|
|
245
307
|
static const size_t out_block_size = 64 * 1024;
|
|
246
308
|
void *out_block;
|
|
247
309
|
|
|
248
|
-
self->code =
|
|
310
|
+
self->code = ARCHIVE_FILTER_GZIP;
|
|
249
311
|
self->name = "gzip";
|
|
250
312
|
|
|
251
313
|
state = (struct private_data *)calloc(sizeof(*state), 1);
|
|
@@ -261,9 +323,7 @@ gzip_bidder_init(struct archive_read_filter *self)
|
|
|
261
323
|
self->data = state;
|
|
262
324
|
state->out_block_size = out_block_size;
|
|
263
325
|
state->out_block = out_block;
|
|
264
|
-
self->
|
|
265
|
-
self->skip = NULL; /* not supported */
|
|
266
|
-
self->close = gzip_filter_close;
|
|
326
|
+
self->vtable = &gzip_reader_vtable;
|
|
267
327
|
|
|
268
328
|
state->in_stream = 0; /* We're not actually within a stream yet. */
|
|
269
329
|
|
|
@@ -281,7 +341,7 @@ consume_header(struct archive_read_filter *self)
|
|
|
281
341
|
state = (struct private_data *)self->data;
|
|
282
342
|
|
|
283
343
|
/* If this is a real header, consume it. */
|
|
284
|
-
len = peek_at_header(self->upstream, NULL);
|
|
344
|
+
len = peek_at_header(self->upstream, NULL, state);
|
|
285
345
|
if (len == 0)
|
|
286
346
|
return (ARCHIVE_EOF);
|
|
287
347
|
__archive_read_filter_consume(self->upstream, len);
|
|
@@ -292,7 +352,7 @@ consume_header(struct archive_read_filter *self)
|
|
|
292
352
|
/* Initialize compression library. */
|
|
293
353
|
state->stream.next_in = (unsigned char *)(uintptr_t)
|
|
294
354
|
__archive_read_filter_ahead(self->upstream, 1, &avail);
|
|
295
|
-
state->stream.avail_in = avail;
|
|
355
|
+
state->stream.avail_in = (uInt)avail;
|
|
296
356
|
ret = inflateInit2(&(state->stream),
|
|
297
357
|
-15 /* Don't check for zlib header */);
|
|
298
358
|
|
|
@@ -366,14 +426,14 @@ gzip_filter_read(struct archive_read_filter *self, const void **p)
|
|
|
366
426
|
{
|
|
367
427
|
struct private_data *state;
|
|
368
428
|
size_t decompressed;
|
|
369
|
-
ssize_t avail_in;
|
|
429
|
+
ssize_t avail_in, max_in;
|
|
370
430
|
int ret;
|
|
371
431
|
|
|
372
432
|
state = (struct private_data *)self->data;
|
|
373
433
|
|
|
374
434
|
/* Empty our output buffer. */
|
|
375
435
|
state->stream.next_out = state->out_block;
|
|
376
|
-
state->stream.avail_out = state->out_block_size;
|
|
436
|
+
state->stream.avail_out = (uInt)state->out_block_size;
|
|
377
437
|
|
|
378
438
|
/* Try to fill the output buffer. */
|
|
379
439
|
while (state->stream.avail_out > 0 && !state->eof) {
|
|
@@ -394,9 +454,19 @@ gzip_filter_read(struct archive_read_filter *self, const void **p)
|
|
|
394
454
|
* it so, hence this ugly cast. */
|
|
395
455
|
state->stream.next_in = (unsigned char *)(uintptr_t)
|
|
396
456
|
__archive_read_filter_ahead(self->upstream, 1, &avail_in);
|
|
397
|
-
if (state->stream.next_in == NULL)
|
|
457
|
+
if (state->stream.next_in == NULL) {
|
|
458
|
+
archive_set_error(&self->archive->archive,
|
|
459
|
+
ARCHIVE_ERRNO_MISC,
|
|
460
|
+
"truncated gzip input");
|
|
398
461
|
return (ARCHIVE_FATAL);
|
|
399
|
-
|
|
462
|
+
}
|
|
463
|
+
if (UINT_MAX >= SSIZE_MAX)
|
|
464
|
+
max_in = SSIZE_MAX;
|
|
465
|
+
else
|
|
466
|
+
max_in = UINT_MAX;
|
|
467
|
+
if (avail_in > max_in)
|
|
468
|
+
avail_in = max_in;
|
|
469
|
+
state->stream.avail_in = (uInt)avail_in;
|
|
400
470
|
|
|
401
471
|
/* Decompress and consume some of that data. */
|
|
402
472
|
ret = inflate(&(state->stream), 0);
|
|
@@ -457,6 +527,7 @@ gzip_filter_close(struct archive_read_filter *self)
|
|
|
457
527
|
}
|
|
458
528
|
}
|
|
459
529
|
|
|
530
|
+
free(state->name);
|
|
460
531
|
free(state->out_block);
|
|
461
532
|
free(state);
|
|
462
533
|
return (ret);
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
|
|
31
|
+
#ifdef HAVE_ERRNO_H
|
|
32
|
+
#include <errno.h>
|
|
33
|
+
#endif
|
|
34
|
+
#ifdef HAVE_STDLIB_H
|
|
35
|
+
#include <stdlib.h>
|
|
36
|
+
#endif
|
|
37
|
+
#ifdef HAVE_STRING_H
|
|
38
|
+
#include <string.h>
|
|
39
|
+
#endif
|
|
40
|
+
#ifdef HAVE_UNISTD_H
|
|
41
|
+
#include <unistd.h>
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
#include "archive.h"
|
|
45
|
+
#include "archive_private.h"
|
|
46
|
+
#include "archive_read_private.h"
|
|
47
|
+
|
|
48
|
+
#define LRZIP_HEADER_MAGIC "LRZI"
|
|
49
|
+
#define LRZIP_HEADER_MAGIC_LEN 4
|
|
50
|
+
|
|
51
|
+
static int lrzip_bidder_bid(struct archive_read_filter_bidder *,
|
|
52
|
+
struct archive_read_filter *);
|
|
53
|
+
static int lrzip_bidder_init(struct archive_read_filter *);
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
static const struct archive_read_filter_bidder_vtable
|
|
57
|
+
lrzip_bidder_vtable = {
|
|
58
|
+
.bid = lrzip_bidder_bid,
|
|
59
|
+
.init = lrzip_bidder_init,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
int
|
|
63
|
+
archive_read_support_filter_lrzip(struct archive *_a)
|
|
64
|
+
{
|
|
65
|
+
struct archive_read *a = (struct archive_read *)_a;
|
|
66
|
+
|
|
67
|
+
if (__archive_read_register_bidder(a, NULL, "lrzip",
|
|
68
|
+
&lrzip_bidder_vtable) != ARCHIVE_OK)
|
|
69
|
+
return (ARCHIVE_FATAL);
|
|
70
|
+
|
|
71
|
+
/* This filter always uses an external program. */
|
|
72
|
+
archive_set_error(_a, ARCHIVE_ERRNO_MISC,
|
|
73
|
+
"Using external lrzip program for lrzip decompression");
|
|
74
|
+
return (ARCHIVE_WARN);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* Bidder just verifies the header and returns the number of verified bits.
|
|
79
|
+
*/
|
|
80
|
+
static int
|
|
81
|
+
lrzip_bidder_bid(struct archive_read_filter_bidder *self,
|
|
82
|
+
struct archive_read_filter *filter)
|
|
83
|
+
{
|
|
84
|
+
const unsigned char *p;
|
|
85
|
+
ssize_t avail, len;
|
|
86
|
+
int i;
|
|
87
|
+
|
|
88
|
+
(void)self; /* UNUSED */
|
|
89
|
+
/* Start by looking at the first six bytes of the header, which
|
|
90
|
+
* is all fixed layout. */
|
|
91
|
+
len = 6;
|
|
92
|
+
p = __archive_read_filter_ahead(filter, len, &avail);
|
|
93
|
+
if (p == NULL || avail == 0)
|
|
94
|
+
return (0);
|
|
95
|
+
|
|
96
|
+
if (memcmp(p, LRZIP_HEADER_MAGIC, LRZIP_HEADER_MAGIC_LEN))
|
|
97
|
+
return (0);
|
|
98
|
+
|
|
99
|
+
/* current major version is always 0, verify this */
|
|
100
|
+
if (p[LRZIP_HEADER_MAGIC_LEN])
|
|
101
|
+
return 0;
|
|
102
|
+
/* support only v0.6+ lrzip for sanity */
|
|
103
|
+
i = p[LRZIP_HEADER_MAGIC_LEN + 1];
|
|
104
|
+
if ((i < 6) || (i > 10))
|
|
105
|
+
return 0;
|
|
106
|
+
|
|
107
|
+
return (int)len;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static int
|
|
111
|
+
lrzip_bidder_init(struct archive_read_filter *self)
|
|
112
|
+
{
|
|
113
|
+
int r;
|
|
114
|
+
|
|
115
|
+
r = __archive_read_program(self, "lrzip -d -q");
|
|
116
|
+
/* Note: We set the format here even if __archive_read_program()
|
|
117
|
+
* above fails. We do, after all, know what the format is
|
|
118
|
+
* even if we weren't able to read it. */
|
|
119
|
+
self->code = ARCHIVE_FILTER_LRZIP;
|
|
120
|
+
self->name = "lrzip";
|
|
121
|
+
return (r);
|
|
122
|
+
}
|