libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libcdio-devel] Rock Ridge RRIP Deep Directory support


From: Pete Batard
Subject: Re: [Libcdio-devel] Rock Ridge RRIP Deep Directory support
Date: Thu, 30 Apr 2020 11:30:35 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

On 2020.04.30 01:28, Rocky Bernstein wrote:
On Wed, Apr 29, 2020 at 8:22 PM Pete Batard <address@hidden> wrote:

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?


Not that I am aware of.

Okay. I'll see if I can take a stab at it but it may be a couple of months before I do so.

If anybody's interested, feel free to jump in.

Regards,

/Pete



reply via email to

[Prev in Thread] Current Thread [Next in Thread]