4 struct iso9660_dir_record
{
6 * ISO standard directory record.
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
));
23 struct rrii_dir_record
{
25 * Rock Ridge directory record extensions.
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 */
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 major/minor */
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 */
40 struct inode
*reparented_inode
;
45 * Extent (contiguous array of logical sectors).
49 struct dir_extent
*next
;
52 struct inode_dir_entry
{
54 char *name
; /* Pointer to real name */
55 char i_name
[ISO9660_MAX_FILE_ID_LEN
+1]; /* ISO 9660 name */
56 char *r_name
; /* Rock Ridge name */
60 int i_count
; /* usage counter of this inode */
61 int i_refcount
; /* reference counter of this inode */
62 int i_mountpoint
; /* flag for inode being used as a mount point */
63 struct stat i_stat
; /* inode properties */
64 struct dir_extent extent
; /* first extent of file */
65 struct inode_dir_entry
*dir_contents
; /* contents of directory */
66 size_t dir_size
; /* number of inodes in this directory */
67 char *s_name
; /* Rock Ridge symbolic link */
68 int skip
; /* skip inode because of reparenting */
73 * Global mount options.
75 int norock
; /* Bool: dont use Rock Ridge */
78 #define D_DIRECTORY 0x2
79 #define D_NOT_LAST_EXTENT 0x80