objc

fs.h
Go to the documentation of this file.
1 
17 #pragma once
18 #include <stdbool.h>
19 #include <stddef.h>
20 #include <stdint.h>
21 
23 // GLOBALS
24 
25 #define FS_PATH_MAX 255
26 #define FS_PATH_SEPARATOR '/'
27 
28 // TYPES
30 
36 typedef struct fs_volume_t fs_volume_t;
37 
43 typedef struct {
45  bool dir;
46  char name[FS_PATH_MAX + 1];
47  size_t size;
49  size_t pos;
50  void *ctx;
51 } fs_file_t;
52 
54 // LIFECYCLE
55 
72 extern fs_volume_t *fs_vol_init_memory(size_t size);
73 
86 extern fs_volume_t *fs_vol_init_file(const char *path, size_t size);
87 
99 extern fs_volume_t *fs_vol_init_flash(size_t size);
100 
109 extern void fs_vol_finalize(fs_volume_t *volume);
110 
120 extern size_t fs_vol_size(fs_volume_t *volume, size_t *free);
121 
142 extern bool fs_vol_readdir(fs_volume_t *volume, const char *path,
143  fs_file_t *iterator);
144 
153 extern fs_file_t fs_vol_stat(fs_volume_t *volume, const char *path);
154 
163 extern bool fs_vol_mkdir(fs_volume_t *volume, const char *path);
164 
173 extern bool fs_vol_remove(fs_volume_t *volume, const char *path);
174 
184 extern bool fs_vol_move(fs_volume_t *volume, const char *old_path,
185  const char *new_path);
186 
204 fs_file_t fs_file_create(fs_volume_t *volume, const char *path);
205 
215 fs_file_t fs_file_open(fs_volume_t *volume, const char *path, bool write);
216 
223 bool fs_file_close(fs_file_t *file);
224 
234 size_t fs_file_read(fs_file_t *file, void *buffer, size_t size);
235 
245 size_t fs_file_write(fs_file_t *file, const void *buffer, size_t size);
246 
255 bool fs_file_seek(fs_file_t *file, size_t offset);
256 
fs_file_t fs_file_open(fs_volume_t *volume, const char *path, bool write)
Open an existing file for read/write.
fs_volume_t * volume
Owning volume (set by APIs)
Definition: fs.h:44
bool fs_file_close(fs_file_t *file)
Close an opened file.
struct fs_volume_t fs_volume_t
Opaque filesystem volume handle.
Definition: fs.h:36
bool fs_vol_readdir(fs_volume_t *volume, const char *path, fs_file_t *iterator)
Iterate directory entries.
fs_volume_t * fs_vol_init_file(const char *path, size_t size)
Open or create a host file–backed persistent volume.
bool fs_vol_remove(fs_volume_t *volume, const char *path)
Remove a file or (empty) directory.
size_t fs_file_write(fs_file_t *file, const void *buffer, size_t size)
Write data to an opened file.
bool dir
True if directory, false if regular file.
Definition: fs.h:45
void * ctx
Opaque context (do not modify)
Definition: fs.h:50
File and directory metadata.
Definition: fs.h:43
fs_volume_t * fs_vol_init_flash(size_t size)
Open or create a non-volatile flash-backed persistent volume.
size_t fs_vol_size(fs_volume_t *volume, size_t *free)
Return total addressable size of a mounted volume.
bool fs_file_seek(fs_file_t *file, size_t offset)
Seek to a position within an opened file.
#define FS_PATH_MAX
Maximum length of a single path component.
Definition: fs.h:25
fs_volume_t * fs_vol_init_memory(size_t size)
Create a new volatile (RAM) filesystem volume.
bool fs_vol_mkdir(fs_volume_t *volume, const char *path)
Create a directory.
void fs_vol_finalize(fs_volume_t *volume)
Unmount and release all resources for a volume.
size_t fs_file_read(fs_file_t *file, void *buffer, size_t size)
Read data from an opened file.
bool fs_vol_move(fs_volume_t *volume, const char *old_path, const char *new_path)
Move or rename a file/directory.
fs_file_t fs_file_create(fs_volume_t *volume, const char *path)
Create a new file or truncate an existing file to zero length.
size_t pos
Current file position for read/write (files only)
Definition: fs.h:49
fs_file_t fs_vol_stat(fs_volume_t *volume, const char *path)
Lookup file or directory metadata for a path.