34 #ifndef CDIO_ISO9660_H_
35 #define CDIO_ISO9660_H_
61 #ifndef EMPTY_ARRAY_SIZE
62 #define EMPTY_ARRAY_SIZE 0
72 #define ISODCL(from, to) ((to) - (from) + 1)
74 #define MIN_TRACK_SIZE 4*75
75 #define MIN_ISO_SIZE MIN_TRACK_SIZE
148 #define ISO_MAX_PUBLISHER_ID 128
151 #define ISO_MAX_APPLICATION_ID 128
154 #define ISO_MAX_VOLUME_ID 32
157 #define ISO_MAX_VOLUMESET_ID 128
164 #define ISO_STANDARD_ID "CD001"
551 #define ISO_EXTENSION_ALL 0xFF
552 #define ISO_EXTENSION_NONE 0x00
553 #define ISO_EXTENSION_JOLIET \
554 (ISO_EXTENSION_JOLIET_LEVEL1 | \
555 ISO_EXTENSION_JOLIET_LEVEL2 | \
556 ISO_EXTENSION_JOLIET_LEVEL3 )
586 iso_extension_mask_t iso_extension_mask);
615 iso_extension_mask_t iso_extension_mask,
626 iso_extension_mask_t iso_extension_mask,
646 lsn_t start,
long int i_size);
668 iso_extension_mask_t iso_extension_mask);
676 iso_extension_mask_t iso_extension_mask);
779 uint8_t i_joliet_level);
838 uint32_t parent, uint32_t psize,
839 const time_t *dir_time);
843 const void *ssu_data,
unsigned int ssu_size,
844 uint32_t parent, uint32_t psize,
845 const void *psu_data,
unsigned int psu_size,
846 const time_t *dir_time);
850 uint32_t size, uint8_t file_flags,
852 unsigned int su_size,
const time_t *entry_time);
864 #define iso9660_fs_find_lsn iso9660_find_fs_lsn
936 const char psz_path[],
950 const char psz_path[]);
1114 uint32_t extent, uint16_t parent);
1117 uint32_t extent, uint16_t parent);
1124 const char application_id[],
1125 const char publisher_id[],
const char preparer_id[],
1126 uint32_t iso_size,
const void *root_dir,
1127 uint32_t path_table_l_extent,
1128 uint32_t path_table_m_extent,
1129 uint32_t path_table_size,
const time_t *pvd_time);
1139 #ifndef DO_NOT_WANT_COMPATIBILITY
1141 #define iso9660_isdchar iso9660_is_dchar
1142 #define iso9660_isachar iso9660_is_achar
#define ISO_MAX_APPLICATION_ID
Maximum number of characters in an application id.
Definition: iso9660.h:151
uint16_t iso9660_pathtable_l_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
char unused2[8]
Definition: iso9660.h:411
char filename[EMPTY_ARRAY_SIZE]
Definition: iso9660.h:530
ISO-9660 Supplementary Volume Descriptor.
Definition: iso9660.h:400
uint8_t file_flags
Definition: iso9660.h:258
iso9660_xa_t xa
Definition: iso9660.h:527
#define iso9660_fs_find_lsn
Definition: iso9660.h:864
void iso9660_set_pvd(void *pd, const char volume_id[], const char application_id[], const char publisher_id[], const char preparer_id[], uint32_t iso_size, const void *root_dir, uint32_t path_table_l_extent, uint32_t path_table_m_extent, uint32_t path_table_size, const time_t *pvd_time)
iso9660_ltime_t creation_date
Definition: iso9660.h:370
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition: iso9660.h:297
iso9660_ltime_t expiration_date
Definition: iso9660.h:491
char application_data[512]
Definition: iso9660.h:386
The top-level header for list-related data structures.
bool iso9660_pathname_valid_p(const char psz_path[])
iso732_t opt_type_m_path_table
Definition: iso9660.h:427
iso723_t volume_sequence_number
Definition: iso9660.h:416
char * iso9660_get_system_id(const iso9660_pvd_t *p_pvd)
bool iso9660_ifs_get_system_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_system_id)
Definition: iso9660.h:108
Common type definitions used pervasively in libcdio.
iso9660_stat_t * iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn)
char * iso9660_pathname_isofy(const char psz_path[], uint16_t i_version)
bool iso9660_ifs_fuzzy_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
Definition: iso9660.h:122
#define PRAGMA_END_PACKED
Definition: types.h:168
iso9660_ltime_t modification_date
Definition: iso9660.h:373
uint8_t iso711_t
ISO 9660 Integer and Character types.
Definition: iso9660.h:49
bool iso9660_get_ltime(const iso9660_ltime_t *p_ldate, struct tm *p_tm)
iso9660_stat_t * iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso, lsn_t i_lsn, char **ppsz_path)
Definition: iso9660.h:124
iso9660_t * iso9660_open(const char *psz_path)
iso711_t interleave_gap
Definition: iso9660.h:265
bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit)
Definition: iso9660.h:171
bool iso9660_is_dchar(int c)
char * iso9660_get_volume_id(const iso9660_pvd_t *p_pvd)
iso731_t type_l_path_table
Definition: iso9660.h:420
iso732_t type_m_path_table
Definition: iso9660.h:311
unsigned int iso9660_dir_calc_record_size(unsigned int namelen, unsigned int su_len)
iso712_t dt_gmtoff
Definition: iso9660.h:192
iso711_t file_structure_version
Definition: iso9660.h:384
int iso9660_name_translate(const char *psz_oldname, char *psz_newname)
int32_t lsn_t
Definition: types.h:265
iso711_t dt_hour
Definition: iso9660.h:189
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition: iso9660.h:321
char unused1[1]
Definition: iso9660.h:296
Definition: iso9660.h:110
Definition: iso9660.h:113
bool iso9660_ifs_read_pvd(const iso9660_t *p_iso, iso9660_pvd_t *p_pvd)
Definition: iso9660.h:528
uint16_t iso9660_pathtable_m_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
#define ISO_MAX_VOLUME_ID
Maximum number of characters in a volume id.
Definition: iso9660.h:154
char * iso9660_strncpy_pad(char dst[], const char src[], size_t len, enum strncpy_pad_check _check)
struct _iso9660_s iso9660_t
Definition: iso9660.h:560
lsn_t lsn
Definition: iso9660.h:524
#define PRAGMA_BEGIN_PACKED
Definition: types.h:167
char lt_second[ISODCL(13, 14)]
Definition: iso9660.h:218
Definition: iso9660.h:111
struct tm tm
Definition: iso9660.h:522
Things related to the Rock Ridge Interchange Protocol (RRIP)
uint16_t iso721_t
Definition: iso9660.h:51
iso711_t length
Definition: iso9660.h:249
int iso9660_get_pvd_version(const iso9660_pvd_t *pvd)
iso731_t opt_type_l_path_table
Definition: iso9660.h:422
bool iso9660_ifs_get_volumeset_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volumeset_id)
iso711_t dt_minute
Definition: iso9660.h:190
int iso9660_get_pvd_block_size(const iso9660_pvd_t *p_pvd)
Definition: iso9660.h:545
int iso9660_name_translate_ext(const char *psz_oldname, char *psz_newname, uint8_t i_joliet_level)
lsn_t iso9660_get_root_lsn(const iso9660_pvd_t *p_pvd)
uint64_t iso733_t
Definition: iso9660.h:56
enum iso_flag_enum_s iso_flag_enums
iso711_t dt_second
Definition: iso9660.h:191
iso733_t volume_space_size
Definition: iso9660.h:412
iso_extension_enum_s
Definition: iso9660.h:542
#define ISO_STANDARD_ID
Definition: iso9660.h:164
iso9660_t * iso9660_open_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask)
mode_t iso9660_get_posix_filemode(const iso9660_stat_t *p_iso_dirent)
bool iso9660_dirname_valid_p(const char psz_path[])
uint8_t unused5[653]
Definition: iso9660.h:388
iso731_t opt_type_l_path_table
Definition: iso9660.h:309
char str[1]
Definition: iso9660.h:284
char * iso9660_get_application_id(iso9660_pvd_t *p_pvd)
dchar_t copyright_file_id[37]
Definition: iso9660.h:473
char * iso9660_get_preparer_id(const iso9660_pvd_t *p_pvd)
"Extended Architecture" according to the Philips Yellow Book.
Definition: xa.h:100
iso9660_t * iso9660_open_fuzzy(const char *psz_path, uint16_t i_fuzz)
enum strncpy_pad_check strncpy_pad_check_t
iso711_t len
Definition: iso9660.h:283
bool iso9660_fs_read_superblock(CdIo_t *p_cdio, iso_extension_mask_t iso_extension_mask)
bool iso9660_ifs_get_publisher_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_publisher_id)
iso733_t path_table_size
Definition: iso9660.h:418
iso733_t extent
Definition: iso9660.h:252
Definition: iso9660.h:174
uint8_t unused4[1]
Definition: iso9660.h:385
iso733_t path_table_size
Definition: iso9660.h:306
iso732_t opt_type_m_path_table
Definition: iso9660.h:313
void iso9660_dir_add_entry_su(void *dir, const char filename[], uint32_t extent, uint32_t size, uint8_t file_flags, const void *su_data, unsigned int su_size, const time_t *entry_time)
char lt_day[ISODCL(7, 8)]
Definition: iso9660.h:215
Definition: iso9660.h:173
char lt_month[ISODCL(5, 6)]
Definition: iso9660.h:211
uint8_t unused5[653]
Definition: iso9660.h:502
iso_flag_enum_s
Definition: iso9660.h:107
bool iso9660_fs_read_pvd(const CdIo_t *p_cdio, iso9660_pvd_t *p_pvd)
iso733_t size
Definition: iso9660.h:254
char lt_hour[ISODCL(9, 10)]
Definition: iso9660.h:216
char * iso9660_get_volumeset_id(const iso9660_pvd_t *p_pvd)
void iso9660_set_ltime_with_timezone(const struct tm *_tm, int timezone, iso9660_ltime_t *p_pvd_date)
Definition: iso9660.h:121
iso711_t type
Definition: iso9660.h:401
iso9660_ltime_t modification_date
Definition: iso9660.h:487
ISO-9660 Primary Volume Descriptor.
Definition: iso9660.h:291
ISO-9660 shorter-format time structure. See ECMA 9.1.5.
Definition: iso9660.h:184
Definition: iso9660.h:546
char * iso9660_get_publisher_id(const iso9660_pvd_t *p_pvd)
union iso9660_dir_s::@11 filename
iso9660_dir_t root_directory_record
Definition: iso9660.h:315
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition: iso9660.h:435
void iso9660_set_dtime_with_timezone(const struct tm *p_tm, int timezone, iso9660_dtime_t *p_idr_date)
char root_directory_filename
Definition: iso9660.h:432
iso723_t volume_set_size
Definition: iso9660.h:415
Definition: iso9660.h:125
Definition: iso9660.h:116
iso711_t version
Definition: iso9660.h:405
Definition: iso9660.h:528
Definition: iso9660.h:123
iso9660_stat_t * iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn, char **ppsz_path)
long int iso9660_iso_seek_read(const iso9660_t *p_iso, void *ptr, lsn_t start, long int i_size)
iso_vd_enum_s
Definition: iso9660.h:120
void iso9660_pathtable_init(void *pt)
int8_t iso712_t
Definition: iso9660.h:50
Definition: iso9660.h:543
void iso9660_set_evd(void *pd)
iso732_t type_m_path_table
Definition: iso9660.h:425
uint8_t iso9660_get_dir_len(const iso9660_dir_t *p_idr)
void iso9660_dir_init_new_su(void *dir, uint32_t self, uint32_t ssize, const void *ssu_data, unsigned int ssu_size, uint32_t parent, uint32_t psize, const void *psu_data, unsigned int psu_size, const time_t *dir_time)
iso723_t volume_sequence_number
Definition: iso9660.h:269
uint8_t iso9660_ifs_get_joliet_level(iso9660_t *p_iso)
dchar_t bibliographic_file_id[37]
Definition: iso9660.h:368
Unix stat-like version of iso9660_dir.
Definition: iso9660.h:518
const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd)
uint32_t iso732_t
Definition: iso9660.h:55
Things related to the ISO-9660 XA (Extended Attributes) format.
CdioList_t * iso9660_ifs_readdir(iso9660_t *p_iso, const char psz_path[])
The top-level header for libcdio: the CD Input and Control library. Applications include this for any...
Definition: iso9660.h:109
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition: iso9660.h:325
bool iso9660_close(iso9660_t *p_iso)
bool iso9660_ifs_is_xa(const iso9660_t *p_iso)
iso723_t logical_block_size
Definition: iso9660.h:305
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition: iso9660.h:347
Definition: iso9660.h:547
iso711_t dt_month
Definition: iso9660.h:186
enum iso_extension_enum_s iso_extension_enums
iso711_t file_structure_version
Definition: iso9660.h:498
dchar_t abstract_file_id[37]
Definition: iso9660.h:366
Definition: iso9660.h:114
void iso9660_set_dtime(const struct tm *tm, iso9660_dtime_t *idr_date)
iso9660_ltime_t effective_date
Definition: iso9660.h:380
iso711_t xa_length
Definition: iso9660.h:250
Definition: iso9660.h:115
void iso9660_set_ltime(const struct tm *_tm, iso9660_ltime_t *p_pvd_date)
iso731_t type_l_path_table
Definition: iso9660.h:307
iso711_t file_unit_size
Definition: iso9660.h:261
struct _CdIo CdIo_t
Definition: cdio.h:46
bool iso9660_ifs_get_application_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_app_id)
iso9660_stat_t * iso9660_fs_stat_translate(CdIo_t *p_cdio, const char psz_path[], bool b_mode2)
iso711_t dt_day
Definition: iso9660.h:188
bool iso9660_ifs_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask)
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition: iso9660.h:409
iso9660_dir_t root_directory_record
Definition: iso9660.h:430
iso711_t dt_year
Definition: iso9660.h:185
char lt_hsecond[ISODCL(15, 16)]
Definition: iso9660.h:219
iso712_t lt_gmtoff
Definition: iso9660.h:222
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition: iso9660.h:407
iso723_t logical_block_size
Definition: iso9660.h:417
enum iso9660_stat_s::@12 type
dchar_t abstract_file_id[37]
Definition: iso9660.h:480
iso711_t version
Definition: iso9660.h:295
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition: iso9660.h:461
char dchar_t
Definition: iso9660.h:59
char cdio_utf8_t
UTF-8 char definition.
Definition: types.h:233
iso_enum1_s
Definition: iso9660.h:83
char root_directory_filename
Definition: iso9660.h:318
char escape_sequences[32]
Definition: iso9660.h:414
enum iso_vd_enum_s iso_vd_enums
bool_3way_t
Definition: types.h:235
struct _CdioList CdioList_t
Definition: ds.h:35
iso723_t volume_set_size
Definition: iso9660.h:303
char flags
Definition: iso9660.h:406
iso9660_stat_t * iso9660_ifs_stat(iso9660_t *p_iso, const char psz_path[])
uint8_t iso9660_get_pvd_type(const iso9660_pvd_t *p_pvd)
char lt_minute[ISODCL(11, 12)]
Definition: iso9660.h:217
void iso9660_dir_init_new(void *dir, uint32_t self, uint32_t ssize, uint32_t parent, uint32_t psize, const time_t *dir_time)
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition: iso9660.h:437
iso_rock_statbuf_t rr
Definition: iso9660.h:520
bool iso9660_ifs_get_volume_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volume_id)
uint8_t iso_extension_mask_t
Definition: iso9660.h:535
dchar_t copyright_file_id[37]
Definition: iso9660.h:359
uint32_t secsize
Definition: iso9660.h:526
#define GNUC_PACKED
Definition: types.h:151
char * iso9660_dir_to_name(const iso9660_dir_t *p_iso9660_dir)
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition: iso9660.h:336
unsigned int iso9660_pathtable_get_size(const void *pt)
#define ISO_MAX_PUBLISHER_ID
Maximum number of characters in a publisher id.
Definition: iso9660.h:148
iso9660_stat_t * iso9660_fs_stat(CdIo_t *p_cdio, const char psz_path[])
strncpy_pad_check
Definition: iso9660.h:170
#define ISODCL(from, to)
Definition: iso9660.h:72
various POSIX definitions.
iso9660_dtime_t recording_time
Definition: iso9660.h:257
iso733_t volume_space_size
Definition: iso9660.h:300
char achar_t
Definition: iso9660.h:58
uint32_t iso731_t
Definition: iso9660.h:54
iso723_t volume_sequence_number
Definition: iso9660.h:304
iso711_t type
Definition: iso9660.h:292
iso9660_ltime_t expiration_date
Definition: iso9660.h:377
Definition: iso9660.h:172
Definition: iso9660.h:112
CdioList_t * iso9660_fs_readdir(CdIo_t *p_cdio, const char psz_path[], bool b_mode2)
#define ISO_MAX_VOLUMESET_ID
Maximum number of characters in a volume-set id.
Definition: iso9660.h:157
enum iso_enum1_s iso_enums1
iso9660_t * iso9660_open_fuzzy_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
uint32_t iso723_t
Definition: iso9660.h:53
dchar_t bibliographic_file_id[37]
Definition: iso9660.h:482
bool iso9660_is_achar(int c)
iso9660_ltime_t creation_date
Definition: iso9660.h:484
iso9660_stat_t * iso9660_ifs_stat_translate(iso9660_t *p_iso, const char psz_path[])
#define EMPTY_ARRAY_SIZE
Definition: iso9660.h:62
char lt_year[ISODCL(1, 4)]
Definition: iso9660.h:208
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition: iso9660.h:449
uint8_t unused3[32]
Definition: iso9660.h:302
uint8_t unused2[8]
Definition: iso9660.h:299
bool iso9660_ifs_get_preparer_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_preparer_id)
Definition: iso9660.h:544
uint32_t size
Definition: iso9660.h:525
bool b_xa
Definition: iso9660.h:529
int iso9660_get_pvd_space_size(const iso9660_pvd_t *p_pvd)
iso9660_ltime_t effective_date
Definition: iso9660.h:494
uint16_t iso722_t
Definition: iso9660.h:52
char application_data[512]
Definition: iso9660.h:500
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition: iso9660.h:298
bool iso9660_get_dtime(const iso9660_dtime_t *idr_date, bool b_localtime, struct tm *tm)
ISO-9660 longer-format time structure.
Definition: iso9660.h:207
Format of an ISO-9660 directory record.
Definition: iso9660.h:248
uint8_t unused4[1]
Definition: iso9660.h:499