From bca59216f7ffb256eb48561b5cfc552166145966 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Sat, 6 Mar 2004 01:05:32 +0000 Subject: [PATCH] Add ARCHIVE_EXTRACT_UNLINK option to permit clients to control how archive_extract handles pre-existing files. (Not implemented yet, but documented.) --- lib/libarchive/archive.h | 1 + lib/libarchive/archive.h.in | 1 + lib/libarchive/archive_read.3 | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/lib/libarchive/archive.h b/lib/libarchive/archive.h index 54fafcba9bb..6a3b92e8a83 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 54fafcba9bb..6a3b92e8a83 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 c2d2c3d747d..c5bd04e716c 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 -- 2.45.2