1 /* Function prototypes for iso9660 file system. */ 2 3 struct dir_record; 4 struct dir_extent; 5 struct rrii_dir_record; 6 struct iso9660_dir_record; 7 struct iso9660_vol_pri_desc; 8 struct inode; 9 10 /* inode.c */ 11 int fs_putnode(ino_t ino_nr, unsigned int count); 12 13 struct inode* alloc_inode(void); 14 struct inode* find_inode(ino_t i); 15 void put_inode(struct inode *i); 16 void dup_inode(struct inode *i_node); 17 struct inode* get_inode(ino_t i); 18 19 int read_inode(struct inode *i_node, struct dir_extent *extent, size_t offset, 20 size_t *new_offset); 21 void read_inode_iso9660(struct inode *i, 22 const struct iso9660_dir_record *dir_rec); 23 void read_inode_extents(struct inode *i, 24 const struct iso9660_dir_record *dir_rec, struct dir_extent *extent, 25 size_t *offset); 26 void read_inode_susp(struct inode *i, const struct iso9660_dir_record *dir_rec, 27 struct buf *bp, size_t offset); 28 29 int check_dir_record(const struct iso9660_dir_record *d, size_t offset); 30 31 int check_inodes(void); 32 33 /* link.c */ 34 ssize_t fs_rdlink(ino_t ino_nr, struct fsdriver_data *data, size_t bytes); 35 36 /* mount.c */ 37 int fs_mount(dev_t dev, unsigned int flags, struct fsdriver_node *root_node, 38 unsigned int *res_flags); 39 int fs_mountpt(ino_t ino_nr); 40 void fs_unmount(void); 41 42 /* path.c */ 43 int fs_lookup(ino_t ino_nr, char *name, struct fsdriver_node *node, 44 int *is_mountpt); 45 46 /* read.c */ 47 ssize_t fs_read(ino_t ino_nr, struct fsdriver_data *data, size_t bytes, 48 off_t pos, int call); 49 ssize_t fs_getdents(ino_t ino_nr, struct fsdriver_data *data, size_t bytes, 50 off_t *pos); 51 52 /* stadir.c */ 53 int fs_stat(ino_t ino_nr, struct stat *statbuf); 54 int fs_statvfs(struct statvfs *st); 55 56 /* super.c */ 57 int release_vol_pri_desc(struct iso9660_vol_pri_desc *v_pri); 58 int read_vds(struct iso9660_vol_pri_desc *v_pri, dev_t dev); 59 60 /* susp.c */ 61 int parse_susp(struct rrii_dir_record *dir, char *buffer); 62 void parse_susp_buffer(struct rrii_dir_record *dir, char *buffer, u32_t size); 63 64 /* susp_rock_ridge.c */ 65 void parse_susp_rock_ridge_sl(struct rrii_dir_record *dir, char *buffer, 66 int length); 67 int parse_susp_rock_ridge(struct rrii_dir_record *dir, char *buffer); 68 69 /* utility.c */ 70 struct dir_extent* alloc_extent(void); 71 void free_extent(struct dir_extent *extent); 72 struct buf* read_extent_block(struct dir_extent *e, size_t block); 73 size_t get_extent_absolute_block_id(struct dir_extent *e, size_t block); 74 75 time_t date7_to_time_t(const u8_t *date); 76