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.
- checksums.yaml +5 -5
- 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_internal.h +0 -1
- 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 +244 -137
- 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
@@ -0,0 +1,60 @@
|
|
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
|
+
__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.61 2008/05/26 17:00:22 kientzle Exp $");
|
28
|
+
|
29
|
+
#ifdef HAVE_ERRNO_H
|
30
|
+
#include <errno.h>
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#include "archive.h"
|
34
|
+
#include "archive_entry.h"
|
35
|
+
#include "archive_private.h"
|
36
|
+
#include "archive_read_private.h"
|
37
|
+
|
38
|
+
int
|
39
|
+
archive_read_extract(struct archive *_a, struct archive_entry *entry, int flags)
|
40
|
+
{
|
41
|
+
struct archive_read_extract *extract;
|
42
|
+
struct archive_read * a = (struct archive_read *)_a;
|
43
|
+
|
44
|
+
extract = __archive_read_get_extract(a);
|
45
|
+
if (extract == NULL)
|
46
|
+
return (ARCHIVE_FATAL);
|
47
|
+
|
48
|
+
/* If we haven't initialized the archive_write_disk object, do it now. */
|
49
|
+
if (extract->ad == NULL) {
|
50
|
+
extract->ad = archive_write_disk_new();
|
51
|
+
if (extract->ad == NULL) {
|
52
|
+
archive_set_error(&a->archive, ENOMEM, "Can't extract");
|
53
|
+
return (ARCHIVE_FATAL);
|
54
|
+
}
|
55
|
+
archive_write_disk_set_standard_lookup(extract->ad);
|
56
|
+
}
|
57
|
+
|
58
|
+
archive_write_disk_set_options(extract->ad, flags);
|
59
|
+
return (archive_read_extract2(&a->archive, entry, extract->ad));
|
60
|
+
}
|
@@ -32,63 +32,50 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.61 2008/05/26
|
|
32
32
|
#ifdef HAVE_ERRNO_H
|
33
33
|
#include <errno.h>
|
34
34
|
#endif
|
35
|
-
#ifdef HAVE_STDLIB_H
|
36
|
-
#include <stdlib.h>
|
37
|
-
#endif
|
38
35
|
#ifdef HAVE_STRING_H
|
39
36
|
#include <string.h>
|
40
37
|
#endif
|
41
38
|
|
42
39
|
#include "archive.h"
|
40
|
+
#include "archive_entry.h"
|
43
41
|
#include "archive_private.h"
|
44
42
|
#include "archive_read_private.h"
|
45
|
-
#include "archive_write_disk_private.h"
|
46
|
-
|
47
|
-
struct extract {
|
48
|
-
struct archive *ad; /* archive_write_disk object */
|
49
|
-
|
50
|
-
/* Progress function invoked during extract. */
|
51
|
-
void (*extract_progress)(void *);
|
52
|
-
void *extract_progress_user_data;
|
53
|
-
};
|
54
43
|
|
55
|
-
static int archive_read_extract_cleanup(struct archive_read *);
|
56
44
|
static int copy_data(struct archive *ar, struct archive *aw);
|
57
|
-
static
|
45
|
+
static int archive_read_extract_cleanup(struct archive_read *);
|
58
46
|
|
59
|
-
|
60
|
-
|
47
|
+
|
48
|
+
/* Retrieve an extract object without initialising the associated
|
49
|
+
* archive_write_disk object.
|
50
|
+
*/
|
51
|
+
struct archive_read_extract *
|
52
|
+
__archive_read_get_extract(struct archive_read *a)
|
61
53
|
{
|
62
|
-
/* If we haven't initialized, do it now. */
|
63
|
-
/* This also sets up a lot of global state. */
|
64
54
|
if (a->extract == NULL) {
|
65
|
-
a->extract = (struct
|
55
|
+
a->extract = (struct archive_read_extract *)calloc(1, sizeof(*a->extract));
|
66
56
|
if (a->extract == NULL) {
|
67
57
|
archive_set_error(&a->archive, ENOMEM, "Can't extract");
|
68
58
|
return (NULL);
|
69
59
|
}
|
70
|
-
memset(a->extract, 0, sizeof(*a->extract));
|
71
|
-
a->extract->ad = archive_write_disk_new();
|
72
|
-
if (a->extract->ad == NULL) {
|
73
|
-
archive_set_error(&a->archive, ENOMEM, "Can't extract");
|
74
|
-
return (NULL);
|
75
|
-
}
|
76
|
-
archive_write_disk_set_standard_lookup(a->extract->ad);
|
77
60
|
a->cleanup_archive_extract = archive_read_extract_cleanup;
|
78
61
|
}
|
79
62
|
return (a->extract);
|
80
63
|
}
|
81
64
|
|
82
|
-
|
83
|
-
|
65
|
+
/*
|
66
|
+
* Cleanup function for archive_extract.
|
67
|
+
*/
|
68
|
+
static int
|
69
|
+
archive_read_extract_cleanup(struct archive_read *a)
|
84
70
|
{
|
85
|
-
|
71
|
+
int ret = ARCHIVE_OK;
|
86
72
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
73
|
+
if (a->extract->ad != NULL) {
|
74
|
+
ret = archive_write_free(a->extract->ad);
|
75
|
+
}
|
76
|
+
free(a->extract);
|
77
|
+
a->extract = NULL;
|
78
|
+
return (ret);
|
92
79
|
}
|
93
80
|
|
94
81
|
int
|
@@ -99,15 +86,16 @@ archive_read_extract2(struct archive *_a, struct archive_entry *entry,
|
|
99
86
|
int r, r2;
|
100
87
|
|
101
88
|
/* Set up for this particular entry. */
|
102
|
-
|
103
|
-
|
89
|
+
if (a->skip_file_set)
|
90
|
+
archive_write_disk_set_skip_file(ad,
|
91
|
+
a->skip_file_dev, a->skip_file_ino);
|
104
92
|
r = archive_write_header(ad, entry);
|
105
93
|
if (r < ARCHIVE_WARN)
|
106
94
|
r = ARCHIVE_WARN;
|
107
95
|
if (r != ARCHIVE_OK)
|
108
96
|
/* If _write_header failed, copy the error. */
|
109
97
|
archive_copy_error(&a->archive, ad);
|
110
|
-
else
|
98
|
+
else if (!archive_entry_size_is_set(entry) || archive_entry_size(entry) > 0)
|
111
99
|
/* Otherwise, pour data into the entry. */
|
112
100
|
r = copy_data(_a, ad);
|
113
101
|
r2 = archive_write_finish_entry(ad);
|
@@ -115,7 +103,7 @@ archive_read_extract2(struct archive *_a, struct archive_entry *entry,
|
|
115
103
|
r2 = ARCHIVE_WARN;
|
116
104
|
/* Use the first message. */
|
117
105
|
if (r2 != ARCHIVE_OK && r == ARCHIVE_OK)
|
118
|
-
|
106
|
+
archive_copy_error(&a->archive, ad);
|
119
107
|
/* Use the worst error return. */
|
120
108
|
if (r2 < r)
|
121
109
|
r = r2;
|
@@ -127,7 +115,7 @@ archive_read_extract_set_progress_callback(struct archive *_a,
|
|
127
115
|
void (*progress_func)(void *), void *user_data)
|
128
116
|
{
|
129
117
|
struct archive_read *a = (struct archive_read *)_a;
|
130
|
-
struct
|
118
|
+
struct archive_read_extract *extract = __archive_read_get_extract(a);
|
131
119
|
if (extract != NULL) {
|
132
120
|
extract->extract_progress = progress_func;
|
133
121
|
extract->extract_progress_user_data = user_data;
|
@@ -137,23 +125,25 @@ archive_read_extract_set_progress_callback(struct archive *_a,
|
|
137
125
|
static int
|
138
126
|
copy_data(struct archive *ar, struct archive *aw)
|
139
127
|
{
|
140
|
-
|
128
|
+
int64_t offset;
|
141
129
|
const void *buff;
|
142
|
-
struct
|
130
|
+
struct archive_read_extract *extract;
|
143
131
|
size_t size;
|
144
132
|
int r;
|
145
133
|
|
146
|
-
extract =
|
134
|
+
extract = __archive_read_get_extract((struct archive_read *)ar);
|
135
|
+
if (extract == NULL)
|
136
|
+
return (ARCHIVE_FATAL);
|
147
137
|
for (;;) {
|
148
138
|
r = archive_read_data_block(ar, &buff, &size, &offset);
|
149
139
|
if (r == ARCHIVE_EOF)
|
150
140
|
return (ARCHIVE_OK);
|
151
141
|
if (r != ARCHIVE_OK)
|
152
142
|
return (r);
|
153
|
-
r = archive_write_data_block(aw, buff, size, offset);
|
143
|
+
r = (int)archive_write_data_block(aw, buff, size, offset);
|
154
144
|
if (r < ARCHIVE_WARN)
|
155
145
|
r = ARCHIVE_WARN;
|
156
|
-
if (r
|
146
|
+
if (r < ARCHIVE_OK) {
|
157
147
|
archive_set_error(ar, archive_errno(aw),
|
158
148
|
"%s", archive_error_string(aw));
|
159
149
|
return (r);
|
@@ -163,20 +153,3 @@ copy_data(struct archive *ar, struct archive *aw)
|
|
163
153
|
(extract->extract_progress_user_data);
|
164
154
|
}
|
165
155
|
}
|
166
|
-
|
167
|
-
/*
|
168
|
-
* Cleanup function for archive_extract.
|
169
|
-
*/
|
170
|
-
static int
|
171
|
-
archive_read_extract_cleanup(struct archive_read *a)
|
172
|
-
{
|
173
|
-
int ret = ARCHIVE_OK;
|
174
|
-
|
175
|
-
#if ARCHIVE_API_VERSION > 1
|
176
|
-
ret =
|
177
|
-
#endif
|
178
|
-
archive_write_finish(a->extract->ad);
|
179
|
-
free(a->extract);
|
180
|
-
a->extract = NULL;
|
181
|
-
return (ret);
|
182
|
-
}
|
@@ -53,17 +53,14 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_open_fd.c 201103 2009-12-28
|
|
53
53
|
struct read_fd_data {
|
54
54
|
int fd;
|
55
55
|
size_t block_size;
|
56
|
-
char
|
56
|
+
char use_lseek;
|
57
57
|
void *buffer;
|
58
58
|
};
|
59
59
|
|
60
60
|
static int file_close(struct archive *, void *);
|
61
61
|
static ssize_t file_read(struct archive *, void *, const void **buff);
|
62
|
-
|
63
|
-
static
|
64
|
-
#else
|
65
|
-
static off_t file_skip(struct archive *, void *, off_t request);
|
66
|
-
#endif
|
62
|
+
static int64_t file_seek(struct archive *, void *, int64_t request, int);
|
63
|
+
static int64_t file_skip(struct archive *, void *, int64_t request);
|
67
64
|
|
68
65
|
int
|
69
66
|
archive_read_open_fd(struct archive *a, int fd, size_t block_size)
|
@@ -78,7 +75,7 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size)
|
|
78
75
|
return (ARCHIVE_FATAL);
|
79
76
|
}
|
80
77
|
|
81
|
-
mine = (struct read_fd_data *)
|
78
|
+
mine = (struct read_fd_data *)calloc(1, sizeof(*mine));
|
82
79
|
b = malloc(block_size);
|
83
80
|
if (mine == NULL || b == NULL) {
|
84
81
|
archive_set_error(a, ENOMEM, "No memory");
|
@@ -98,15 +95,18 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size)
|
|
98
95
|
*/
|
99
96
|
if (S_ISREG(st.st_mode)) {
|
100
97
|
archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
|
101
|
-
mine->
|
102
|
-
}
|
103
|
-
mine->can_skip = 0;
|
98
|
+
mine->use_lseek = 1;
|
99
|
+
}
|
104
100
|
#if defined(__CYGWIN__) || defined(_WIN32)
|
105
101
|
setmode(mine->fd, O_BINARY);
|
106
102
|
#endif
|
107
103
|
|
108
|
-
|
109
|
-
|
104
|
+
archive_read_set_read_callback(a, file_read);
|
105
|
+
archive_read_set_skip_callback(a, file_skip);
|
106
|
+
archive_read_set_seek_callback(a, file_seek);
|
107
|
+
archive_read_set_close_callback(a, file_close);
|
108
|
+
archive_read_set_callback_data(a, mine);
|
109
|
+
return (archive_read_open1(a));
|
110
110
|
}
|
111
111
|
|
112
112
|
static ssize_t
|
@@ -121,61 +121,82 @@ file_read(struct archive *a, void *client_data, const void **buff)
|
|
121
121
|
if (bytes_read < 0) {
|
122
122
|
if (errno == EINTR)
|
123
123
|
continue;
|
124
|
-
archive_set_error(a, errno, "Error reading fd %d",
|
124
|
+
archive_set_error(a, errno, "Error reading fd %d",
|
125
|
+
mine->fd);
|
125
126
|
}
|
126
127
|
return (bytes_read);
|
127
128
|
}
|
128
129
|
}
|
129
130
|
|
130
|
-
|
131
|
-
|
132
|
-
file_skip(struct archive *a, void *client_data, size_t request)
|
133
|
-
#else
|
134
|
-
static off_t
|
135
|
-
file_skip(struct archive *a, void *client_data, off_t request)
|
136
|
-
#endif
|
131
|
+
static int64_t
|
132
|
+
file_skip(struct archive *a, void *client_data, int64_t request)
|
137
133
|
{
|
138
134
|
struct read_fd_data *mine = (struct read_fd_data *)client_data;
|
139
|
-
|
135
|
+
int64_t skip = request;
|
136
|
+
int64_t old_offset, new_offset;
|
137
|
+
int skip_bits = sizeof(skip) * 8 - 1; /* off_t is a signed type. */
|
140
138
|
|
141
|
-
if (!mine->
|
139
|
+
if (!mine->use_lseek)
|
142
140
|
return (0);
|
143
141
|
|
142
|
+
/* Reduce a request that would overflow the 'skip' variable. */
|
143
|
+
if (sizeof(request) > sizeof(skip)) {
|
144
|
+
int64_t max_skip =
|
145
|
+
(((int64_t)1 << (skip_bits - 1)) - 1) * 2 + 1;
|
146
|
+
if (request > max_skip)
|
147
|
+
skip = max_skip;
|
148
|
+
}
|
149
|
+
|
144
150
|
/* Reduce request to the next smallest multiple of block_size */
|
145
151
|
request = (request / mine->block_size) * mine->block_size;
|
146
152
|
if (request == 0)
|
147
153
|
return (0);
|
148
154
|
|
155
|
+
if (((old_offset = lseek(mine->fd, 0, SEEK_CUR)) >= 0) &&
|
156
|
+
((new_offset = lseek(mine->fd, skip, SEEK_CUR)) >= 0))
|
157
|
+
return (new_offset - old_offset);
|
158
|
+
|
159
|
+
/* If seek failed once, it will probably fail again. */
|
160
|
+
mine->use_lseek = 0;
|
161
|
+
|
162
|
+
/* Let libarchive recover with read+discard. */
|
163
|
+
if (errno == ESPIPE)
|
164
|
+
return (0);
|
165
|
+
|
149
166
|
/*
|
150
|
-
*
|
151
|
-
*
|
167
|
+
* There's been an error other than ESPIPE. This is most
|
168
|
+
* likely caused by a programmer error (too large request)
|
169
|
+
* or a corrupted archive file.
|
152
170
|
*/
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
171
|
+
archive_set_error(a, errno, "Error seeking");
|
172
|
+
return (-1);
|
173
|
+
}
|
174
|
+
|
175
|
+
/*
|
176
|
+
* TODO: Store the offset and use it in the read callback.
|
177
|
+
*/
|
178
|
+
static int64_t
|
179
|
+
file_seek(struct archive *a, void *client_data, int64_t request, int whence)
|
180
|
+
{
|
181
|
+
struct read_fd_data *mine = (struct read_fd_data *)client_data;
|
182
|
+
int64_t r;
|
183
|
+
|
184
|
+
/* We use off_t here because lseek() is declared that way. */
|
185
|
+
/* See above for notes about when off_t is less than 64 bits. */
|
186
|
+
r = lseek(mine->fd, request, whence);
|
187
|
+
if (r >= 0)
|
188
|
+
return r;
|
189
|
+
|
190
|
+
if (errno == ESPIPE) {
|
191
|
+
archive_set_error(a, errno,
|
192
|
+
"A file descriptor(%d) is not seekable(PIPE)", mine->fd);
|
193
|
+
return (ARCHIVE_FAILED);
|
194
|
+
} else {
|
195
|
+
/* If the input is corrupted or truncated, fail. */
|
196
|
+
archive_set_error(a, errno,
|
197
|
+
"Error seeking in a file descriptor(%d)", mine->fd);
|
198
|
+
return (ARCHIVE_FATAL);
|
177
199
|
}
|
178
|
-
return (new_offset - old_offset);
|
179
200
|
}
|
180
201
|
|
181
202
|
static int
|
@@ -59,11 +59,7 @@ struct read_FILE_data {
|
|
59
59
|
|
60
60
|
static int file_close(struct archive *, void *);
|
61
61
|
static ssize_t file_read(struct archive *, void *, const void **buff);
|
62
|
-
|
63
|
-
static ssize_t file_skip(struct archive *, void *, size_t request);
|
64
|
-
#else
|
65
|
-
static off_t file_skip(struct archive *, void *, off_t request);
|
66
|
-
#endif
|
62
|
+
static int64_t file_skip(struct archive *, void *, int64_t request);
|
67
63
|
|
68
64
|
int
|
69
65
|
archive_read_open_FILE(struct archive *a, FILE *f)
|
@@ -87,8 +83,9 @@ archive_read_open_FILE(struct archive *a, FILE *f)
|
|
87
83
|
mine->f = f;
|
88
84
|
/*
|
89
85
|
* If we can't fstat() the file, it may just be that it's not
|
90
|
-
* a file. (FILE * objects can wrap
|
91
|
-
* streams
|
86
|
+
* a file. (On some platforms, FILE * objects can wrap I/O
|
87
|
+
* streams that don't support fileno()). As a result, fileno()
|
88
|
+
* should be used cautiously.)
|
92
89
|
*/
|
93
90
|
if (fstat(fileno(mine->f), &st) == 0 && S_ISREG(st.st_mode)) {
|
94
91
|
archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
|
@@ -101,33 +98,39 @@ archive_read_open_FILE(struct archive *a, FILE *f)
|
|
101
98
|
setmode(fileno(mine->f), O_BINARY);
|
102
99
|
#endif
|
103
100
|
|
104
|
-
|
105
|
-
|
101
|
+
archive_read_set_read_callback(a, file_read);
|
102
|
+
archive_read_set_skip_callback(a, file_skip);
|
103
|
+
archive_read_set_close_callback(a, file_close);
|
104
|
+
archive_read_set_callback_data(a, mine);
|
105
|
+
return (archive_read_open1(a));
|
106
106
|
}
|
107
107
|
|
108
108
|
static ssize_t
|
109
109
|
file_read(struct archive *a, void *client_data, const void **buff)
|
110
110
|
{
|
111
111
|
struct read_FILE_data *mine = (struct read_FILE_data *)client_data;
|
112
|
-
|
112
|
+
size_t bytes_read;
|
113
113
|
|
114
114
|
*buff = mine->buffer;
|
115
115
|
bytes_read = fread(mine->buffer, 1, mine->block_size, mine->f);
|
116
|
-
if (bytes_read <
|
116
|
+
if (bytes_read < mine->block_size && ferror(mine->f)) {
|
117
117
|
archive_set_error(a, errno, "Error reading file");
|
118
118
|
}
|
119
119
|
return (bytes_read);
|
120
120
|
}
|
121
121
|
|
122
|
-
|
123
|
-
|
124
|
-
file_skip(struct archive *a, void *client_data, size_t request)
|
125
|
-
#else
|
126
|
-
static off_t
|
127
|
-
file_skip(struct archive *a, void *client_data, off_t request)
|
128
|
-
#endif
|
122
|
+
static int64_t
|
123
|
+
file_skip(struct archive *a, void *client_data, int64_t request)
|
129
124
|
{
|
130
125
|
struct read_FILE_data *mine = (struct read_FILE_data *)client_data;
|
126
|
+
#if HAVE_FSEEKO
|
127
|
+
off_t skip = (off_t)request;
|
128
|
+
#elif HAVE__FSEEKI64
|
129
|
+
int64_t skip = request;
|
130
|
+
#else
|
131
|
+
long skip = (long)request;
|
132
|
+
#endif
|
133
|
+
int skip_bits = sizeof(skip) * 8 - 1;
|
131
134
|
|
132
135
|
(void)a; /* UNUSED */
|
133
136
|
|
@@ -140,10 +143,23 @@ file_skip(struct archive *a, void *client_data, off_t request)
|
|
140
143
|
if (request == 0)
|
141
144
|
return (0);
|
142
145
|
|
143
|
-
|
144
|
-
if (
|
146
|
+
/* If request is too big for a long or an off_t, reduce it. */
|
147
|
+
if (sizeof(request) > sizeof(skip)) {
|
148
|
+
int64_t max_skip =
|
149
|
+
(((int64_t)1 << (skip_bits - 1)) - 1) * 2 + 1;
|
150
|
+
if (request > max_skip)
|
151
|
+
skip = max_skip;
|
152
|
+
}
|
153
|
+
|
154
|
+
#ifdef __ANDROID__
|
155
|
+
/* fileno() isn't safe on all platforms ... see above. */
|
156
|
+
if (lseek(fileno(mine->f), skip, SEEK_CUR) < 0)
|
157
|
+
#elif HAVE_FSEEKO
|
158
|
+
if (fseeko(mine->f, skip, SEEK_CUR) != 0)
|
159
|
+
#elif HAVE__FSEEKI64
|
160
|
+
if (_fseeki64(mine->f, skip, SEEK_CUR) != 0)
|
145
161
|
#else
|
146
|
-
if (fseek(mine->f,
|
162
|
+
if (fseek(mine->f, skip, SEEK_CUR) != 0)
|
147
163
|
#endif
|
148
164
|
{
|
149
165
|
mine->can_skip = 0;
|
@@ -158,8 +174,7 @@ file_close(struct archive *a, void *client_data)
|
|
158
174
|
struct read_FILE_data *mine = (struct read_FILE_data *)client_data;
|
159
175
|
|
160
176
|
(void)a; /* UNUSED */
|
161
|
-
|
162
|
-
free(mine->buffer);
|
177
|
+
free(mine->buffer);
|
163
178
|
free(mine);
|
164
179
|
return (ARCHIVE_OK);
|
165
180
|
}
|