First version
[3rdparty/ote_partner/tlk.git] / include / lib / fs.h
1 /*
2  * Copyright (c) 2009 Travis Geiselbrecht
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining
5  * a copy of this software and associated documentation files
6  * (the "Software"), to deal in the Software without restriction,
7  * including without limitation the rights to use, copy, modify, merge,
8  * publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be
13  * included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  */
23 #ifndef __LIB_FS_H
24 #define __LIB_FS_H
25
26 void fs_init(void);
27
28 struct file_stat {
29         bool is_dir;
30         off_t size;
31 };
32
33 typedef void *filecookie;
34 typedef void *fscookie;
35
36 int fs_mount(const char *path, const char *device);
37 int fs_unmount(const char *path);
38
39 /* file api */
40 int fs_open_file(const char *path, filecookie *fcookie);
41 int fs_read_file(filecookie fcookie, void *buf, off_t offset, size_t len);
42 int fs_close_file(filecookie fcookie);
43 int fs_stat_file(filecookie fcookie, struct file_stat *);
44
45 /* convenience routines */
46 ssize_t fs_load_file(const char *path, void *ptr, size_t maxlen);
47
48 /* walk through a path string, removing duplicate path seperators, flattening . and .. references */
49 void fs_normalize_path(char *path);
50
51 #endif
52