libcdio 2.1.1
iso9660.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2003-2008, 2012-2013, 2017, 2023-2024
3 Rocky Bernstein <rocky@gnu.org>
4 Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
5
6 See also iso9660.h by Eric Youngdale (1993).
7
8 Copyright 1993 Yggdrasil Computing, Incorporated
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
22*/
33
34#ifndef CDIO_ISO9660_H_
35#define CDIO_ISO9660_H_
36
37#include <time.h>
38
39#include <cdio/cdio.h>
40#include <cdio/ds.h>
41#include <cdio/posix.h>
42
49typedef uint8_t iso711_t;
50typedef int8_t iso712_t;
51typedef uint16_t iso721_t;
52typedef uint16_t iso722_t;
53typedef uint32_t iso723_t;
54typedef uint32_t iso731_t;
55typedef uint32_t iso732_t;
56typedef uint64_t iso733_t;
58typedef char achar_t;
59typedef char dchar_t;
61#ifndef EMPTY_ARRAY_SIZE
62#define EMPTY_ARRAY_SIZE 0
63#endif
64
65#include <cdio/types.h>
66#include <cdio/xa.h>
67
68#ifdef ISODCL
69#undef ISODCL
70#endif
71/* This part borrowed from the bsd386 isofs */
72#define ISODCL(from, to) ((to) - (from) + 1)
73
74#define MIN_TRACK_SIZE 4*75
75#define MIN_ISO_SIZE MIN_TRACK_SIZE
76
99
118
127
128
148#define ISO_MAX_PUBLISHER_ID 128
149
151#define ISO_MAX_APPLICATION_ID 128
152
154#define ISO_MAX_VOLUME_ID 32
155
157#define ISO_MAX_VOLUMESET_ID 128
158
162extern const char ISO_STANDARD_ID[sizeof("CD001")-1];
163
164#define ISO_STANDARD_ID "CD001"
165
166#define CDIO_EXTENT_BLOCKS(size) ((size + (ISO_BLOCKSIZE - 1)) / ISO_BLOCKSIZE)
167
168#ifdef __cplusplus
169extern "C" {
170#endif /* __cplusplus */
171
178
180
197
199
210 char lt_year [ISODCL( 1, 4)];
213 char lt_month [ISODCL( 5, 6)];
217 char lt_day [ISODCL( 7, 8)];
218 char lt_hour [ISODCL( 9, 10)];
219 char lt_minute [ISODCL( 11, 12)];
220 char lt_second [ISODCL( 13, 14)];
221 char lt_hsecond [ISODCL( 15, 16)];
229
233
234#include <cdio/rock.h>
235
289
392
394
506
508
510
516
522
532struct iso9660_stat_s { /* big endian!! */
533
536 struct tm tm;
540#ifndef DO_NOT_WANT_COMPATIBILITY
541
542 /* *** Deprecated Legacy API ***
543 Use .total_size and CDIO_EXTENT_BLOCKS.
544 */
545 uint32_t size;
546 uint32_t secsize;
548#endif /* DO_NOT_WANT_COMPATIBILITY */
549
550 /* Multi-extent aware size, in bytes.
551
552 It is guaranteed that the bytes are stored as gapless string in a
553 contiguous sequence of blocks. I.e. they can be read sequentially
554 starting at iso9660_stat_s.lsn.
555 Data files which do not fulfil this promise cause a warning message
556 and are not represented by this type of struct.
557 (Directories are not allowed to have more than one extent and thus cannot
558 legally break the promise.)
559 */
560 uint64_t total_size;
561
562 /* NB: If you need to access the 'secsize' equivalent for an extent,
563 * you should use CDIO_EXTENT_BLOCKS(iso9660_stat_s.total_size) */
564
566 enum { _STAT_FILE = 1, _STAT_DIR = 2 } type;
567 bool b_xa;
569};
570
573typedef uint8_t iso_extension_mask_t;
574
587
588
589#define ISO_EXTENSION_ALL 0xFF
590#define ISO_EXTENSION_NONE 0x00
591#define ISO_EXTENSION_JOLIET \
592 (ISO_EXTENSION_JOLIET_LEVEL1 | \
593 ISO_EXTENSION_JOLIET_LEVEL2 | \
594 ISO_EXTENSION_JOLIET_LEVEL3 )
595
596
598typedef struct _iso9660_s iso9660_t;
599
610 bool iso9660_close (iso9660_t * p_iso);
611
612
623 iso9660_t *iso9660_open (const char *psz_path /*flags, mode */);
624
632 iso9660_t *iso9660_open_ext (const char *psz_path,
633 iso_extension_mask_t iso_extension_mask);
634
649 iso9660_t *iso9660_open_fuzzy (const char *psz_path /*flags, mode */,
650 uint16_t i_fuzz);
651
661 iso9660_t *iso9660_open_fuzzy_ext (const char *psz_path,
662 iso_extension_mask_t iso_extension_mask,
663 uint16_t i_fuzz
664 /*flags, mode */);
665
673 iso_extension_mask_t iso_extension_mask,
674 uint16_t i_fuzz);
675
692 long int iso9660_iso_seek_read (const iso9660_t *p_iso, /*out*/ void *ptr,
693 lsn_t start, long int i_size);
694
699 bool iso9660_fs_read_pvd ( const CdIo_t *p_cdio,
700 /*out*/ iso9660_pvd_t *p_pvd );
701
706 bool iso9660_ifs_read_pvd (const iso9660_t *p_iso,
707 /*out*/ iso9660_pvd_t *p_pvd);
708
715 iso_extension_mask_t iso_extension_mask);
716
723 iso_extension_mask_t iso_extension_mask);
724
725
726/*====================================================
727 Time conversion
728 ====================================================*/
729
734 void iso9660_set_dtime (const struct tm *tm,
735 /*out*/ iso9660_dtime_t *idr_date);
736
737
743 void iso9660_set_dtime_with_timezone (const struct tm *p_tm,
744 int timezone,
745 /*out*/ iso9660_dtime_t *p_idr_date);
746
750 void iso9660_set_ltime (const struct tm *_tm,
751 /*out*/ iso9660_ltime_t *p_pvd_date);
752
756 void iso9660_set_ltime_with_timezone (const struct tm *_tm,
757 int timezone,
758 /*out*/ iso9660_ltime_t *p_pvd_date);
759
768 bool iso9660_get_dtime (const iso9660_dtime_t *idr_date, bool b_localtime,
769 /*out*/ struct tm *p_tm);
770
771
776 bool iso9660_get_ltime (const iso9660_ltime_t *p_ldate,
777 /*out*/ struct tm *p_tm);
778
779 /*====================================================
780 Character Classification and String Manipulation
781 ====================================================*/
787 bool iso9660_is_dchar (int c);
788
794 bool iso9660_is_achar (int c);
795
807 int iso9660_name_translate(const char *psz_oldname,
808 /*out*/ char *psz_newname);
809
825 int iso9660_name_translate_ext(const char *psz_oldname, char *psz_newname,
826 uint8_t i_joliet_level);
827
839 char *iso9660_strncpy_pad(char dst[], const char src[], size_t len,
840 enum strncpy_pad_check _check);
841
842 /*=====================================================================
843 File and Directory Names
844 ======================================================================*/
845
856 bool iso9660_dirname_valid_p (const char psz_path[]);
857
864 char *iso9660_pathname_isofy (const char psz_path[], uint16_t i_version);
865
877 bool iso9660_pathname_valid_p (const char psz_path[]);
878
879/*=====================================================================
880 directory tree
881======================================================================*/
882
883void
884iso9660_dir_init_new (void *dir, uint32_t self, uint32_t ssize,
885 uint32_t parent, uint32_t psize,
886 const time_t *dir_time);
887
888void
889iso9660_dir_init_new_su (void *dir, uint32_t self, uint32_t ssize,
890 const void *ssu_data, unsigned int ssu_size,
891 uint32_t parent, uint32_t psize,
892 const void *psu_data, unsigned int psu_size,
893 const time_t *dir_time);
894
895void
896iso9660_dir_add_entry_su (void *dir, const char filename[], uint32_t extent,
897 uint32_t size, uint8_t file_flags,
898 const void *su_data,
899 unsigned int su_size, const time_t *entry_time);
900
901unsigned int
902iso9660_dir_calc_record_size (unsigned int namelen, unsigned int su_len);
903
916
917
935 /*out*/ char **ppsz_full_filename);
936
949
950
968 lsn_t i_lsn,
969 /*out*/ char **ppsz_path);
970
978
999iso9660_stat_t *iso9660_fs_stat (CdIo_t *p_cdio, const char psz_path[]);
1000
1001
1016 const char psz_path[]);
1026iso9660_stat_t *iso9660_ifs_stat (iso9660_t *p_iso, const char psz_path[]);
1027
1028
1040 const char psz_path[]);
1041
1042
1051
1052
1061
1062
1063
1068
1069
1074
1075
1087CdioList_t * iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[]);
1088
1100CdioList_t * iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[]);
1101
1113
1126 /*out*/ cdio_utf8_t **p_psz_app_id);
1127
1132
1134
1135#ifdef FIXME
1136uint8_t iso9660_get_dir_size(const iso9660_dir_t *p_idr);
1137
1138lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
1139#endif
1140
1147 char * iso9660_dir_to_name (const iso9660_dir_t *p_iso9660_dir);
1148
1152 mode_t iso9660_get_posix_filemode(const iso9660_stat_t *p_iso_dirent);
1153
1159
1165 /*out*/ cdio_utf8_t **p_psz_preparer_id);
1166
1172
1178 /*out*/ cdio_utf8_t **p_psz_publisher_id);
1179
1181
1182 const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd);
1183
1185
1187
1192
1198
1213 bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit);
1214
1220 /*out*/ cdio_utf8_t **p_psz_system_id);
1221
1222
1227
1233
1239 /*out*/ cdio_utf8_t **p_psz_volume_id);
1240
1246
1252 /*out*/ cdio_utf8_t **p_psz_volumeset_id);
1253
1254 /* pathtable */
1255
1257 void iso9660_pathtable_init (void *pt);
1258
1259 unsigned int iso9660_pathtable_get_size (const void *pt);
1260
1261 uint16_t iso9660_pathtable_l_add_entry (void *pt, const char name[],
1262 uint32_t extent, uint16_t parent);
1263
1264 uint16_t iso9660_pathtable_m_add_entry (void *pt, const char name[],
1265 uint32_t extent, uint16_t parent);
1266
1271 void iso9660_set_pvd (void *pd, const char volume_id[],
1272 const char application_id[],
1273 const char publisher_id[], const char preparer_id[],
1274 uint32_t iso_size, const void *root_dir,
1275 uint32_t path_table_l_extent,
1276 uint32_t path_table_m_extent,
1277 uint32_t path_table_size, const time_t *pvd_time);
1278
1279 void iso9660_set_evd (void *pd);
1280
1284 bool iso9660_ifs_is_xa (const iso9660_t * p_iso);
1285
1286
1287#ifndef DO_NOT_WANT_COMPATIBILITY
1289#define iso9660_isdchar iso9660_is_dchar
1290#define iso9660_isachar iso9660_is_achar
1291#endif /*DO_NOT_WANT_COMPATIBILITY*/
1292
1293#ifdef __cplusplus
1294}
1295#endif /* __cplusplus */
1296
1297#undef ISODCL
1298#endif /* CDIO_ISO9660_H_ */
1299
1300/*
1301 * Local variables:
1302 * c-file-style: "gnu"
1303 * tab-width: 8
1304 * indent-tabs-mode: nil
1305 * End:
1306 */
The top-level header for libcdio: the CD Input and Control library. Applications include this for any...
struct _CdIo CdIo_t
Definition cdio.h:47
The top-level header for list-related data structures.
struct _CdioList CdioList_t
Definition ds.h:33
uint64_t iso733_t
Definition iso9660.h:56
uint8_t iso_extension_mask_t
Definition iso9660.h:573
enum iso_extension_enum_s iso_extension_enums
iso9660_t * iso9660_open_fuzzy(const char *psz_path, uint16_t i_fuzz)
enum iso_vd_enum_s iso_vd_enums
CdioList_t * iso9660_fs_readdir(CdIo_t *p_cdio, const char psz_path[])
iso9660_stat_t * iso9660_fs_stat(CdIo_t *p_cdio, const char psz_path[])
void iso9660_stat_free(iso9660_stat_t *p_stat)
bool iso9660_ifs_get_preparer_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_preparer_id)
bool iso9660_ifs_get_system_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_system_id)
PRAGMA_BEGIN_PACKED struct iso9660_dtime_s GNUC_PACKED
iso9660_t * iso9660_open_fuzzy_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
uint8_t iso9660_get_pvd_type(const iso9660_pvd_t *p_pvd)
char * iso9660_get_system_id(const iso9660_pvd_t *p_pvd)
enum iso_flag_enum_s iso_flag_enums
void iso9660_set_dtime_with_timezone(const struct tm *p_tm, int timezone, iso9660_dtime_t *p_idr_date)
char achar_t
Definition iso9660.h:58
iso_extension_enum_s
Definition iso9660.h:580
@ ISO_EXTENSION_JOLIET_LEVEL3
Definition iso9660.h:583
@ ISO_EXTENSION_JOLIET_LEVEL2
Definition iso9660.h:582
@ ISO_EXTENSION_ROCK_RIDGE
Definition iso9660.h:584
@ ISO_EXTENSION_HIGH_SIERRA
Definition iso9660.h:585
@ ISO_EXTENSION_JOLIET_LEVEL1
Definition iso9660.h:581
const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd)
bool iso9660_get_dtime(const iso9660_dtime_t *idr_date, bool b_localtime, struct tm *p_tm)
uint16_t iso9660_pathtable_m_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
#define ISO_MAX_VOLUMESET_ID
Maximum number of characters in a volume-set id.
Definition iso9660.h:157
iso9660_stat_t * iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso, lsn_t i_lsn, char **ppsz_path)
struct _iso9660_s iso9660_t
Definition iso9660.h:598
char * iso9660_get_preparer_id(const iso9660_pvd_t *p_pvd)
uint16_t iso721_t
Definition iso9660.h:51
char * iso9660_dir_to_name(const iso9660_dir_t *p_iso9660_dir)
bool iso9660_ifs_get_volumeset_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volumeset_id)
uint8_t iso9660_ifs_get_joliet_level(iso9660_t *p_iso)
uint32_t iso723_t
Definition iso9660.h:53
iso9660_stat_t * iso9660_ifs_stat(iso9660_t *p_iso, const char psz_path[])
bool iso9660_ifs_read_pvd(const iso9660_t *p_iso, iso9660_pvd_t *p_pvd)
bool iso9660_fs_read_superblock(CdIo_t *p_cdio, iso_extension_mask_t iso_extension_mask)
int iso9660_get_pvd_version(const iso9660_pvd_t *pvd)
bool iso9660_ifs_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask)
bool iso9660_dirname_valid_p(const char psz_path[])
void iso9660_pathtable_init(void *pt)
bool iso9660_ifs_fuzzy_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
#define ISO_MAX_PUBLISHER_ID
Maximum number of characters in a publisher id.
Definition iso9660.h:148
bool iso9660_fs_read_pvd(const CdIo_t *p_cdio, iso9660_pvd_t *p_pvd)
void iso9660_set_dtime(const struct tm *tm, iso9660_dtime_t *idr_date)
uint8_t iso711_t
ISO 9660 Integer and Character types.
Definition iso9660.h:49
enum strncpy_pad_check strncpy_pad_check_t
lsn_t iso9660_get_root_lsn(const iso9660_pvd_t *p_pvd)
int iso9660_get_pvd_block_size(const iso9660_pvd_t *p_pvd)
void iso9660_filelist_free(CdioISO9660FileList_t *p_filelist)
mode_t iso9660_get_posix_filemode(const iso9660_stat_t *p_iso_dirent)
int iso9660_name_translate_ext(const char *psz_oldname, char *psz_newname, uint8_t i_joliet_level)
iso9660_stat_t * iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn, char **ppsz_full_filename)
bool iso9660_ifs_get_application_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_app_id)
iso_vd_enum_s
Definition iso9660.h:120
@ ISO_VD_BOOT_RECORD
Definition iso9660.h:121
@ ISO_VD_PRIMARY
Definition iso9660.h:122
@ ISO_VD_PARITION
Definition iso9660.h:124
@ ISO_VD_SUPPLEMENTARY
Definition iso9660.h:123
@ ISO_VD_END
Definition iso9660.h:125
bool iso9660_get_ltime(const iso9660_ltime_t *p_ldate, struct tm *p_tm)
uint8_t iso9660_get_dir_len(const iso9660_dir_t *p_idr)
void iso9660_set_ltime(const struct tm *_tm, iso9660_ltime_t *p_pvd_date)
iso9660_stat_t * iso9660_find_fs_lsn(CdIo_t *p_cdio, lsn_t i_lsn)
unsigned int iso9660_pathtable_get_size(const void *pt)
#define ISO_STANDARD_ID
Definition iso9660.h:164
void iso9660_dir_init_new(void *dir, uint32_t self, uint32_t ssize, uint32_t parent, uint32_t psize, const time_t *dir_time)
char * iso9660_strncpy_pad(char dst[], const char src[], size_t len, enum strncpy_pad_check _check)
unsigned int iso9660_dir_calc_record_size(unsigned int namelen, unsigned int su_len)
void iso9660_dirlist_free(CdioISO9660DirList_t *p_filelist)
#define ISODCL(from, to)
Definition iso9660.h:72
int iso9660_name_translate(const char *psz_oldname, char *psz_newname)
bool iso9660_ifs_get_volume_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volume_id)
CdioList_t CdioISO9660DirList_t
A data type for a list of ISO9660 statbuf drectory pointer returned from the variious Cdio iso9660 re...
Definition iso9660.h:521
enum iso_enum1_s iso_enums1
long int iso9660_iso_seek_read(const iso9660_t *p_iso, void *ptr, lsn_t start, long int i_size)
uint32_t iso732_t
Definition iso9660.h:55
char * iso9660_get_application_id(iso9660_pvd_t *p_pvd)
iso_enum1_s
Definition iso9660.h:83
@ ISO_BLOCKSIZE
Definition iso9660.h:96
@ LEN_ISONAME
Definition iso9660.h:86
@ ISO_PVD_SECTOR
Definition iso9660.h:84
@ ISO_MAX_PREPARER_ID
Definition iso9660.h:92
@ ISO_EVD_SECTOR
Definition iso9660.h:85
@ MAX_ISOPATHNAME
Definition iso9660.h:94
@ ISO_MAX_SYSTEM_ID
Definition iso9660.h:88
@ MAX_ISONAME
Definition iso9660.h:90
char * iso9660_pathname_isofy(const char psz_path[], uint16_t i_version)
char * iso9660_get_publisher_id(const iso9660_pvd_t *p_pvd)
CdioList_t * iso9660_ifs_readdir(iso9660_t *p_iso, const char psz_path[])
int iso9660_get_pvd_space_size(const iso9660_pvd_t *p_pvd)
iso9660_stat_t * iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn)
iso9660_stat_t * iso9660_fs_find_lsn(CdIo_t *p_cdio, lsn_t i_lsn)
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)
strncpy_pad_check
Definition iso9660.h:172
@ ISO9660_NOCHECK
Definition iso9660.h:173
@ ISO9660_7BIT
Definition iso9660.h:174
@ ISO9660_DCHARS
Definition iso9660.h:176
@ ISO9660_ACHARS
Definition iso9660.h:175
bool iso9660_close(iso9660_t *p_iso)
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)
bool iso9660_is_achar(int c)
void iso9660_set_evd(void *pd)
uint16_t iso722_t
Definition iso9660.h:52
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)
bool iso9660_ifs_is_xa(const iso9660_t *p_iso)
bool iso9660_ifs_get_publisher_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_publisher_id)
#define ISO_MAX_VOLUME_ID
Maximum number of characters in a volume id.
Definition iso9660.h:154
CdioISO9660DirList_t * iso9660_dirlist_new(void)
iso9660_stat_t * iso9660_ifs_stat_translate(iso9660_t *p_iso, const char psz_path[])
char * iso9660_get_volume_id(const iso9660_pvd_t *p_pvd)
uint16_t iso9660_pathtable_l_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
CdioISO9660FileList_t * iso9660_filelist_new(void)
bool iso9660_pathname_valid_p(const char psz_path[])
void iso9660_set_ltime_with_timezone(const struct tm *_tm, int timezone, iso9660_ltime_t *p_pvd_date)
char * iso9660_get_volumeset_id(const iso9660_pvd_t *p_pvd)
char dchar_t
Definition iso9660.h:59
#define EMPTY_ARRAY_SIZE
Definition iso9660.h:62
bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit)
iso9660_t * iso9660_open_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask)
uint32_t iso731_t
Definition iso9660.h:54
bool iso9660_is_dchar(int c)
iso_flag_enum_s
Definition iso9660.h:107
@ ISO_RECORD
Definition iso9660.h:112
@ ISO_FILE
Definition iso9660.h:108
@ ISO_DRESERVED1
Definition iso9660.h:114
@ ISO_MULTIEXTENT
Definition iso9660.h:116
@ ISO_ASSOCIATED
Definition iso9660.h:111
@ ISO_EXISTENCE
Definition iso9660.h:109
@ ISO_DRESERVED2
Definition iso9660.h:115
@ ISO_DIRECTORY
Definition iso9660.h:110
@ ISO_PROTECTION
Definition iso9660.h:113
iso9660_t * iso9660_open(const char *psz_path)
iso9660_stat_t * iso9660_fs_stat_translate(CdIo_t *p_cdio, const char psz_path[])
#define ISO_MAX_APPLICATION_ID
Maximum number of characters in an application id.
Definition iso9660.h:151
PRAGMA_END_PACKED typedef CdioList_t CdioISO9660FileList_t
A data type for a list of ISO9660 statbuf file pointers returned from the various Cdio iso9660 readdi...
Definition iso9660.h:515
int8_t iso712_t
Definition iso9660.h:50
various POSIX definitions.
Things related to the Rock Ridge Interchange Protocol (RRIP)
Format of an ISO-9660 directory record.
Definition iso9660.h:250
char str[1]
Definition iso9660.h:286
iso711_t file_unit_size
Definition iso9660.h:263
union iso9660_dir_s::@11 filename
iso711_t len
Definition iso9660.h:285
uint8_t file_flags
Definition iso9660.h:260
iso733_t size
Definition iso9660.h:256
iso723_t volume_sequence_number
Definition iso9660.h:271
iso711_t length
Definition iso9660.h:251
iso711_t interleave_gap
Definition iso9660.h:267
iso733_t extent
Definition iso9660.h:254
iso711_t xa_length
Definition iso9660.h:252
iso9660_dtime_t recording_time
Definition iso9660.h:259
ISO-9660 shorter-format time structure. See ECMA 9.1.5.
Definition iso9660.h:186
iso711_t dt_day
Definition iso9660.h:190
iso711_t dt_month
Definition iso9660.h:188
iso712_t dt_gmtoff
Definition iso9660.h:194
iso711_t dt_year
Definition iso9660.h:187
iso711_t dt_second
Definition iso9660.h:193
iso711_t dt_minute
Definition iso9660.h:192
iso711_t dt_hour
Definition iso9660.h:191
ISO-9660 longer-format time structure.
Definition iso9660.h:209
iso712_t lt_gmtoff
Definition iso9660.h:224
char lt_year[ISODCL(1, 4)]
Definition iso9660.h:210
char lt_second[ISODCL(13, 14)]
Definition iso9660.h:220
char lt_day[ISODCL(7, 8)]
Definition iso9660.h:217
char lt_hour[ISODCL(9, 10)]
Definition iso9660.h:218
char lt_minute[ISODCL(11, 12)]
Definition iso9660.h:219
char lt_month[ISODCL(5, 6)]
Definition iso9660.h:213
char lt_hsecond[ISODCL(15, 16)]
Definition iso9660.h:221
ISO-9660 Primary Volume Descriptor.
Definition iso9660.h:293
iso711_t type
Definition iso9660.h:294
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition iso9660.h:323
iso723_t logical_block_size
Definition iso9660.h:307
iso731_t type_l_path_table
Definition iso9660.h:309
iso9660_ltime_t expiration_date
Definition iso9660.h:379
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition iso9660.h:299
dchar_t abstract_file_id[37]
Definition iso9660.h:368
uint8_t unused3[32]
Definition iso9660.h:304
iso9660_dir_t root_directory_record
Definition iso9660.h:317
char unused1[1]
Definition iso9660.h:298
char application_data[512]
Definition iso9660.h:388
dchar_t copyright_file_id[37]
Definition iso9660.h:361
iso9660_ltime_t modification_date
Definition iso9660.h:375
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition iso9660.h:349
iso711_t file_structure_version
Definition iso9660.h:386
uint8_t unused4[1]
Definition iso9660.h:387
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition iso9660.h:300
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition iso9660.h:327
iso723_t volume_set_size
Definition iso9660.h:305
iso731_t opt_type_l_path_table
Definition iso9660.h:311
iso711_t version
Definition iso9660.h:297
iso9660_ltime_t effective_date
Definition iso9660.h:382
iso732_t type_m_path_table
Definition iso9660.h:313
uint8_t unused2[8]
Definition iso9660.h:301
iso733_t path_table_size
Definition iso9660.h:308
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition iso9660.h:338
iso723_t volume_sequence_number
Definition iso9660.h:306
iso9660_ltime_t creation_date
Definition iso9660.h:372
char root_directory_filename
Definition iso9660.h:320
dchar_t bibliographic_file_id[37]
Definition iso9660.h:370
iso733_t volume_space_size
Definition iso9660.h:302
iso732_t opt_type_m_path_table
Definition iso9660.h:315
uint8_t unused5[653]
Definition iso9660.h:390
Unix stat-like version of iso9660_dir.
Definition iso9660.h:532
uint32_t size
Definition iso9660.h:545
char filename[EMPTY_ARRAY_SIZE]
Definition iso9660.h:568
struct tm tm
Definition iso9660.h:536
uint32_t secsize
Definition iso9660.h:546
bool b_xa
Definition iso9660.h:567
@ _STAT_DIR
Definition iso9660.h:566
@ _STAT_FILE
Definition iso9660.h:566
uint64_t total_size
Definition iso9660.h:560
enum iso9660_stat_s::@12 type
iso9660_xa_t xa
Definition iso9660.h:565
iso_rock_statbuf_t rr
Definition iso9660.h:534
lsn_t lsn
Definition iso9660.h:538
ISO-9660 Supplementary Volume Descriptor.
Definition iso9660.h:402
iso731_t type_l_path_table
Definition iso9660.h:422
iso731_t opt_type_l_path_table
Definition iso9660.h:424
char application_data[512]
Definition iso9660.h:502
dchar_t copyright_file_id[37]
Definition iso9660.h:475
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition iso9660.h:463
iso711_t version
Definition iso9660.h:407
char flags
Definition iso9660.h:408
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition iso9660.h:409
uint8_t unused5[653]
Definition iso9660.h:504
dchar_t bibliographic_file_id[37]
Definition iso9660.h:484
iso9660_ltime_t effective_date
Definition iso9660.h:496
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition iso9660.h:411
char escape_sequences[32]
Definition iso9660.h:416
uint8_t unused4[1]
Definition iso9660.h:501
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition iso9660.h:439
iso723_t volume_set_size
Definition iso9660.h:417
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition iso9660.h:437
iso733_t path_table_size
Definition iso9660.h:420
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition iso9660.h:451
iso9660_ltime_t creation_date
Definition iso9660.h:486
char unused2[8]
Definition iso9660.h:413
iso723_t logical_block_size
Definition iso9660.h:419
iso733_t volume_space_size
Definition iso9660.h:414
iso9660_ltime_t expiration_date
Definition iso9660.h:493
iso732_t type_m_path_table
Definition iso9660.h:427
char root_directory_filename
Definition iso9660.h:434
iso711_t file_structure_version
Definition iso9660.h:500
iso711_t type
Definition iso9660.h:403
dchar_t abstract_file_id[37]
Definition iso9660.h:482
iso9660_ltime_t modification_date
Definition iso9660.h:489
iso723_t volume_sequence_number
Definition iso9660.h:418
iso9660_dir_t root_directory_record
Definition iso9660.h:432
iso732_t opt_type_m_path_table
Definition iso9660.h:429
"Extended Architecture" according to the Philips Yellow Book.
Definition xa.h:101
Definition rock.h:302
Common type definitions used pervasively in libcdio.
bool_3way_t
Definition types.h:220
char cdio_utf8_t
UTF-8 char definition.
Definition types.h:218
#define PRAGMA_BEGIN_PACKED
Definition types.h:152
#define PRAGMA_END_PACKED
Definition types.h:153
int32_t lsn_t
Definition types.h:250
Things related to the ISO-9660 XA (Extended Attributes) format.