72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "const.h"
 | 
						|
#include <sys/stat.h>
 | 
						|
 | 
						|
struct iso9660_dir_record {
 | 
						|
	/*
 | 
						|
	 * ISO standard directory record.
 | 
						|
	 */
 | 
						|
	u8_t length;                    /* The length of the record */
 | 
						|
	u8_t ext_attr_rec_length;
 | 
						|
	u32_t loc_extent_l;             /* The same data (in this case loc_extent)is */
 | 
						|
	u32_t loc_extent_m;             /* saved in two ways. The first puts the le- */
 | 
						|
	u32_t data_length_l;            /* ast significant byte first, the second */
 | 
						|
	u32_t data_length_m;            /* does the opposite */
 | 
						|
	u8_t rec_date[7];               /* => recording date */
 | 
						|
	u8_t file_flags;                /* => flags of the file */
 | 
						|
	u8_t file_unit_size;            /* set of blocks in interleave mode */
 | 
						|
	u8_t inter_gap_size;            /* gap between file units in interleave mode */
 | 
						|
	u32_t vol_seq_number;           /* volume sequence number: not used */
 | 
						|
	u8_t length_file_id;            /* Length name file */
 | 
						|
	char file_id[ISO9660_MAX_FILE_ID_LEN]; /* file name */
 | 
						|
} __attribute__((packed));
 | 
						|
 | 
						|
struct rrii_dir_record {
 | 
						|
	/*
 | 
						|
	 * Rock Ridge directory record extensions.
 | 
						|
	 */
 | 
						|
	u8_t mtime[7];          /* stat.st_mtime */
 | 
						|
	u8_t atime[7];          /* stat.st_atime */
 | 
						|
	u8_t ctime[7];          /* stat.st_ctime */
 | 
						|
	u8_t birthtime[7];      /* stat.st_birthtime */
 | 
						|
 | 
						|
	mode_t d_mode;          /* file mode */
 | 
						|
	uid_t uid;              /* user ID of the file's owner */
 | 
						|
	gid_t gid;              /* group ID of the file's group */
 | 
						|
	dev_t rdev;             /* device ID */
 | 
						|
 | 
						|
	char file_id_rrip[ISO9660_RRIP_MAX_FILE_ID_LEN];        /* file name */
 | 
						|
	char slink_rrip[ISO9660_RRIP_MAX_FILE_ID_LEN];          /* symbolic link */
 | 
						|
} ;
 | 
						|
 | 
						|
struct dir_extent {
 | 
						|
	/*
 | 
						|
	 * Extent (contiguous array of logical sectors).
 | 
						|
	 */
 | 
						|
	char in_use;
 | 
						|
	u32_t location;
 | 
						|
	u32_t length;
 | 
						|
	struct dir_extent *next;
 | 
						|
} ;
 | 
						|
 | 
						|
struct inode {
 | 
						|
	int i_count;                    /* usage counter of this inode */
 | 
						|
	int i_mountpoint;               /* flag for inode being used as a mount point */
 | 
						|
	int ea_length;	                /* total size of extended attributes in bytes */
 | 
						|
	struct stat i_stat;             /* inode properties */
 | 
						|
	struct dir_extent *extent;      /* first extent of file */
 | 
						|
	char i_name[NAME_MAX];          /* inode name */
 | 
						|
	char s_link[NAME_MAX];          /* symbolic link target */
 | 
						|
} ;
 | 
						|
 | 
						|
struct opt {
 | 
						|
	/*
 | 
						|
	 * Global mount options.
 | 
						|
	 */
 | 
						|
	int norock;                     /* Bool: dont use Rock Ridge */
 | 
						|
} ;
 | 
						|
 | 
						|
#define D_DIRECTORY 0x2
 | 
						|
#define D_NOT_LAST_EXTENT 0x80
 | 
						|
#define D_TYPE 0x8E
 | 
						|
 |