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