diff options
author | kientzle <kientzle@FreeBSD.org> | 2005-09-05 10:23:55 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2005-09-05 10:23:55 +0000 |
commit | 0dbebe5f5da3f0856514bc98c955f555cd7ad0f8 (patch) | |
tree | d495126a94492cf1ae4a4509da09b4a1bf60842f /lib | |
parent | ccbd218f2dbdf7d1015f85608f7bc73616d22643 (diff) | |
download | FreeBSD-src-0dbebe5f5da3f0856514bc98c955f555cd7ad0f8.zip FreeBSD-src-0dbebe5f5da3f0856514bc98c955f555cd7ad0f8.tar.gz |
Terminate metadata restore early only on failure, not success.
In particular, this bug was preventing the restore of fflags.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libarchive/archive_read_extract.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libarchive/archive_read_extract.c b/lib/libarchive/archive_read_extract.c index eb52e8e..9e851bb 100644 --- a/lib/libarchive/archive_read_extract.c +++ b/lib/libarchive/archive_read_extract.c @@ -1054,8 +1054,10 @@ set_perm(struct archive *a, int fd, struct archive_entry *entry, */ if (!S_ISLNK(archive_entry_mode(entry))) { #ifdef HAVE_FCHMOD - if (fd >= 0 && fchmod(fd, mode) == 0) - return (ARCHIVE_OK); + if (fd >= 0 && fchmod(fd, mode) != 0) { + archive_set_error(a, errno, "Can't set permissions"); + return (ARCHIVE_WARN); + } #endif if (chmod(name, mode) != 0) { archive_set_error(a, errno, "Can't set permissions"); |