diff options
author | Martin Matuška <martin@matuska.org> | 2021-11-21 11:32:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-21 11:32:19 +0100 |
commit | 4f598ce28aa370e945103eb9a17f03c7c820c1e8 (patch) | |
tree | b236dccabee9d88383dc934e7e719105d84095fe /libarchive/archive_read_disk_windows.c | |
parent | 6795d0255584c863d7f5ceb3038e53c9ad3f135a (diff) | |
parent | 1833a6c4d40a57f5782ac2f96b375923c51024ea (diff) | |
download | libarchive-4f598ce28aa370e945103eb9a17f03c7c820c1e8.tar.gz |
Merge pull request #1614 from diabonas/add-no-read-sparse
Add ARCHIVE_READDISK_NO_SPARSE/--no-read-sparse to improve reproducibility of generated archives
Diffstat (limited to 'libarchive/archive_read_disk_windows.c')
-rw-r--r-- | libarchive/archive_read_disk_windows.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libarchive/archive_read_disk_windows.c b/libarchive/archive_read_disk_windows.c index 4838969d..7e9ea4f0 100644 --- a/libarchive/archive_read_disk_windows.c +++ b/libarchive/archive_read_disk_windows.c @@ -1090,9 +1090,11 @@ next_entry(struct archive_read_disk *a, struct tree *t, } /* Find sparse data from the disk. */ - if (archive_entry_hardlink(entry) == NULL && - (st->dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0) - r = setup_sparse_from_disk(a, entry, t->entry_fh); + if ((a->flags & ARCHIVE_READDISK_NO_SPARSE) == 0) { + if (archive_entry_hardlink(entry) == NULL && + (st->dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0) + r = setup_sparse_from_disk(a, entry, t->entry_fh); + } } return (r); } @@ -2371,9 +2373,11 @@ archive_read_disk_entry_from_file(struct archive *_a, return (ARCHIVE_OK); } - r = setup_sparse_from_disk(a, entry, h); - if (fd < 0) - CloseHandle(h); + if ((a->flags & ARCHIVE_READDISK_NO_SPARSE) == 0) { + r = setup_sparse_from_disk(a, entry, h); + if (fd < 0) + CloseHandle(h); + } return (r); } |