1 /* This file contains the definitions of ISO9660 volume descriptors. */ 2 #include "inode.h" 3 4 #define VD_BOOT_RECORD 0 5 #define VD_PRIMARY 1 6 #define VD_SUPPL 2 7 #define VD_PART 3 8 #define VD_SET_TERM 255 9 10 #define MAX_ATTEMPTS 20 /* # attempts to read the volume descriptors. 11 * After it gives up */ 12 13 /* Structure for the primary volume descriptor. */ 14 struct iso9660_vol_pri_desc { 15 /* 16 * On-disk structure format of the primary volume descriptor, 17 * 2048 bytes long. See ISO specs for details. 18 */ 19 u8_t vd_type; 20 char standard_id[ISO9660_SIZE_STANDARD_ID]; 21 u8_t vd_version; 22 u8_t pad1; 23 char system_id[ISO9660_SIZE_SYS_ID]; 24 char volume_id[ISO9660_SIZE_VOLUME_ID]; 25 u8_t pad2[8]; 26 u32_t volume_space_size_l; 27 u32_t volume_space_size_m; 28 u8_t pad3[32]; 29 u16_t volume_set_size_l; 30 u16_t volume_set_size_m; 31 u16_t volume_sequence_number_l; 32 u16_t volume_sequence_number_m; 33 u16_t logical_block_size_l; 34 u16_t logical_block_size_m; 35 u32_t path_table_size_l; 36 u32_t path_table_size_m; 37 u32_t loc_l_occ_path_table; 38 u32_t loc_opt_l_occ_path_table; 39 u32_t loc_m_occ_path_table; 40 u32_t loc_opt_m_occ_path_table; 41 u8_t root_directory[34]; 42 char volume_set_id[ISO9660_SIZE_VOLUME_SET_ID]; 43 char publisher_id[ISO9660_SIZE_PUBLISHER_ID]; 44 char data_preparer_id[ISO9660_SIZE_DATA_PREP_ID]; 45 char application_id[ISO9660_SIZE_APPL_ID]; 46 char copyright_file_id[ISO9660_SIZE_COPYRIGHT_FILE_ID]; 47 char abstract_file_id[ISO9660_SIZE_ABSTRACT_FILE_ID]; 48 char bibl_file_id[ISO9660_SIZE_BIBL_FILE_ID]; 49 char volume_cre_date[ISO9660_SIZE_DATE17]; 50 char volume_mod_date[ISO9660_SIZE_DATE17]; 51 char volume_exp_date[ISO9660_SIZE_DATE17]; 52 char volume_eff_date[ISO9660_SIZE_DATE17]; 53 u8_t file_struct_ver; 54 u8_t reserved1; 55 u8_t application_use[512]; 56 u8_t reserved2[652]; 57 58 /* End of the on-disk structure format. */ 59 60 struct inode *inode_root; 61 int i_count; 62 } __attribute__((packed)) v_pri; 63 64