Hi,
I got an issue reported today from a user trying to use a Rock Ridge ISO
with folders that go more than 8 levels, and it appears that the Rock
Ridge extensions from libcdio do not support RRIP Deep Directories, as
described on pages 33-34 of
http://www.reverse-engineering.info/CD/iso9660.pdf
More specifically, if you master a Rock Ridge ISO with something like
./1/2/3/4/5/6/7/8/test.txt, because it goes deeper than 8 levels, the
RRIP extensions enables '8/test.txt' to be moved into a top level
./rr_moved/ directory, with the '8/' subdirectory being replaced by a
0-byte file with the relevant System Use fields.
An example of such an image can be found at:
https://files.akeo.ie/test/rrip_deep_folder.iso (374 KB).
This image was generated with Folder2Iso
(https://www.trustfm.net/software/utilities/Folder2Iso.php), which calls
mkisofs behind the scenes, with Joliet extensions disabled to force Rock
Ridge. Note that you can ignore '.efi/boot/bootx64.efi' from this image,
as it is only there so I can test this image in Rufus.
Obviously, libcdio should be able to recognize the RRIP extension and
extract the deep directory content accordingly, but this doesn't appear
to be the case.
Specifically, the extract.exe sample will produce the following:
# extract.exe rrip_deep_folder.iso tmp
Application: MKISOFS ISO9660/HFS/UDF FILESYSTEM BUILDER & CDRECORD
CD/DVD/BluRay CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J
.PEARSON/J.SCHILLING
System : Win32
Volume : ISO Label
Extracting: tmp/1/2/3/4/5/6/7/8
Extracting: tmp/efi/boot/bootx64.efi
Could not access /rr_moved
Now, looking at section 4.1.5 of
https://ia800605.us.archive.org/16/items/enf_pobox_Rrip/rrip.pdf which
describes support for deep directory, and the rock.c code, it seems
there has been some attempt at adding some form support at least for the
CL relocation field, but this currently sits behind a '#ifdef FINISHED'
guard, and doesn't seem to be linked to active code.
So I have to ask:
What's the status of Deep Directory Rock Ridge support in libcdio?
Is someone planning to work on/finalize it?