libcdio  2.1.0
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
xa.h File Reference

Things related to the ISO-9660 XA (Extended Attributes) format. More...

Go to the source code of this file.

Data Structures

struct  iso9660_xa_s
 "Extended Architecture" according to the Philips Yellow Book. More...
 

Macros

#define ISO_XA_MARKER_STRING   "CD-XA001"
 

Typedefs

typedef struct iso9660_xa_s iso9660_xa_t
 "Extended Architecture" according to the Philips Yellow Book. More...
 

Enumerations

enum  xa_misc_enum_t {
  ISO_XA_MARKER_OFFSET = 1024, XA_PERM_RSYS = 0x0001, XA_PERM_XSYS = 0x0004, XA_PERM_RUSR = 0x0010,
  XA_PERM_XUSR = 0x0040, XA_PERM_RGRP = 0x0100, XA_PERM_XGRP = 0x0400, XA_PERM_ROTH = 0x1000,
  XA_PERM_XOTH = 0x4000, XA_ATTR_MODE2FORM1 = (1 << 11), XA_ATTR_MODE2FORM2 = (1 << 12), XA_ATTR_INTERLEAVED = (1 << 13),
  XA_ATTR_CDDA = (1 << 14), XA_ATTR_DIRECTORY = (1 << 15), XA_PERM_ALL_READ = (XA_PERM_RUSR | XA_PERM_RSYS | XA_PERM_RGRP), XA_PERM_ALL_EXEC = (XA_PERM_XUSR | XA_PERM_XSYS | XA_PERM_XGRP),
  XA_PERM_ALL_ALL = (XA_PERM_ALL_READ | XA_PERM_ALL_EXEC), XA_FORM1_DIR = (XA_ATTR_DIRECTORY | XA_ATTR_MODE2FORM1 | XA_PERM_ALL_ALL), XA_FORM1_FILE = (XA_ATTR_MODE2FORM1 | XA_PERM_ALL_ALL), XA_FORM2_FILE = (XA_ATTR_MODE2FORM2 | XA_PERM_ALL_ALL)
}
 

Functions

posix_mode_t iso9660_get_posix_filemode_from_xa (uint16_t i_perms)
 
const char * iso9660_get_xa_attr_str (uint16_t xa_attr)
 
iso9660_xa_tiso9660_xa_init (iso9660_xa_t *_xa, uint16_t uid, uint16_t gid, uint16_t attr, uint8_t filenum)
 
void iso9660_xa_free (iso9660_xa_t *_xa)
 

Variables

const char ISO_XA_MARKER_STRING [sizeof("CD-XA001") -1]
 

Detailed Description

Things related to the ISO-9660 XA (Extended Attributes) format.

Applications will probably not include this directly but via the iso9660.h header.

Macro Definition Documentation

◆ ISO_XA_MARKER_STRING

#define ISO_XA_MARKER_STRING   "CD-XA001"

Typedef Documentation

◆ iso9660_xa_t

typedef struct iso9660_xa_s iso9660_xa_t

"Extended Architecture" according to the Philips Yellow Book.

CD-ROM EXtended Architecture is a modification to the CD-ROM specification that defines two new types of sectors. CD-ROM XA was developed jointly by Sony, Philips, and Microsoft, and announced in August 1988. Its specifications were published in an extension to the Yellow Book. CD-i, Photo CD, Video CD and CD-EXTRA have all subsequently been based on CD-ROM XA.

CD-XA defines another way of formatting sectors on a CD-ROM, including headers in the sectors that describe the type (audio, video, data) and some additional info (markers, resolution in case of a video or audio sector, file numbers, etc).

The data written on a CD-XA is consistent with and can be in ISO-9660 file system format and therefore be readable by ISO-9660 file system translators. But also a CD-I player can also read CD-XA discs even if its own `Green Book' file system only resembles ISO 9660 and isn't fully compatible.

Note structure is big-endian.

Enumeration Type Documentation

◆ xa_misc_enum_t

An enumeration for some of the XA_* #defines below. This isn't really an enumeration one would really use in a program it is to be helpful in debuggers where wants just to refer to the XA_* names and get something.

Enumerator
ISO_XA_MARKER_OFFSET 
XA_PERM_RSYS 

System Group Read

XA_PERM_XSYS 

System Group Execute

XA_PERM_RUSR 

User (owner) Read

XA_PERM_XUSR 

User (owner) Execute

XA_PERM_RGRP 

Group Read

XA_PERM_XGRP 

Group Execute

XA_PERM_ROTH 

Other (world) Read

XA_PERM_XOTH 

Other (world) Execute

XA_ATTR_MODE2FORM1 
XA_ATTR_MODE2FORM2 
XA_ATTR_INTERLEAVED 
XA_ATTR_CDDA 
XA_ATTR_DIRECTORY 
XA_PERM_ALL_READ 
XA_PERM_ALL_EXEC 
XA_PERM_ALL_ALL 
XA_FORM1_DIR 
XA_FORM1_FILE 
XA_FORM2_FILE 

Function Documentation

◆ iso9660_get_posix_filemode_from_xa()

posix_mode_t iso9660_get_posix_filemode_from_xa ( uint16_t  i_perms)

Returns POSIX mode bitstring for a given file.

◆ iso9660_get_xa_attr_str()

const char* iso9660_get_xa_attr_str ( uint16_t  xa_attr)

Returns a string interpreting the extended attribute xa_attr. For example:

d---1xrxrxr
---2--r-r-r
-a--1xrxrxr

A description of the characters in the string follows. The 1st character is either "d" if the entry is a directory, or "-" if not The 2nd character is either "a" if the entry is CDDA (audio), or "-" if not The 3rd character is either "i" if the entry is interleaved, or "-" if not The 4th character is either "2" if the entry is mode2 form2 or "-" if not The 5th character is either "1" if the entry is mode2 form1 or "-" if not Note that an entry will either be in mode2 form1 or mode form2. That is you will either see "2-" or "-1" in the 4th & 5th positions.

The 6th and 7th characters refer to permissions for a user while the the 8th and 9th characters refer to permissions for a group while, and the 10th and 11th characters refer to permissions for everyone.

In each of these pairs the first character (6, 8, 10) is "x" if the entry is executable. For a directory this means the directory is allowed to be listed or "searched". The second character of a pair (7, 9, 11) is "r" if the entry is allowed to be read.

◆ iso9660_xa_free()

void iso9660_xa_free ( iso9660_xa_t _xa)

Frees the passed iso9600_xa_t structure.

See also
iso9660_xa

◆ iso9660_xa_init()

iso9660_xa_t* iso9660_xa_init ( iso9660_xa_t _xa,
uint16_t  uid,
uint16_t  gid,
uint16_t  attr,
uint8_t  filenum 
)

Allocates and initalizes a new iso9600_xa_t variable and returns it. The caller must free the returned result using iso9660_xa_free().

See also
iso9660_xa

Variable Documentation

◆ ISO_XA_MARKER_STRING

const char ISO_XA_MARKER_STRING[sizeof("CD-XA001") -1]