libcdio  0.90
Data Fields
iso9660_dir_s Struct Reference

Format of an ISO-9660 directory record. More...

#include <iso9660.h>

Data Fields

iso711_t length
iso711_t xa_length
iso733_t extent
iso733_t size
iso9660_dtime_t recording_time
uint8_t file_flags
iso711_t file_unit_size
iso711_t interleave_gap
iso723_t volume_sequence_number
union {
   iso711_t   len
   char   str [1]

Detailed Description

Format of an ISO-9660 directory record.

Section 9.1 of ECMA 119.

This structure may have an odd length depending on how many characters there are in the filename! Some compilers (e.g. on Sun3/mc68020) pad the structures to an even length. For this reason, we cannot use sizeof (struct iso_path_table) or sizeof (struct iso_directory_record) to compute on disk sizes. Instead, we use offsetof(..., name) and add the name size. See mkisofs.h of the cdrtools package.

See also:

Field Documentation

XA length if XA is used. Otherwise zero. (9.1.2)

Recording date and time (9.1.3)

If no XA then zero. If a directory, then bits 2,3 and 7 are zero. (9.1.6)

union { ... } iso9660_dir_s::filename

Ordinal number of the volume in the Volume Set on which the Extent described by this Directory Record is recorded. (9.1.9)

MSVC compilers cannot handle a zero sized array in the middle of a struct, and iso9660_dir_s is reused within iso9660_pvd_s. Therefore, instead of defining: iso711_t filename_len; char filename[]; we leverage the fact that iso711_t and char are the same size and use an union. The only gotcha is that the actual string payload of filename.str[] starts at 1, not 0.

File Unit size for the File Section if the File Section is recorded in interleaved mode. Otherwise zero. (9.1.7)

data length of File Section. This does not include the length of any XA Records. (9.1.2)

LBA of first local block allocated to the extent

Interleave Gap size for the File Section if the File Section is interleaved. Otherwise zero. (9.1.8)

Length of Directory record (9.1.1)

The documentation for this struct was generated from the following file: