]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Provide a sane default strategy for the various formats.
authorJoerg Sonnenberger <joerg.sonnenberger@gmail.com>
Sat, 20 Feb 2010 21:23:11 +0000 (16:23 -0500)
committerJoerg Sonnenberger <joerg.sonnenberger@gmail.com>
Sat, 20 Feb 2010 21:23:11 +0000 (16:23 -0500)
zip and ar don't do hardlinks, so work like old-cpio.
shar is like tar.
Default to old-cpio as fallback as it is the least problematic of the
three options.

SVN-Revision: 1926

libarchive/archive_entry_link_resolver.c

index 3b13e19c8bf7363a38a7f9dec98cde0752c1ede5..28a71947fca08376f8be2e86c442b9e6e9cfd69a 100644 (file)
@@ -120,6 +120,10 @@ archive_entry_linkresolver_set_strategy(struct archive_entry_linkresolver *res,
        int fmtbase = fmt & ARCHIVE_FORMAT_BASE_MASK;
 
        switch (fmtbase) {
+       case ARCHIVE_FORMAT_AR:
+       case ARCHIVE_FORMAT_ZIP:
+               res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_OLD_CPIO;
+               break;
        case ARCHIVE_FORMAT_CPIO:
                switch (fmt) {
                case ARCHIVE_FORMAT_CPIO_SVR4_NOCRC:
@@ -134,11 +138,12 @@ archive_entry_linkresolver_set_strategy(struct archive_entry_linkresolver *res,
        case ARCHIVE_FORMAT_MTREE:
                res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_MTREE;
                break;
+       case ARCHIVE_FORMAT_SHAR:
        case ARCHIVE_FORMAT_TAR:
                res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_TAR;
                break;
        default:
-               res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_TAR;
+               res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_OLD_CPIO;
                break;
        }
 }