summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2004-03-06 01:05:32 +0000
committerkientzle <kientzle@FreeBSD.org>2004-03-06 01:05:32 +0000
commita96c560b594bffc7166cb1c5e63654f7399add46 (patch)
tree152c719b5ac7d877522326c6b689a8a6f2201fe9 /lib
parenteec560a7c3d39c4df33de9f491596645da8bd368 (diff)
downloadFreeBSD-src-a96c560b594bffc7166cb1c5e63654f7399add46.zip
FreeBSD-src-a96c560b594bffc7166cb1c5e63654f7399add46.tar.gz
Add ARCHIVE_EXTRACT_UNLINK option to permit clients to
control how archive_extract handles pre-existing files. (Not implemented yet, but documented.)
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive.h1
-rw-r--r--lib/libarchive/archive.h.in1
-rw-r--r--lib/libarchive/archive_read.35
3 files changed, 7 insertions, 0 deletions
diff --git a/lib/libarchive/archive.h b/lib/libarchive/archive.h
index 54fafcb..6a3b92e 100644
--- a/lib/libarchive/archive.h
+++ b/lib/libarchive/archive.h
@@ -190,6 +190,7 @@ ssize_t archive_read_data_into_fd(struct archive *, int fd);
#define ARCHIVE_EXTRACT_PERM (2) /* Default: restore perm only for reg file*/
#define ARCHIVE_EXTRACT_TIME (4) /* Default: mod time not restored */
#define ARCHIVE_EXTRACT_NO_OVERWRITE (8) /* Default: Replace files on disk */
+#define ARCHIVE_EXTRACT_UNLINK (16) /* Default: don't unlink existing files */
int archive_read_extract(struct archive *, struct archive_entry *,
int flags);
diff --git a/lib/libarchive/archive.h.in b/lib/libarchive/archive.h.in
index 54fafcb..6a3b92e 100644
--- a/lib/libarchive/archive.h.in
+++ b/lib/libarchive/archive.h.in
@@ -190,6 +190,7 @@ ssize_t archive_read_data_into_fd(struct archive *, int fd);
#define ARCHIVE_EXTRACT_PERM (2) /* Default: restore perm only for reg file*/
#define ARCHIVE_EXTRACT_TIME (4) /* Default: mod time not restored */
#define ARCHIVE_EXTRACT_NO_OVERWRITE (8) /* Default: Replace files on disk */
+#define ARCHIVE_EXTRACT_UNLINK (16) /* Default: don't unlink existing files */
int archive_read_extract(struct archive *, struct archive_entry *,
int flags);
diff --git a/lib/libarchive/archive_read.3 b/lib/libarchive/archive_read.3
index c2d2c3d..c5bd04e 100644
--- a/lib/libarchive/archive_read.3
+++ b/lib/libarchive/archive_read.3
@@ -178,6 +178,11 @@ Note that restoring of atime is not currently supported.
.It Cm ARCHIVE_EXTRACT_NO_OVERWRITE
Existing files on disk will not be overwritten.
By default, existing files are unlinked before the new entry is written.
+.It Cm ARCHIVE_EXTRACT_UNLINK
+Existing files on disk will be unlinked and recreated from scratch.
+By default, existing files are truncated and rewritten, but
+the file is not recreated.
+In particular, the default behavior does not break existing hard links.
.El
.It Fn archive_read_finish
Complete the archive, invoke the close callback, and release
OpenPOWER on IntegriCloud