Handle hard links by converting them to symlinks
authorbug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Thu, 12 Jun 2003 13:47:16 +0000 (13:47 +0000)
committerbug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Thu, 12 Jun 2003 13:47:16 +0000 (13:47 +0000)
git-svn-id: svn://busybox.net/trunk/busybox@6910 69ca8d6d-28ef-0310-b511-8ec308f3f277

archival/libunarchive/get_header_tar.c

index 365f464..e3b1807 100644 (file)
@@ -120,6 +120,10 @@ extern char get_header_tar(archive_handle_t *archive_handle)
        file_header->device = (dev_t) ((strtol(tar.formated.devmajor, NULL, 8) << 8) +
                                 strtol(tar.formated.devminor, NULL, 8));
 
+       if (tar.formated.typeflag == '1') {
+               bb_error_msg("WARNING: Converting hard link to symlink");
+               file_header->mode |= S_IFLNK;
+       }
 #if defined CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY || defined CONFIG_FEATURE_TAR_GNU_EXTENSIONS
        /* Fix mode, used by the old format */
        switch (tar.formated.typeflag) {
@@ -129,7 +133,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
                file_header->mode |= S_IFREG;
                break;
        case '1':
-               bb_error_msg("Internal hard link not supported");
+//             bb_error_msg("Internal hard link not supported");
                break;
        case '2':
                file_header->mode |= S_IFLNK;