perliso9660(3pm)
๐ฟ perliso9660(3pm) โ User Contributed Perl Documentation
โจ NAME โจ
okay so bestie, meet perliso9660: it's the lower-level wrapper to libiso9660, the ISO 9660 library of the CD Input and Control package. ๐
๐ SYNOPSIS ๐
This is a fairly straight-forward wrapper around the C library libiso9660. It's lowkey perfectly usable on its own, but the expectation is that the Object-Oriented interface Device::Cdio::ISO9660 is what most people will want to use. ๐ซถ
There are various constants that are defined here. โจ
๐ DESCRIPTION ๐
Encapsulation is done in two parts. The lower-level Perl interface is called perliso9660 (this file) and is generated via SWIG. No cap. ๐
๐ CONSTANTS ๐
ISO_BLOCKSIZEโ Number of bytes in an ISO 9660 block (2048). ๐งPVD_SECTORโ"Primary Volume Descriptor"sector (16). ๐EVD_SECTORโ"End Volume Descriptor"sector (17). ๐ซLEN_ISONAMEโ Size in bytes of the filename portion + null byte (31). ๐ธMAX_SYSTEM_IDโ Maximum number of characters in a system id (32). ๐ฆMAX_ISONAMEโ Size in bytes of the filename portion + null byte. (37) ๐MAX_PREPARER_IDโ Maximum number of characters in a preparer id. (128) ๐MAX_ISOPATHNAMEโ Maximum number of characters in the entire ISO 9660 filename. (255) ๐MAX_PUBLISHER_IDโ Maximum number of characters in a publisher id. โญMAX_APPLICATION_IDโ Maximum number of characters in an application id. ๐MAX_VOLUME_IDโ Maximum number of characters in a volume id. ๐ฅMAX_VOLUMESET_IDโ Maximum number of characters in a volume-set id. ๐STANDARD_IDโ String inside frame which identifies an ISO 9660 filesystem. This string is the"id"field of aniso9660_pvd_tor aniso9660_svd_t. ๐ซถEXTENSION_JOLIET_LEVEL1โ Use Joliet Level 1. ๐ฟEXTENSION_JOLIET_LEVEL2โ Use Joliet Level 2. ๐ฟEXTENSION_JOLIET_LEVEL3โ Use Joliet Level 3 ๐ฟEXTENSION_ROCK_RIDGEโ Use Rock-Ridge Extensions. ๐ชจEXTENSION_HIGH_SIERRAโ Use High-Sierra Extensions. ๐๏ธEXTENSION_ALLโ Use any of the above extensions. ๐EXTENSION_NONEโ Use none of the above extensions. ๐ซEXTENSION_JOLIETโ Use any Joliet Extension available. โจ
๐ Directory Flags
FILEโ Not really a flag but the lack of one. ๐EXISTENCEโ Do not make existence known (hidden). ๐ซฅDIRECTORYโ This file is a directory. ๐ASSOCIATEDโ This file is an associated file. ๐RECORDโ Record format is in extended attribute if not set. ๐PROTECTIONโ No read/execute permission in extended attribute. ๐DRESERVED1โ Reserved bit 5. ๐ชDRESERVED2โ Reserved bit 6. ๐ชMULTIEXTENTโ Not the final entry of a multi-extent file. ๐งฉ
๐ฟ Volume Descriptor Types
VD_BOOT_RECORDโ CD is bootable. ๐ฅพVD_PRIMARYโ Primary Volume descriptor which must be in any ISO-9660. ๐VD_SUPPLEMENTARYโ (optional) Supplimentary Volume Descriptor. But used by Joliet, for example. โจVD_PARITIONโ Indicates a partition of a CD. ๐งฑVD_END๐
๐ง Flags for strncpy
NOCHECKโ Enumeration meaning don not check instrncpy_pad. ๐SEVEN_BITโ Enumeration instrncpy_padfor checking entry has only 7-bit characters. 7๏ธโฃACHARSโ Enumeration instrncpy_padfor checking entry has only ACHARs. ๐ ฐ๏ธDCHARSโ Enumeration instrncpy_padfor checking entry has only DCHARs. ๐ฉ
๐ SUBROUTINES ๐
๐ Input Output
open_iso
okay so bestie, this one opens an ISO 9660 image for reading. โจ Maybe in the future we will have a mode, but for now that's the vibe. If something goes wrong, undef is returned. ๐ญ
open_ext
Opens an ISO 9660 image for reading, but it lets various ISO 9660 extensions come through too. Maybe in the future we will have a mode. undef is returned on error. ๐
open_fuzzy
Opens an ISO 9660 image for reading, with some tolerance for where exactly the ISO9660 image is sitting. We scan for $perliso9660::ISO_STANDARD_ID and use that to set the eventual offset to adjust by โ as long as that is <= i_fuzz. ๐ต๏ธ
Maybe in the future we will have a mode. undef is returned on error.
See also open_iso.
open_fuzzy_ext
Same energy as open_fuzzy โ opens an ISO 9660 image for reading with some tolerance for positioning, we scan for ISO_STANDARD_ID and use that to set the eventual offset to adjust by (as long as that is <= i_fuzz). ๐ธ
Maybe in the future we will have a mode. undef is returned on error.
ifs_fuzzy_read_superblock
Read the Super block of an ISO 9660 image, but also determine framesize and datastart and a possible additional offset. Generally here we are not reading an ISO 9660 image but a CD-Image which contains an ISO 9660 filesystem. ๐ซถ
close
Close the previously opened ISO 9660 image. 1 is unconditionally returned โ iconique, no notes. If there was an error, 0 would be returned. โจ
seek_read
Seek to a position and then read n bytes. (buffer, size) are returned. ๐
fs_read_pvd
Read the Primary Volume Descriptor for a CD. 1 is returned if it read, and 0 if there was an error.
ifs_read_pvd
Read the Primary Volume Descriptor for an ISO 9660 image. 1 is returned if it read, and 0 if there was an error.
_fs_read_superblock
Read the Super block of an ISO 9660 image. This is the Primary Volume Descriptor (PVD) and perhaps a Supplemental Volume Descriptor if (Joliet) extensions are acceptable. ๐ฟ
ifs_read_superblock
Read the Super block of an ISO 9660 image. This is the Primary Volume Descriptor (PVD) and perhaps a Supplemental Volume Descriptor if (Joliet) extensions are acceptable. (yes bestie, same description as its sibling, they're twinning ๐ฏ)
โฐ Time Conversion
set_dtime
Set time in format used in ISO 9660 directory index record from a Unix time structure. ๐ฐ๏ธ
set_ltime
Set "long" time in format used in ISO 9660 primary volume descriptor from a Unix time structure.
get_dtime
Get Unix time structure from format use in an ISO 9660 directory index record. Even though the tm_wday and tm_yday fields are not explicitly in dtime, they are calculated from the other fields. ๐งฎ
If tm is to reflect the localtime, set "use_localtime" 1, otherwise tm will reported in GMT.
get_ltime
Get "long" time in format used in ISO 9660 primary volume descriptor from a Unix time structure.
๐ค Character Classification and String Manipulation
is_dchar
Return 1 if c (an int) is a DCHAR โ a character that can appear in an ISO-9600 level 1 directory name. These are the ASCII capital letters A-Z, the digits 0-9 and an underscore. ๐
is_achar
(she's listed with no description, bestie โ just a lil name hanging out ๐)
name_translate
Convert an ISO-9660 file name that stored in a directory entry into what is usually listed as the file name in a listing. Lowercase the name, and remove trailing ;1's or .;1's, and turn the others into version numbers. ๐
name_translate_ext
Convert an ISO-9660 file name that stored in a directory entry into what is usually listed as the file name in a listing. Lowercase name if no Joliet Extension interpretation. Remove trailing ;1's or .;1's and turn the others into version numbers. ๐ฆ
strncpy_pad
Pad string src with spaces to size len and copy this to dst. If len is less than the length of src, dst will be truncated to the first len characters of src. โ๏ธ
src can also be scanned to see if it contains only ACHARs, DCHARs, 7-bit ASCII chars, depending on the enumeration _check.
In addition to getting changed, dst is the return value. Note: this string might not be undef terminated. ๐จ
๐ File and Directory Names
dirname_valid_p
Check that psz_path is a valid ISO-9660 directory name. โ
A valid directory name should not start out with a slash (/), dot (.) or null byte, should be less than 37 characters long, have no more than 8 characters in a directory component which is separated by a /, and consist of only DCHARs.
1 is returned if psz_path is valid.
pathname_isofy
Take psz_path and a version number and turn that into a ISO-9660 pathname. (That is just the pathname followed by ";" and the version number. For example, mydir/file.ext -> MYDIR/FILE.EXT;1 for version 1. ๐) The resulting ISO-9660 pathname is returned.
pathname_valid_p
Check that psz_path is a valid ISO-9660 pathname. โ
A valid pathname contains a valid directory name, if one appears, and the filename portion should be no more than 8 characters for the file prefix and 3 characters in the extension (or portion after a dot). There should be exactly one dot somewhere in the filename portion and the filename should be composed of only DCHARs.
1 is returned if psz_path is valid.
fs_find_lsn
Given a directory pointer, find the filesystem entry that contains lsn and return information about it. ๐
Returns stat_t of entry if we found lsn, or undef otherwise.
ifs_find_lsn
Given a directory pointer, find the filesystem entry that contains lsn and return information about it. ๐
Returns stat_t of entry if we found lsn, or undef otherwise.
fs_stat
Return file status for psz_path. undef is returned on error.
fs_stat_translate
Return file status for path name psz_path. undef is returned on error. pathname version numbers in the ISO 9660 name are dropped, i.e. ;1 is removed and if level 1 ISO-9660 names are lowercased. ๐
ifs_stat
Return file status for pathname. undef is returned on error.
ifs_stat_translate
Return file status for path name psz_path. undef is returned on error. pathname version numbers in the ISO 9660 name are dropped, i.e. ;1 is removed and if level 1 ISO-9660 names are lowercased. ๐
fs_readdir
Read psz_path (a directory) and return a list of iso9660_stat_t pointers for the files inside that directory. The caller must free the returned result. ๐งน
ifs_readdir
Read psz_path (a directory) and return a list of iso9660_stat_t pointers for the files inside that directory. The caller must free the returned result. ๐งน
get_dir_len
Return the directory name stored in the iso9660_dir_t.
A string is allocated: the caller must deallocate. ๐
dir_to_name
(no description on this one either โ she's mysterious ๐)
get_posix_filemode
Returns a POSIX mode for a given p_iso_dirent. ๐
๐ฟ Primary Volume Descriptor Routines
get_application_id
Return the PVD's application ID.
undef is returned if there is some problem in getting this.
ifs_get_application_id
Get the application ID. psz_app_id is set to undef if there is some problem in getting this and 0 is returned.
get_preparer_id
Return a string containing the preparer id with trailing blanks removed. โ๏ธ
ifs_get_preparer_id
Get the preparer ID. psz_preparer_id is set to undef if there is some problem in getting this and 0 is returned.
get_publisher_id
Return a string containing the PVD's publisher id with trailing blanks removed. โ๏ธ
ifs_get_publisher_id
Get the publisher ID. psz_publisher_id is set to undef if there is some problem in getting this and 0 is returned.
get_pvd_type
(no description, just vibes โจ)
get_pvd_id
(no description โจ)
get_pvd_space_size
(no description โจ)
get_pvd_block_size
(no description โจ)
get_pvd_version
Return the primary volume id version number (of pvd). If there is an error 0 is returned.
get_system_id
Return a string containing the PVD's system id with trailing blanks removed. โ๏ธ
ifs_get_system_id
Get the system ID. psz_system_id is set to undef if there is some problem in getting this and 0 is returned.
get_root_lsn
Return the LSN of the root directory for pvd. If there is an error CDIO_INVALID_LSN is returned. ๐ณ
get_volume_id
Return the PVD's volume ID.
ifs_get_volume_id
okay bestie, the page literally says this:
"Get the system ID.psz_system_idis set toundefif there s some problem in getting this and0is returned."
that's a word-for-word copy of what's written under this entry (yes, it talks about the system ID and psz_system_id even though this is the volume ID one ๐) โ I'm not fixing it, I'm just telling you exactly what the docs say. fr fr.
get_volumeset_id
Return the PVD's volumeset ID. undef is returned if there is some problem in getting this.
ifs_get_volumeset_id
Get the systemset ID. psz_systemset_id is set to undef if there is some problem in getting this and 0 is returned.
๐งญ Path Table Routines
iso9660_pathtable_init
Zero out pathable. Do this first. ๐ซก (that's genuinely what's written, typos and all, bestie)
pathtable_get_size
(no description given ๐)
pathtable_l_add_entry
(no description given ๐)
pathtable_m_add_entry
(no description given ๐)
set_evd
(no description given ๐)
โจ Miscellaneous
get_joliet_level
Return the Joliet level recognized for p_iso. ๐
ifs_is_xa
Return 1 if ISO 9660 image has extended attributes (XA).
๐ซถ METHODS
this
This seems to be an artifact of SWIG. ๐ (literally that's the whole note, girlie)
๐ SEE ALSO
<http://www.gnu.org/software/libcdio> has documentation on libcdio, including the manual and the API via doxygen. ๐
๐ AUTHORS
Rocky Bernstein "<rocky at cpan.org>".
๐ COPYRIGHT
Copyright (C) 2006, 2008, 2011, 2017 Rocky Bernstein <rocky@cpan.org>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
and that's the whole page bestie, we ate and left no crumbs ๐๐
she's shipping as perl v5.42.3, dated 2026-08-19, and she's the perliso9660(3pm) section โ periodt. ๐
๐ฆ where this page comes from
- ubuntu stonking: libdevice-cdio-perl 2.0.0-2build8 ยท GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms