#include #include "../types/pathbuf.h" // #include // #include // #include // #include #ifndef FILE_H_ #define FILE_H_ typedef struct { bool open; // true if an entry is open bool success; // true if the previous operation was successful bool is_dir; // true if the open entry is a directory bool child_is_dir; // true if the selected child is a directory PathBuf entry; // write buffer for entry port PathBuf action; // write buffer for action port PathBuf path; // path of the open entry PathBuf child_path; // path of the selected child u32 pointer; // pointer in the open entry, whether dir or file u32 length; // length of the open entry, whether dir or file u32 pointer_write; // write cache for pointer u32 length_write; // write cache for length DIR *dir; // structure pointing to current directory FILE *file; // opaque ID referencing the open file FILE *tmpfile; // to open file and keep existing file open struct dirent *child; // currently-selected directory child information u32 dir_i; // index of next child to read from dir } FileDevice; void init_filesystem(); bool filesystem_enabled(); void fs_push_entry(FileDevice *fs, u8 byte); void fs_push_action(FileDevice *fs, u8 byte); bool fs_push_byte(PathBuf *buf, u8 byte); u8 fs_read_byte(FileDevice *fs); void fs_write_byte(FileDevice *fs, u8 byte); void fs_ascend(FileDevice *fs); void fs_descend(FileDevice *fs); void fs_seek(FileDevice *fs); void fs_resize(FileDevice *fs); void fs_select_child(FileDevice *fs, u32 pointer); #endif