xref: /minix3/minix/fs/isofs/inode.h (revision 7c48de6cc4c6d56f2277d378dba01dbac8a8c3b9)
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