diff options
author | kientzle <kientzle@FreeBSD.org> | 2004-05-27 05:02:35 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2004-05-27 05:02:35 +0000 |
commit | 812f2e1f5c817f41bd0249adc54627e2c1b07813 (patch) | |
tree | 3a88ed025e84b0746874bde11edd8e00ce951c37 /lib/libarchive/archive_private.h | |
parent | cd6cc0b3f2134221e9a61c278d55c7ce780f1ae0 (diff) | |
download | FreeBSD-src-812f2e1f5c817f41bd0249adc54627e2c1b07813.zip FreeBSD-src-812f2e1f5c817f41bd0249adc54627e2c1b07813.tar.gz |
Previously, restoring an archive with hardlinked files that had
certain flags set (e.g., schg or uappend) would fail because the flags
were restored before the hardlink was created.
To address this, I've generalized the existing machinery for deferring
directory timestamp/mode restoration and used it to defer the
restoration of highly-restrictive flags to the end of the extraction,
after any links have been created.
Pointed out by: Pawel Jakub Dawidek (pjd@)
Diffstat (limited to 'lib/libarchive/archive_private.h')
-rw-r--r-- | lib/libarchive/archive_private.h | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/lib/libarchive/archive_private.h b/lib/libarchive/archive_private.h index f3d3b87..cd5fc59 100644 --- a/lib/libarchive/archive_private.h +++ b/lib/libarchive/archive_private.h @@ -37,13 +37,6 @@ #define ARCHIVE_WRITE_MAGIC (0xb0c5c0deU) #define ARCHIVE_READ_MAGIC (0xdeb0c5U) -/* - * This is used by archive_extract to keep track of non-writable - * directories so that they can be initially restored writable, then - * fixed up at end. This also handles mtime/atime fixups. - */ -struct archive_extract_dir_entry; - struct archive { /* * The magic/state values are used to sanity-check the @@ -190,8 +183,8 @@ struct archive { /* * Various information needed by archive_extract. */ - struct archive_string extract_mkdirpath; - struct archive_extract_dir_entry *archive_extract_dir_list; + struct archive_string extract_mkdirpath; + struct archive_extract_fixup *archive_extract_fixup; void (*extract_progress)(void *); void *extract_progress_user_data; void (*cleanup_archive_extract)(struct archive *); |