[iso] fix "ISO has not been properly scanned" error for some ISOs

* Make sure that if we skip a deep directory during scan, we count at
  least one block of data.
* Also produce a note about deep directory long scan times and improve
  the formatting of some messages.
This commit is contained in:
Pete Batard 2020-10-12 19:33:54 +01:00
parent 2d272b7991
commit 318d5ed16d
No known key found for this signature in database
GPG Key ID: 38E0CF5E69EDD671
3 changed files with 14 additions and 8 deletions

View File

@ -679,6 +679,9 @@ static int iso_extract_files(iso9660_t* p_iso, const char *psz_path)
p_statbuf = (iso9660_stat_t*) _cdio_list_node_data(p_entnode);
if (scan_only && (p_statbuf->rr.b3_rock == yep) && enable_rockridge) {
if (p_statbuf->rr.u_su_fields & ISO_ROCK_SUF_PL) {
if (!img_report.has_deep_directories)
uprintf(" Note: The selected ISO uses Rock Ridge 'deep directories'.\r\n"
" Because of this, it may take a very long time to scan or extract...");
img_report.has_deep_directories = TRUE;
// Due to the nature of the parsing of Rock Ridge deep directories
// which requires performing a *very costly* search of the whole
@ -689,6 +692,8 @@ static int iso_extract_files(iso9660_t* p_iso, const char *psz_path)
// short by telling the parent not to bother any further once we
// find that we are dealing with a deep directory.
r = -1;
// Add at least one extra block, since we're skipping content.
total_blocks++;
goto out;
}
}

View File

@ -1089,11 +1089,12 @@ static void DisplayISOProps(void)
(img_report.wininst_version >= SPECIAL_WIM_VERSION) ? "+": "");
}
PRINT_ISO_PROP(img_report.has_symlinks,
" Note: This ISO uses symbolic links, which will not be replicated due to file system limitations.");
" Note: This ISO uses symbolic links, which will not be replicated due to file system");
PRINT_ISO_PROP((img_report.has_symlinks == SYMLINKS_RR),
" Because of this, some features from this image may not work...");
" limitations. Because of this, some features from this image may not work...");
PRINT_ISO_PROP((img_report.has_symlinks == SYMLINKS_UDF),
" Because of this, the size required for the target media may be much larger than size of the ISO...");
" limitations. Because of this, the size required for the target media may be much\r\n"
" larger than size of the ISO...");
}
// Insert the image name into the Boot selection dropdown and (re)populate the Image option dropdown

View File

@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 232, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Rufus 3.12.1708"
CAPTION "Rufus 3.12.1709"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
@ -395,8 +395,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,12,1708,0
PRODUCTVERSION 3,12,1708,0
FILEVERSION 3,12,1709,0
PRODUCTVERSION 3,12,1709,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -414,13 +414,13 @@ BEGIN
VALUE "Comments", "https://rufus.ie"
VALUE "CompanyName", "Akeo Consulting"
VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "3.12.1708"
VALUE "FileVersion", "3.12.1709"
VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
VALUE "OriginalFilename", "rufus-3.12.exe"
VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "3.12.1708"
VALUE "ProductVersion", "3.12.1709"
END
END
BLOCK "VarFileInfo"