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