[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;
}
}