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