Don't hose up perms for files that happen to have symlinks
authorEric Andersen <andersen@codepoet.org>
Sun, 21 Dec 2003 08:59:24 +0000 (08:59 -0000)
committerEric Andersen <andersen@codepoet.org>
Sun, 21 Dec 2003 08:59:24 +0000 (08:59 -0000)
in the tarball that point to them.
 -Erik

archival/libunarchive/data_extract_all.c

index b77cd11aec9ecf0cf948408c9324bd21458ad44b..4cff24339a23da31c728303fecca0a46c7bc683d 100644 (file)
@@ -111,8 +111,10 @@ extern void data_extract_all(archive_handle_t *archive_handle)
                }
        }
 
-       chown(file_header->name, file_header->uid, file_header->gid);
-       chmod(file_header->name, file_header->mode);
+       lchown(file_header->name, file_header->uid, file_header->gid);
+       if ((file_header->mode & S_IFMT) != S_IFLNK) {
+               chmod(file_header->name, file_header->mode);
+       }
 
        if (archive_handle->flags & ARCHIVE_PRESERVE_DATE) {
                struct utimbuf t;