void(* fs_delete_t)(fs_t *fs)
fs callback to delete the fs
inode_result_t(* fs_dir_create_t)(fs_t *fs, fs_inode_t *node, const char *name)
CT_LOCAL void * iter_data(fs_iter_t *iter)
os_error_t(* fs_dir_delete_t)(fs_t *fs, fs_inode_t *node, const char *name)
os_error_t(* fs_iter_end_t)(fs_iter_t *iter)
CT_LOCAL fs_inode_t * inode_new(fs_t *fs, os_dirent_t type, const char *name, const void *data)
os_error_t(* fs_iter_next_t)(fs_iter_t *iter)
os_error_t(* fs_iter_begin_t)(fs_t *fs, const fs_inode_t *dir, fs_iter_t *iter)
CT_LOCAL os_error_t mkdir_recursive(const char *path, arena_t *arena)
CT_LOCAL fs_inode_t gInvalidFileNode
os_error_t(* fs_file_delete_t)(fs_t *fs, fs_inode_t *node, const char *name)
CT_LOCAL fs_inode_t * inode_dir(fs_t *fs, const char *name, const void *data)
io_t *(* fs_query_file_t)(fs_t *fs, fs_inode_t *node, os_access_t flags)
CT_LOCAL fs_t * fs_new(void *root, const fs_callbacks_t *cb, const void *data, size_t size, arena_t *arena)
inode_result_t(* fs_file_create_t)(fs_t *fs, fs_inode_t *node, const char *name)
fs_inode_t *(* fs_query_node_t)(fs_t *fs, const fs_inode_t *node, const char *name)
CT_LOCAL CT_CONSTFN const char * inode_name(const fs_inode_t *inode)
CT_LOCAL fs_inode_t * inode_file(fs_t *fs, const char *name, const void *data)
CT_LOCAL void * fs_data(fs_t *fs)
CT_LOCAL void * inode_data(fs_inode_t *inode)
CT_LOCAL CT_CONSTFN bool inode_is(const fs_inode_t *inode, os_dirent_t type)
os_dirent_t
directory entry type
os_access_t
file access mode
#define CT_CONSTFN
mark a function as const, has no side effects and always returns the same value for the same argument...
CT_NODISCARD OUT_NOTNULL os_inode_t * dir
fs_dir_create_t pfn_create_dir
fs_iter_next_t pfn_iter_next
fs_file_create_t pfn_create_file
fs_iter_begin_t pfn_iter_begin
fs_query_file_t pfn_query_file
fs_dir_delete_t pfn_delete_dir
fs_file_delete_t pfn_delete_file
fs_iter_end_t pfn_iter_end
fs_query_node_t pfn_query_node
const fs_callbacks_t * cb
callbacks
fs_inode_t * root
root inode