The following patchset adds El Torito virtual image listing and extraction 
support
in a manner similar to what 7-zip does, by creating a virtual "[BOOT]/" 
directory
under root, and listing a bunch of "#-Boot-NoEmul.img" virtual images there.

The motivation for this stems from Rufus recently needing to perform El Torito
image extraction through libcdio, due to Linux Mint 21.3 using a broken Rock 
Ridge
symlink for their /EFI/Boot/bootx64.efi bootloaders on the ISO-9660 file system,
whereas a working bootx64.efi could be found in the El Torito images (for more 
on
this see https://github.com/linuxmint/linuxmint/issues/622).

Note that because I don't have the scope to cover the full El Torito specs, we
limit ourselves to listing a maximum of 8 virtual images, and only ones that
have type Bootable and No Emulation. I did however add the capablity to enable/
disable virtual image support through a new ISO_EXTENSION_EL_TORITO extension 
bit
and added the relevant El Torito testing to the test suite.

You can also find a repository with these patches at:
https://github.com/pbatard/libcdio/commits/eltorito/

The tests were validated against MinGW and Linux/gcc.

Regards,

/Pete

Pete Batard (4):
  Add case insensitive _cdio_stricmp and _cdio_strnicmp function calls
  Add El Torito virtual boot image support
  Add --no-el-torito option to iso-info
  Add El Torito tests

 include/cdio/iso9660.h   |  40 ++++++++++++++--
 include/cdio/util.h      |   6 +++
 lib/driver/libcdio.sym   |   2 +
 lib/driver/util.c        |  29 ++++++++++++
 lib/iso9660/iso9660_fs.c |  99 ++++++++++++++++++++++++++++++++++++++-
 src/iso-info.c           |  14 ++++--
 test/Makefile.am         |  10 ++--
 test/check_eltorito.sh   |  57 ++++++++++++++++++++++
 test/data/eltorito.iso   | Bin 0 -> 55296 bytes
 test/data/eltorito_file  | Bin 0 -> 512 bytes
 test/eltorito.right      |  12 +++++
 test/no_eltorito.right   |   8 ++++
 12 files changed, 264 insertions(+), 13 deletions(-)
 create mode 100755 test/check_eltorito.sh
 create mode 100644 test/data/eltorito.iso
 create mode 100644 test/data/eltorito_file
 create mode 100644 test/eltorito.right
 create mode 100644 test/no_eltorito.right

-- 
2.43.0.windows.1


Reply via email to