libcdio  2.1.0
iso9660.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2003-2008, 2012-2013, 2017
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 
49 typedef uint8_t iso711_t;
50 typedef int8_t iso712_t;
51 typedef uint16_t iso721_t;
52 typedef uint16_t iso722_t;
53 typedef uint32_t iso723_t;
54 typedef uint32_t iso731_t;
55 typedef uint32_t iso732_t;
56 typedef uint64_t iso733_t;
58 typedef char achar_t;
59 typedef 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 
83 extern enum iso_enum1_s {
86  LEN_ISONAME = 31,
90  MAX_ISONAME = 37,
96  ISO_BLOCKSIZE = 2048
98 } iso_enums1;
99 
107 extern enum iso_flag_enum_s {
108  ISO_FILE = 0,
118 
120 extern enum iso_vd_enum_s {
126 } iso_vd_enums;
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 
162 extern const char ISO_STANDARD_ID[sizeof("CD001")-1];
163 
164 #define ISO_STANDARD_ID "CD001"
165 
166 #ifdef __cplusplus
167 extern "C" {
168 #endif /* __cplusplus */
169 
170 typedef enum strncpy_pad_check {
176 
178 
194 } GNUC_PACKED;
195 
197 
208  char lt_year [ISODCL( 1, 4)];
211  char lt_month [ISODCL( 5, 6)];
215  char lt_day [ISODCL( 7, 8)];
216  char lt_hour [ISODCL( 9, 10)];
217  char lt_minute [ISODCL( 11, 12)];
218  char lt_second [ISODCL( 13, 14)];
219  char lt_hsecond [ISODCL( 15, 16)];
226 } GNUC_PACKED;
227 
231 
232 #include <cdio/rock.h>
233 
258  uint8_t file_flags;
282  union {
284  char str[1];
285  } filename;
286 } GNUC_PACKED;
287 
293  char id[5];
296  char unused1[1];
299  uint8_t unused2[8];
302  uint8_t unused3[32];
385  uint8_t unused4[1];
386  char application_data[512];
388  uint8_t unused5[653];
389 } GNUC_PACKED;
390 
392 
403  char id[5];
406  char flags;
411  char unused2[8];
414  char escape_sequences[32];
499  uint8_t unused4[1];
500  char application_data[512];
502  uint8_t unused5[653];
503 } GNUC_PACKED;
504 
506 
508 
514 
520 
530 struct iso9660_stat_s { /* big endian!! */
531 
534  struct tm tm;
537  uint32_t size;
538  uint32_t secsize;
540  enum { _STAT_FILE = 1, _STAT_DIR = 2 } type;
541  bool b_xa;
543 };
544 
547 typedef uint8_t iso_extension_mask_t;
548 
554 extern enum iso_extension_enum_s {
561 
562 
563 #define ISO_EXTENSION_ALL 0xFF
564 #define ISO_EXTENSION_NONE 0x00
565 #define ISO_EXTENSION_JOLIET \
566  (ISO_EXTENSION_JOLIET_LEVEL1 | \
567  ISO_EXTENSION_JOLIET_LEVEL2 | \
568  ISO_EXTENSION_JOLIET_LEVEL3 )
569 
570 
572 typedef struct _iso9660_s iso9660_t;
573 
584  bool iso9660_close (iso9660_t * p_iso);
585 
586 
597  iso9660_t *iso9660_open (const char *psz_path /*flags, mode */);
598 
606  iso9660_t *iso9660_open_ext (const char *psz_path,
607  iso_extension_mask_t iso_extension_mask);
608 
623  iso9660_t *iso9660_open_fuzzy (const char *psz_path /*flags, mode */,
624  uint16_t i_fuzz);
625 
635  iso9660_t *iso9660_open_fuzzy_ext (const char *psz_path,
636  iso_extension_mask_t iso_extension_mask,
637  uint16_t i_fuzz
638  /*flags, mode */);
639 
647  iso_extension_mask_t iso_extension_mask,
648  uint16_t i_fuzz);
649 
666  long int iso9660_iso_seek_read (const iso9660_t *p_iso, /*out*/ void *ptr,
667  lsn_t start, long int i_size);
668 
673  bool iso9660_fs_read_pvd ( const CdIo_t *p_cdio,
674  /*out*/ iso9660_pvd_t *p_pvd );
675 
680  bool iso9660_ifs_read_pvd (const iso9660_t *p_iso,
681  /*out*/ iso9660_pvd_t *p_pvd);
682 
688  bool iso9660_fs_read_superblock (CdIo_t *p_cdio,
689  iso_extension_mask_t iso_extension_mask);
690 
697  iso_extension_mask_t iso_extension_mask);
698 
699 
700 /*====================================================
701  Time conversion
702  ====================================================*/
703 
708  void iso9660_set_dtime (const struct tm *tm,
709  /*out*/ iso9660_dtime_t *idr_date);
710 
711 
717  void iso9660_set_dtime_with_timezone (const struct tm *p_tm,
718  int timezone,
719  /*out*/ iso9660_dtime_t *p_idr_date);
720 
724  void iso9660_set_ltime (const struct tm *_tm,
725  /*out*/ iso9660_ltime_t *p_pvd_date);
726 
730  void iso9660_set_ltime_with_timezone (const struct tm *_tm,
731  int timezone,
732  /*out*/ iso9660_ltime_t *p_pvd_date);
733 
742  bool iso9660_get_dtime (const iso9660_dtime_t *idr_date, bool b_localtime,
743  /*out*/ struct tm *tm);
744 
745 
750  bool iso9660_get_ltime (const iso9660_ltime_t *p_ldate,
751  /*out*/ struct tm *p_tm);
752 
753  /*====================================================
754  Character Classification and String Manipulation
755  ====================================================*/
761  bool iso9660_is_dchar (int c);
762 
768  bool iso9660_is_achar (int c);
769 
781  int iso9660_name_translate(const char *psz_oldname,
782  /*out*/ char *psz_newname);
783 
799  int iso9660_name_translate_ext(const char *psz_oldname, char *psz_newname,
800  uint8_t i_joliet_level);
801 
813  char *iso9660_strncpy_pad(char dst[], const char src[], size_t len,
814  enum strncpy_pad_check _check);
815 
816  /*=====================================================================
817  File and Directory Names
818  ======================================================================*/
819 
830  bool iso9660_dirname_valid_p (const char psz_path[]);
831 
838  char *iso9660_pathname_isofy (const char psz_path[], uint16_t i_version);
839 
851  bool iso9660_pathname_valid_p (const char psz_path[]);
852 
853 /*=====================================================================
854  directory tree
855 ======================================================================*/
856 
857 void
858 iso9660_dir_init_new (void *dir, uint32_t self, uint32_t ssize,
859  uint32_t parent, uint32_t psize,
860  const time_t *dir_time);
861 
862 void
863 iso9660_dir_init_new_su (void *dir, uint32_t self, uint32_t ssize,
864  const void *ssu_data, unsigned int ssu_size,
865  uint32_t parent, uint32_t psize,
866  const void *psu_data, unsigned int psu_size,
867  const time_t *dir_time);
868 
869 void
870 iso9660_dir_add_entry_su (void *dir, const char filename[], uint32_t extent,
871  uint32_t size, uint8_t file_flags,
872  const void *su_data,
873  unsigned int su_size, const time_t *entry_time);
874 
875 unsigned int
876 iso9660_dir_calc_record_size (unsigned int namelen, unsigned int su_len);
877 
887 #define iso9660_fs_find_lsn iso9660_find_fs_lsn
889 
890 
908  /*out*/ char **ppsz_full_filename);
909 
922 
923 
941  lsn_t i_lsn,
942  /*out*/ char **ppsz_path);
943 
950 void iso9660_stat_free(iso9660_stat_t *p_stat);
951 
972 iso9660_stat_t *iso9660_fs_stat (CdIo_t *p_cdio, const char psz_path[]);
973 
974 
989  const char psz_path[]);
999 iso9660_stat_t *iso9660_ifs_stat (iso9660_t *p_iso, const char psz_path[]);
1000 
1001 
1013  const char psz_path[]);
1014 
1015 
1024 
1025 
1034 
1035 
1036 
1041 
1042 
1046 void iso9660_dirlist_free(CdioISO9660DirList_t *p_filelist);
1047 
1048 
1060 CdioList_t * iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[]);
1061 
1073 CdioList_t * iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[]);
1074 
1086 
1099  /*out*/ cdio_utf8_t **p_psz_app_id);
1100 
1104 uint8_t iso9660_ifs_get_joliet_level(iso9660_t *p_iso);
1105 
1106 uint8_t iso9660_get_dir_len(const iso9660_dir_t *p_idr);
1107 
1108 #ifdef FIXME
1109 uint8_t iso9660_get_dir_size(const iso9660_dir_t *p_idr);
1110 
1111 lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
1112 #endif
1113 
1120  char * iso9660_dir_to_name (const iso9660_dir_t *p_iso9660_dir);
1121 
1125  mode_t iso9660_get_posix_filemode(const iso9660_stat_t *p_iso_dirent);
1126 
1131  char *iso9660_get_preparer_id(const iso9660_pvd_t *p_pvd);
1132 
1138  /*out*/ cdio_utf8_t **p_psz_preparer_id);
1139 
1144  char *iso9660_get_publisher_id(const iso9660_pvd_t *p_pvd);
1145 
1151  /*out*/ cdio_utf8_t **p_psz_publisher_id);
1152 
1153  uint8_t iso9660_get_pvd_type(const iso9660_pvd_t *p_pvd);
1154 
1155  const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd);
1156 
1157  int iso9660_get_pvd_space_size(const iso9660_pvd_t *p_pvd);
1158 
1159  int iso9660_get_pvd_block_size(const iso9660_pvd_t *p_pvd) ;
1160 
1164  int iso9660_get_pvd_version(const iso9660_pvd_t *pvd) ;
1165 
1170  char *iso9660_get_system_id(const iso9660_pvd_t *p_pvd);
1171 
1186  bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit);
1187 
1193  /*out*/ cdio_utf8_t **p_psz_system_id);
1194 
1195 
1200 
1205  char *iso9660_get_volume_id(const iso9660_pvd_t *p_pvd);
1206 
1212  /*out*/ cdio_utf8_t **p_psz_volume_id);
1213 
1218  char *iso9660_get_volumeset_id(const iso9660_pvd_t *p_pvd);
1219 
1225  /*out*/ cdio_utf8_t **p_psz_volumeset_id);
1226 
1227  /* pathtable */
1228 
1230  void iso9660_pathtable_init (void *pt);
1231 
1232  unsigned int iso9660_pathtable_get_size (const void *pt);
1233 
1234  uint16_t iso9660_pathtable_l_add_entry (void *pt, const char name[],
1235  uint32_t extent, uint16_t parent);
1236 
1237  uint16_t iso9660_pathtable_m_add_entry (void *pt, const char name[],
1238  uint32_t extent, uint16_t parent);
1239 
1244  void iso9660_set_pvd (void *pd, const char volume_id[],
1245  const char application_id[],
1246  const char publisher_id[], const char preparer_id[],
1247  uint32_t iso_size, const void *root_dir,
1248  uint32_t path_table_l_extent,
1249  uint32_t path_table_m_extent,
1250  uint32_t path_table_size, const time_t *pvd_time);
1251 
1252  void iso9660_set_evd (void *pd);
1253 
1257  bool iso9660_ifs_is_xa (const iso9660_t * p_iso);
1258 
1259 
1260 #ifndef DO_NOT_WANT_COMPATIBILITY
1261 
1262 #define iso9660_isdchar iso9660_is_dchar
1263 #define iso9660_isachar iso9660_is_achar
1264 #endif /*DO_NOT_WANT_COMPATIBILITY*/
1265 
1266 #ifdef __cplusplus
1267 }
1268 #endif /* __cplusplus */
1269 
1270 #undef ISODCL
1271 #endif /* CDIO_ISO9660_H_ */
1272 
1273 /*
1274  * Local variables:
1275  * c-file-style: "gnu"
1276  * tab-width: 8
1277  * indent-tabs-mode: nil
1278  * End:
1279  */
iso9660_ltime_s::lt_day
char lt_day[ISODCL(7, 8)]
Definition: iso9660.h:215
iso_extension_enums
enum iso_extension_enum_s iso_extension_enums
iso9660_dir_s::file_unit_size
iso711_t file_unit_size
Definition: iso9660.h:261
iso9660_filelist_free
void iso9660_filelist_free(CdioISO9660FileList_t *p_filelist)
iso9660_get_system_id
char * iso9660_get_system_id(const iso9660_pvd_t *p_pvd)
iso9660_svd_s::modification_date
iso9660_ltime_t modification_date
Definition: iso9660.h:487
strncpy_pad_check
strncpy_pad_check
Definition: iso9660.h:170
ISO_EXTENSION_ROCK_RIDGE
@ ISO_EXTENSION_ROCK_RIDGE
Definition: iso9660.h:558
iso9660_strncpy_pad
char * iso9660_strncpy_pad(char dst[], const char src[], size_t len, enum strncpy_pad_check _check)
iso9660_ifs_get_system_id
bool iso9660_ifs_get_system_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_system_id)
iso9660_stat_s::size
uint32_t size
Definition: iso9660.h:537
iso9660_ifs_find_lsn_with_path
iso9660_stat_t * iso9660_ifs_find_lsn_with_path(iso9660_t *p_iso, lsn_t i_lsn, char **ppsz_path)
iso9660_fs_stat
iso9660_stat_t * iso9660_fs_stat(CdIo_t *p_cdio, const char psz_path[])
ISO_RECORD
@ ISO_RECORD
Definition: iso9660.h:112
bool_3way_t
bool_3way_t
Definition: types.h:236
ISO_MAX_VOLUME_ID
#define ISO_MAX_VOLUME_ID
Maximum number of characters in a volume id.
Definition: iso9660.h:154
iso9660_dir_s::volume_sequence_number
iso723_t volume_sequence_number
Definition: iso9660.h:269
iso9660_t
struct _iso9660_s iso9660_t
Definition: iso9660.h:572
iso9660_is_dchar
bool iso9660_is_dchar(int c)
iso9660_stat_s::lsn
lsn_t lsn
Definition: iso9660.h:536
iso9660_pvd_s::root_directory_record
iso9660_dir_t root_directory_record
Definition: iso9660.h:315
iso9660_pvd_s::logical_block_size
iso723_t logical_block_size
Definition: iso9660.h:305
iso9660_ifs_read_pvd
bool iso9660_ifs_read_pvd(const iso9660_t *p_iso, iso9660_pvd_t *p_pvd)
iso9660_pathtable_m_add_entry
uint16_t iso9660_pathtable_m_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
iso9660_dirlist_free
void iso9660_dirlist_free(CdioISO9660DirList_t *p_filelist)
iso9660_svd_s::abstract_file_id
dchar_t abstract_file_id[37]
Definition: iso9660.h:480
iso9660_svd_s::system_id
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition: iso9660.h:407
iso9660_svd_s::application_id
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition: iso9660.h:461
iso9660_svd_s::escape_sequences
char escape_sequences[32]
Definition: iso9660.h:414
iso9660_pathtable_l_add_entry
uint16_t iso9660_pathtable_l_add_entry(void *pt, const char name[], uint32_t extent, uint16_t parent)
iso9660_open_fuzzy_ext
iso9660_t * iso9660_open_fuzzy_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
ISO_DRESERVED1
@ ISO_DRESERVED1
Definition: iso9660.h:114
iso_flag_enums
enum iso_flag_enum_s iso_flag_enums
iso9660_get_volume_id
char * iso9660_get_volume_id(const iso9660_pvd_t *p_pvd)
iso9660_get_root_lsn
lsn_t iso9660_get_root_lsn(const iso9660_pvd_t *p_pvd)
iso9660_dtime_s::dt_second
iso711_t dt_second
Definition: iso9660.h:191
iso_extension_enum_s
iso_extension_enum_s
Definition: iso9660.h:554
iso9660_pathname_isofy
char * iso9660_pathname_isofy(const char psz_path[], uint16_t i_version)
iso9660_pvd_s::type_l_path_table
iso731_t type_l_path_table
Definition: iso9660.h:307
cdio.h
The top-level header for libcdio: the CD Input and Control library. Applications include this for any...
iso9660_get_application_id
char * iso9660_get_application_id(iso9660_pvd_t *p_pvd)
iso9660_get_preparer_id
char * iso9660_get_preparer_id(const iso9660_pvd_t *p_pvd)
iso9660_get_posix_filemode
mode_t iso9660_get_posix_filemode(const iso9660_stat_t *p_iso_dirent)
types.h
Common type definitions used pervasively in libcdio.
iso9660_ifs_find_lsn
iso9660_stat_t * iso9660_ifs_find_lsn(iso9660_t *p_iso, lsn_t i_lsn)
iso9660_get_dtime
bool iso9660_get_dtime(const iso9660_dtime_t *idr_date, bool b_localtime, struct tm *tm)
iso9660_ltime_s::lt_minute
char lt_minute[ISODCL(11, 12)]
Definition: iso9660.h:217
iso9660_ifs_fuzzy_read_superblock
bool iso9660_ifs_fuzzy_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask, uint16_t i_fuzz)
iso9660_fs_read_superblock
bool iso9660_fs_read_superblock(CdIo_t *p_cdio, iso_extension_mask_t iso_extension_mask)
iso9660_svd_s::file_structure_version
iso711_t file_structure_version
Definition: iso9660.h:498
lsn_t
int32_t lsn_t
Definition: types.h:266
CdioISO9660DirList_t
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:519
iso9660_have_rr
bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit)
iso9660_stat_s::tm
struct tm tm
Definition: iso9660.h:534
iso721_t
uint16_t iso721_t
Definition: iso9660.h:51
iso9660_ltime_s::lt_hour
char lt_hour[ISODCL(9, 10)]
Definition: iso9660.h:216
iso9660_dir_s::xa_length
iso711_t xa_length
Definition: iso9660.h:250
iso9660_ifs_get_volumeset_id
bool iso9660_ifs_get_volumeset_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volumeset_id)
iso733_t
uint64_t iso733_t
Definition: iso9660.h:56
iso9660_stat_s
Unix stat-like version of iso9660_dir.
Definition: iso9660.h:530
iso9660_pvd_s::publisher_id
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition: iso9660.h:325
iso9660_set_pvd
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_dtime_s::dt_month
iso711_t dt_month
Definition: iso9660.h:186
ISO9660_NOCHECK
@ ISO9660_NOCHECK
Definition: iso9660.h:171
iso9660_ltime_s::lt_hsecond
char lt_hsecond[ISODCL(15, 16)]
Definition: iso9660.h:219
iso9660_pvd_s::expiration_date
iso9660_ltime_t expiration_date
Definition: iso9660.h:377
ISO9660_7BIT
@ ISO9660_7BIT
Definition: iso9660.h:172
iso_vd_enums
enum iso_vd_enum_s iso_vd_enums
iso9660_pvd_s::type
iso711_t type
Definition: iso9660.h:292
iso9660_get_publisher_id
char * iso9660_get_publisher_id(const iso9660_pvd_t *p_pvd)
iso9660_dtime_s::dt_day
iso711_t dt_day
Definition: iso9660.h:188
ISO_BLOCKSIZE
@ ISO_BLOCKSIZE
Definition: iso9660.h:96
iso9660_pvd_s::version
iso711_t version
Definition: iso9660.h:295
LEN_ISONAME
@ LEN_ISONAME
Definition: iso9660.h:86
iso9660_get_pvd_version
int iso9660_get_pvd_version(const iso9660_pvd_t *pvd)
iso9660_dir_calc_record_size
unsigned int iso9660_dir_calc_record_size(unsigned int namelen, unsigned int su_len)
iso9660_set_evd
void iso9660_set_evd(void *pd)
iso712_t
int8_t iso712_t
Definition: iso9660.h:50
iso9660_get_pvd_block_size
int iso9660_get_pvd_block_size(const iso9660_pvd_t *p_pvd)
iso9660_fs_stat_translate
iso9660_stat_t * iso9660_fs_stat_translate(CdIo_t *p_cdio, const char psz_path[])
iso9660_dir_s::recording_time
iso9660_dtime_t recording_time
Definition: iso9660.h:257
iso9660_dir_init_new_su
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)
iso9660_name_translate
int iso9660_name_translate(const char *psz_oldname, char *psz_newname)
iso9660_get_volumeset_id
char * iso9660_get_volumeset_id(const iso9660_pvd_t *p_pvd)
iso9660_svd_s::root_directory_record
iso9660_dir_t root_directory_record
Definition: iso9660.h:430
iso9660_dirname_valid_p
bool iso9660_dirname_valid_p(const char psz_path[])
iso9660_svd_s::volume_id
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition: iso9660.h:409
iso9660_fs_readdir
CdioList_t * iso9660_fs_readdir(CdIo_t *p_cdio, const char psz_path[])
iso9660_ifs_get_publisher_id
bool iso9660_ifs_get_publisher_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_publisher_id)
iso9660_xa_s
"Extended Architecture" according to the Philips Yellow Book.
Definition: xa.h:100
iso9660_open_fuzzy
iso9660_t * iso9660_open_fuzzy(const char *psz_path, uint16_t i_fuzz)
strncpy_pad_check_t
enum strncpy_pad_check strncpy_pad_check_t
iso9660_svd_s::publisher_id
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]
Definition: iso9660.h:437
ISO_MULTIEXTENT
@ ISO_MULTIEXTENT
Definition: iso9660.h:116
iso9660_pvd_s::root_directory_filename
char root_directory_filename
Definition: iso9660.h:318
iso9660_svd_s::logical_block_size
iso723_t logical_block_size
Definition: iso9660.h:417
iso9660_svd_s::unused4
uint8_t unused4[1]
Definition: iso9660.h:499
iso9660_ifs_get_joliet_level
uint8_t iso9660_ifs_get_joliet_level(iso9660_t *p_iso)
CdIo_t
struct _CdIo CdIo_t
Definition: cdio.h:47
CdioISO9660FileList_t
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:513
iso9660_iso_seek_read
long int iso9660_iso_seek_read(const iso9660_t *p_iso, void *ptr, lsn_t start, long int i_size)
iso9660_svd_s::bibliographic_file_id
dchar_t bibliographic_file_id[37]
Definition: iso9660.h:482
ISO_DRESERVED2
@ ISO_DRESERVED2
Definition: iso9660.h:115
iso9660_pvd_s::volume_set_size
iso723_t volume_set_size
Definition: iso9660.h:303
iso9660_close
bool iso9660_close(iso9660_t *p_iso)
iso9660_svd_s::preparer_id
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition: iso9660.h:449
iso9660_pvd_s::preparer_id
achar_t preparer_id[ISO_MAX_PREPARER_ID]
Definition: iso9660.h:336
iso9660_dir_add_entry_su
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)
iso9660_svd_s::flags
char flags
Definition: iso9660.h:406
iso9660_name_translate_ext
int iso9660_name_translate_ext(const char *psz_oldname, char *psz_newname, uint8_t i_joliet_level)
iso9660_stat_s::type
enum iso9660_stat_s::@12 type
iso9660_pvd_s::unused2
uint8_t unused2[8]
Definition: iso9660.h:299
ISO_STANDARD_ID
#define ISO_STANDARD_ID
Definition: iso9660.h:164
iso9660_svd_s::opt_type_m_path_table
iso732_t opt_type_m_path_table
Definition: iso9660.h:427
ISO_EXTENSION_JOLIET_LEVEL3
@ ISO_EXTENSION_JOLIET_LEVEL3
Definition: iso9660.h:557
iso9660_ifs_readdir
CdioList_t * iso9660_ifs_readdir(iso9660_t *p_iso, const char psz_path[])
iso9660_open_ext
iso9660_t * iso9660_open_ext(const char *psz_path, iso_extension_mask_t iso_extension_mask)
GNUC_PACKED
PRAGMA_BEGIN_PACKED struct iso9660_dtime_s GNUC_PACKED
iso9660_pathtable_init
void iso9660_pathtable_init(void *pt)
iso9660_svd_s::effective_date
iso9660_ltime_t effective_date
Definition: iso9660.h:494
iso9660_svd_s::application_data
char application_data[512]
Definition: iso9660.h:500
iso9660_dtime_s::dt_year
iso711_t dt_year
Definition: iso9660.h:185
iso9660_fs_find_lsn_with_path
iso9660_stat_t * iso9660_fs_find_lsn_with_path(CdIo_t *p_cdio, lsn_t i_lsn, char **ppsz_full_filename)
iso9660_pvd_s::copyright_file_id
dchar_t copyright_file_id[37]
Definition: iso9660.h:359
iso9660_svd_s::unused2
char unused2[8]
Definition: iso9660.h:411
iso9660_pvd_s::system_id
achar_t system_id[ISO_MAX_SYSTEM_ID]
Definition: iso9660.h:297
iso9660_svd_s::expiration_date
iso9660_ltime_t expiration_date
Definition: iso9660.h:491
iso_flag_enum_s
iso_flag_enum_s
Definition: iso9660.h:107
iso9660_set_ltime_with_timezone
void iso9660_set_ltime_with_timezone(const struct tm *_tm, int timezone, iso9660_ltime_t *p_pvd_date)
iso_vd_enum_s
iso_vd_enum_s
Definition: iso9660.h:120
iso9660_pvd_s::type_m_path_table
iso732_t type_m_path_table
Definition: iso9660.h:311
iso9660_svd_s
ISO-9660 Supplementary Volume Descriptor.
Definition: iso9660.h:400
iso9660_pvd_s::application_data
char application_data[512]
Definition: iso9660.h:386
iso9660_pvd_s::volume_space_size
iso733_t volume_space_size
Definition: iso9660.h:300
iso9660_pvd_s::unused3
uint8_t unused3[32]
Definition: iso9660.h:302
iso9660_fs_read_pvd
bool iso9660_fs_read_pvd(const CdIo_t *p_cdio, iso9660_pvd_t *p_pvd)
iso9660_svd_s::volume_sequence_number
iso723_t volume_sequence_number
Definition: iso9660.h:416
iso9660_dir_s
Format of an ISO-9660 directory record.
Definition: iso9660.h:248
iso9660_stat_free
void iso9660_stat_free(iso9660_stat_t *p_stat)
iso9660_pvd_s::modification_date
iso9660_ltime_t modification_date
Definition: iso9660.h:373
iso9660_pvd_s::volume_sequence_number
iso723_t volume_sequence_number
Definition: iso9660.h:304
iso9660_stat_s::_STAT_FILE
@ _STAT_FILE
Definition: iso9660.h:540
iso9660_set_dtime_with_timezone
void iso9660_set_dtime_with_timezone(const struct tm *p_tm, int timezone, iso9660_dtime_t *p_idr_date)
iso9660_dir_s::interleave_gap
iso711_t interleave_gap
Definition: iso9660.h:265
iso9660_ltime_s
ISO-9660 longer-format time structure.
Definition: iso9660.h:207
iso9660_svd_s::creation_date
iso9660_ltime_t creation_date
Definition: iso9660.h:484
rock.h
Things related to the Rock Ridge Interchange Protocol (RRIP)
iso9660_get_pvd_id
const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd)
iso_enums1
enum iso_enum1_s iso_enums1
iso9660_svd_s::opt_type_l_path_table
iso731_t opt_type_l_path_table
Definition: iso9660.h:422
ISO_EXISTENCE
@ ISO_EXISTENCE
Definition: iso9660.h:109
iso9660_ifs_get_application_id
bool iso9660_ifs_get_application_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_app_id)
iso9660_dirlist_new
CdioISO9660DirList_t * iso9660_dirlist_new(void)
PRAGMA_END_PACKED
#define PRAGMA_END_PACKED
Definition: types.h:169
iso9660_pvd_s::volume_set_id
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition: iso9660.h:321
iso9660_pvd_s::volume_id
dchar_t volume_id[ISO_MAX_VOLUME_ID]
Definition: iso9660.h:298
iso9660_get_dir_len
uint8_t iso9660_get_dir_len(const iso9660_dir_t *p_idr)
iso9660_stat_s::_STAT_DIR
@ _STAT_DIR
Definition: iso9660.h:540
dchar_t
char dchar_t
Definition: iso9660.h:59
iso9660_stat_s::rr
iso_rock_statbuf_t rr
Definition: iso9660.h:532
ISO_EXTENSION_JOLIET_LEVEL1
@ ISO_EXTENSION_JOLIET_LEVEL1
Definition: iso9660.h:555
iso9660_svd_s::path_table_size
iso733_t path_table_size
Definition: iso9660.h:418
iso9660_dir_s::file_flags
uint8_t file_flags
Definition: iso9660.h:258
ISO_VD_SUPPLEMENTARY
@ ISO_VD_SUPPLEMENTARY
Definition: iso9660.h:123
iso732_t
uint32_t iso732_t
Definition: iso9660.h:55
iso9660_dir_s::length
iso711_t length
Definition: iso9660.h:249
iso9660_svd_s::type_l_path_table
iso731_t type_l_path_table
Definition: iso9660.h:420
iso9660_pvd_s::creation_date
iso9660_ltime_t creation_date
Definition: iso9660.h:370
ISO_ASSOCIATED
@ ISO_ASSOCIATED
Definition: iso9660.h:111
iso9660_pvd_s::unused4
uint8_t unused4[1]
Definition: iso9660.h:385
ISO_VD_PARITION
@ ISO_VD_PARITION
Definition: iso9660.h:124
iso9660_pvd_s::file_structure_version
iso711_t file_structure_version
Definition: iso9660.h:384
iso9660_set_dtime
void iso9660_set_dtime(const struct tm *tm, iso9660_dtime_t *idr_date)
iso9660_svd_s::unused5
uint8_t unused5[653]
Definition: iso9660.h:502
iso9660_ifs_is_xa
bool iso9660_ifs_is_xa(const iso9660_t *p_iso)
iso9660_svd_s::volume_space_size
iso733_t volume_space_size
Definition: iso9660.h:412
iso9660_dir_to_name
char * iso9660_dir_to_name(const iso9660_dir_t *p_iso9660_dir)
ISODCL
#define ISODCL(from, to)
Definition: iso9660.h:72
iso9660_set_ltime
void iso9660_set_ltime(const struct tm *_tm, iso9660_ltime_t *p_pvd_date)
ISO_DIRECTORY
@ ISO_DIRECTORY
Definition: iso9660.h:110
iso9660_pvd_s::unused5
uint8_t unused5[653]
Definition: iso9660.h:388
MAX_ISOPATHNAME
@ MAX_ISOPATHNAME
Definition: iso9660.h:94
ISO9660_ACHARS
@ ISO9660_ACHARS
Definition: iso9660.h:173
MAX_ISONAME
@ MAX_ISONAME
Definition: iso9660.h:90
iso9660_pvd_s::unused1
char unused1[1]
Definition: iso9660.h:296
ISO_MAX_PREPARER_ID
@ ISO_MAX_PREPARER_ID
Definition: iso9660.h:92
iso9660_pvd_s::opt_type_l_path_table
iso731_t opt_type_l_path_table
Definition: iso9660.h:309
ISO_MAX_VOLUMESET_ID
#define ISO_MAX_VOLUMESET_ID
Maximum number of characters in a volume-set id.
Definition: iso9660.h:157
iso9660_filelist_new
CdioISO9660FileList_t * iso9660_filelist_new(void)
iso9660_dir_s::len
iso711_t len
Definition: iso9660.h:283
ISO9660_DCHARS
@ ISO9660_DCHARS
Definition: iso9660.h:174
iso_extension_mask_t
uint8_t iso_extension_mask_t
Definition: iso9660.h:547
iso_enum1_s
iso_enum1_s
Definition: iso9660.h:83
iso9660_ifs_get_preparer_id
bool iso9660_ifs_get_preparer_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_preparer_id)
iso9660_stat_s::secsize
uint32_t secsize
Definition: iso9660.h:538
iso9660_is_achar
bool iso9660_is_achar(int c)
iso9660_pathtable_get_size
unsigned int iso9660_pathtable_get_size(const void *pt)
iso9660_svd_s::version
iso711_t version
Definition: iso9660.h:405
ISO_MAX_PUBLISHER_ID
#define ISO_MAX_PUBLISHER_ID
Maximum number of characters in a publisher id.
Definition: iso9660.h:148
ISO_FILE
@ ISO_FILE
Definition: iso9660.h:108
iso9660_dtime_s::dt_hour
iso711_t dt_hour
Definition: iso9660.h:189
iso_rock_statbuf_s
Definition: rock.h:282
iso9660_svd_s::type
iso711_t type
Definition: iso9660.h:401
ISO_PROTECTION
@ ISO_PROTECTION
Definition: iso9660.h:113
ISO_PVD_SECTOR
@ ISO_PVD_SECTOR
Definition: iso9660.h:84
iso9660_svd_s::type_m_path_table
iso732_t type_m_path_table
Definition: iso9660.h:425
ISO_VD_PRIMARY
@ ISO_VD_PRIMARY
Definition: iso9660.h:122
iso9660_stat_s::b_xa
bool b_xa
Definition: iso9660.h:541
iso9660_ltime_s::lt_year
char lt_year[ISODCL(1, 4)]
Definition: iso9660.h:208
iso723_t
uint32_t iso723_t
Definition: iso9660.h:53
iso9660_svd_s::copyright_file_id
dchar_t copyright_file_id[37]
Definition: iso9660.h:473
ISO_EXTENSION_HIGH_SIERRA
@ ISO_EXTENSION_HIGH_SIERRA
Definition: iso9660.h:559
iso9660_ifs_read_superblock
bool iso9660_ifs_read_superblock(iso9660_t *p_iso, iso_extension_mask_t iso_extension_mask)
iso9660_svd_s::volume_set_id
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]
Definition: iso9660.h:435
iso722_t
uint16_t iso722_t
Definition: iso9660.h:52
iso9660_dir_s::extent
iso733_t extent
Definition: iso9660.h:252
iso731_t
uint32_t iso731_t
Definition: iso9660.h:54
ISO_MAX_APPLICATION_ID
#define ISO_MAX_APPLICATION_ID
Maximum number of characters in an application id.
Definition: iso9660.h:151
iso9660_pvd_s
ISO-9660 Primary Volume Descriptor.
Definition: iso9660.h:291
iso9660_get_pvd_space_size
int iso9660_get_pvd_space_size(const iso9660_pvd_t *p_pvd)
iso9660_dir_init_new
void iso9660_dir_init_new(void *dir, uint32_t self, uint32_t ssize, uint32_t parent, uint32_t psize, const time_t *dir_time)
iso9660_svd_s::root_directory_filename
char root_directory_filename
Definition: iso9660.h:432
ISO_MAX_SYSTEM_ID
@ ISO_MAX_SYSTEM_ID
Definition: iso9660.h:88
ISO_EVD_SECTOR
@ ISO_EVD_SECTOR
Definition: iso9660.h:85
ISO_VD_END
@ ISO_VD_END
Definition: iso9660.h:125
iso9660_dtime_s::dt_minute
iso711_t dt_minute
Definition: iso9660.h:190
iso9660_svd_s::volume_set_size
iso723_t volume_set_size
Definition: iso9660.h:415
iso9660_fs_find_lsn
#define iso9660_fs_find_lsn
Definition: iso9660.h:887
iso9660_dir_s::filename
union iso9660_dir_s::@11 filename
iso9660_stat_s::xa
iso9660_xa_t xa
Definition: iso9660.h:539
EMPTY_ARRAY_SIZE
#define EMPTY_ARRAY_SIZE
Definition: iso9660.h:62
ISO_VD_BOOT_RECORD
@ ISO_VD_BOOT_RECORD
Definition: iso9660.h:121
iso9660_dtime_s::dt_gmtoff
iso712_t dt_gmtoff
Definition: iso9660.h:192
iso9660_pathname_valid_p
bool iso9660_pathname_valid_p(const char psz_path[])
CdioList_t
struct _CdioList CdioList_t
Definition: ds.h:33
ISO_EXTENSION_JOLIET_LEVEL2
@ ISO_EXTENSION_JOLIET_LEVEL2
Definition: iso9660.h:556
PRAGMA_BEGIN_PACKED
#define PRAGMA_BEGIN_PACKED
Definition: types.h:168
achar_t
char achar_t
Definition: iso9660.h:58
posix.h
various POSIX definitions.
iso711_t
uint8_t iso711_t
ISO 9660 Integer and Character types.
Definition: iso9660.h:49
iso9660_get_ltime
bool iso9660_get_ltime(const iso9660_ltime_t *p_ldate, struct tm *p_tm)
iso9660_get_pvd_type
uint8_t iso9660_get_pvd_type(const iso9660_pvd_t *p_pvd)
iso9660_dir_s::str
char str[1]
Definition: iso9660.h:284
ds.h
The top-level header for list-related data structures.
iso9660_ifs_stat
iso9660_stat_t * iso9660_ifs_stat(iso9660_t *p_iso, const char psz_path[])
iso9660_pvd_s::application_id
achar_t application_id[ISO_MAX_APPLICATION_ID]
Definition: iso9660.h:347
iso9660_dtime_s
ISO-9660 shorter-format time structure. See ECMA 9.1.5.
Definition: iso9660.h:184
iso9660_ltime_s::lt_month
char lt_month[ISODCL(5, 6)]
Definition: iso9660.h:211
iso9660_stat_s::filename
char filename[EMPTY_ARRAY_SIZE]
Definition: iso9660.h:542
iso9660_open
iso9660_t * iso9660_open(const char *psz_path)
iso9660_ltime_s::lt_second
char lt_second[ISODCL(13, 14)]
Definition: iso9660.h:218
iso9660_ltime_s::lt_gmtoff
iso712_t lt_gmtoff
Definition: iso9660.h:222
iso9660_pvd_s::opt_type_m_path_table
iso732_t opt_type_m_path_table
Definition: iso9660.h:313
iso9660_pvd_s::abstract_file_id
dchar_t abstract_file_id[37]
Definition: iso9660.h:366
iso9660_pvd_s::bibliographic_file_id
dchar_t bibliographic_file_id[37]
Definition: iso9660.h:368
iso9660_pvd_s::path_table_size
iso733_t path_table_size
Definition: iso9660.h:306
iso9660_ifs_stat_translate
iso9660_stat_t * iso9660_ifs_stat_translate(iso9660_t *p_iso, const char psz_path[])
iso9660_pvd_s::effective_date
iso9660_ltime_t effective_date
Definition: iso9660.h:380
iso9660_ifs_get_volume_id
bool iso9660_ifs_get_volume_id(iso9660_t *p_iso, cdio_utf8_t **p_psz_volume_id)
iso9660_dir_s::size
iso733_t size
Definition: iso9660.h:254
xa.h
Things related to the ISO-9660 XA (Extended Attributes) format.
cdio_utf8_t
char cdio_utf8_t
UTF-8 char definition.
Definition: types.h:234

Generated for libcdio by doxygen 1.8.17