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