1 #include "const.h" 2 #include <sys/stat.h> 3 4 struct iso9660_dir_record { 5 /* 6 * ISO standard directory record. 7 */ 8 u8_t length; /* The length of the record */ 9 u8_t ext_attr_rec_length; 10 u32_t loc_extent_l; /* The same data (in this case loc_extent)is */ 11 u32_t loc_extent_m; /* saved in two ways. The first puts the le- */ 12 u32_t data_length_l; /* ast significant byte first, the second */ 13 u32_t data_length_m; /* does the opposite */ 14 u8_t rec_date[7]; /* => recording date */ 15 u8_t file_flags; /* => flags of the file */ 16 u8_t file_unit_size; /* set of blocks in interleave mode */ 17 u8_t inter_gap_size; /* gap between file units in interleave mode */ 18 u32_t vol_seq_number; /* volume sequence number: not used */ 19 u8_t length_file_id; /* Length name file */ 20 char file_id[ISO9660_MAX_FILE_ID_LEN]; /* file name */ 21 } __attribute__((packed)); 22 23 struct rrii_dir_record { 24 /* 25 * Rock Ridge directory record extensions. 26 */ 27 u8_t mtime[7]; /* stat.st_mtime */ 28 u8_t atime[7]; /* stat.st_atime */ 29 u8_t ctime[7]; /* stat.st_ctime */ 30 u8_t birthtime[7]; /* stat.st_birthtime */ 31 32 mode_t d_mode; /* file mode */ 33 uid_t uid; /* user ID of the file's owner */ 34 gid_t gid; /* group ID of the file's group */ 35 dev_t rdev; /* device ID */ 36 37 char file_id_rrip[ISO9660_RRIP_MAX_FILE_ID_LEN]; /* file name */ 38 char slink_rrip[ISO9660_RRIP_MAX_FILE_ID_LEN]; /* symbolic link */ 39 } ; 40 41 struct dir_extent { 42 /* 43 * Extent (contiguous array of logical sectors). 44 */ 45 char in_use; 46 u32_t location; 47 u32_t length; 48 struct dir_extent *next; 49 } ; 50 51 struct inode { 52 int i_count; /* usage counter of this inode */ 53 int i_mountpoint; /* flag for inode being used as a mount point */ 54 int ea_length; /* total size of extended attributes in bytes */ 55 struct stat i_stat; /* inode properties */ 56 struct dir_extent *extent; /* first extent of file */ 57 char i_name[NAME_MAX]; /* inode name */ 58 char s_link[NAME_MAX]; /* symbolic link target */ 59 } ; 60 61 struct opt { 62 /* 63 * Global mount options. 64 */ 65 int norock; /* Bool: dont use Rock Ridge */ 66 } ; 67 68 #define D_DIRECTORY 0x2 69 #define D_NOT_LAST_EXTENT 0x80 70 #define D_TYPE 0x8E 71 72