WIP: Vibra support
[neverball] / share / fs.h
1 #ifndef FS_H
2 #define FS_H
3
4 typedef struct fs_file *fs_file;
5
6 int fs_init(const char *argv0);
7 int fs_quit(void);
8
9 const char *fs_error(void);
10
11 const char *fs_base_dir(void);
12 int         fs_add_path(const char *);
13 int         fs_add_path_with_archives(const char *);
14 int         fs_set_write_dir(const char *);
15 const char *fs_get_write_dir(void);
16
17 int fs_exists(const char *);
18 int fs_remove(const char *);
19 int fs_rename(const char *, const char *);
20
21 fs_file fs_open(const char *path, const char *mode);
22 int     fs_close(fs_file);
23
24 int  fs_read(void *data, int size, int count, fs_file);
25 int  fs_write(const void *data, int size, int count, fs_file);
26 int  fs_flush(fs_file);
27 long fs_tell(fs_file);
28 int  fs_seek(fs_file, long offset, int whence);
29 int  fs_eof(fs_file);
30 int  fs_length(fs_file);
31
32 int   fs_getc(fs_file);
33 char *fs_gets(char *dst, int count, fs_file fh);
34 int   fs_putc(int c, fs_file);
35 int   fs_puts(const char *src, fs_file);
36
37 void *fs_load(const char *path, int *size);
38
39 int fs_mkdir(const char *);
40
41 #include <stdarg.h>
42
43 int fs_printf(fs_file, const char *fmt, ...);
44
45 #include "dir.h"
46 #include "array.h"
47
48 Array fs_dir_scan(const char *, int (*filter)(struct dir_item *));
49 void  fs_dir_free(Array);
50
51 const char *fs_resolve(const char *);
52
53 #endif