Hi,
just to show that i began to review the Rock Ridge Deep Directory code,
i wonder why the RR-related code snippet in lib/iso9660/iso9660_fs.c
line 832 is not surrounded by #ifdef HAVE_ROCK and how a freshly calloc'ed
p_stat shall have (p_stat->rr.u_su_fields & ISO_ROCK_SUF_RE) true.
Further i wonder whether the ISO_ROCK_SUF_RE bit can only be set if
_iso9660_is_rock_ridge_enabled(p_image).
Line 819:
/* Reuse multiextent p_stat if not NULL */
if (!p_stat) {
p_stat = calloc(1, stat_len);
first_extent = true;
>>> how could p_stat->rr.u_su_fields become non-zero ?
} else {
first_extent = false;
}
if (!p_stat) {
cdio_warn("Couldn't calloc(1, %d)", stat_len);
return NULL;
}
p_stat->type = (p_iso9660_dir->file_flags & ISO_DIRECTORY)
? _STAT_DIR : _STAT_FILE;
>>> why no: #ifdef HAVE_ROCK ?
Line 832:
/* Ignore Rock Ridge Deep Directory RE entries */
>>> why no: if (_iso9660_is_rock_ridge_enabled(p_image)) ?
if (p_stat->rr.u_su_fields & ISO_ROCK_SUF_RE)
goto fail;
>>> why no: #endif ?
I will continue to read in a few hours.
Have a nice day :)
Thomas