diff options
Diffstat (limited to 'src/cynic.h')
-rw-r--r-- | src/cynic.h | 83 |
1 files changed, 75 insertions, 8 deletions
diff --git a/src/cynic.h b/src/cynic.h index 2aeb6f9..5380b84 100644 --- a/src/cynic.h +++ b/src/cynic.h @@ -28,6 +28,8 @@ #include <ungrateful.h> +#define CYN_FS_MAX_FILE_SIZE (256) + #if defined(__cplusplus) extern "C" { #endif @@ -37,13 +39,13 @@ extern "C" { /* -------- Logging API -------- */ typedef enum { - UN_LOG_TRACE, - UN_LOG_DEBUG, - UN_LOG_INFO, - UN_LOG_WARNING, - UN_LOG_ERROR, - UN_LOG_FATAL, - UN_LOG_RAW + CYN_LOG_TRACE, + CYN_LOG_DEBUG, + CYN_LOG_INFO, + CYN_LOG_WARNING, + CYN_LOG_ERROR, + CYN_LOG_FATAL, + CYN_LOG_RAW } Log_Level; extern Log_Level cyn_current_log_level; @@ -52,8 +54,73 @@ extern void cyn_log_write(Log_Level level, String format, ...); extern void cyn_log_write_cstring(Log_Level level, u8 *format, ...); /* --------- Timer API --------- */ -/* --------- File API ---------- */ /* ------ Filesystem API ------- */ + +typedef enum { + CYN_FS_ATRIB_NONE = 0, +} FS_Attributes; + +typedef struct { + u64 size; + u8 data[1]; +} FS_File; + +typedef struct { + u64 attributes; + u64 file_size; + + struct { + u32 size; + u8 data[CYN_FS_MAX_FILE_SIZE]; + } name; + + u8 data[1]; +} FS_File_Header; + +typedef struct { + u8 signature[4]; + u16 reserved_a; + u16 reserved_b; + + u64 attributes; + u64 file_count; + + u8 content[1]; +} FS_Header; + +/* --------- File API ---------- */ + +typedef enum { + CYN_FILE_OK, + CYN_FILE_ERROR_MAX_PATH, + CYN_FILE_ERROR_NULL_FILENAME, + CYN_FILE_ERROR, +} File_Status; + +typedef enum { + CYN_FILE_CREATE = 1 << 2, + + CYN_FILE_ACCESS_READ = 1 << 3, + CYN_FILE_ACCESS_WRITE = 1 << 4, + + CYN_FILE_SHARE_DELETE = 1 << 5, + CYN_FILE_SHARE_READ = 1 << 6, + CYN_FILE_SHARE_WRITE = 1 << 7, + + CYN_FILE_OPEN_NEW = 1 << 8, + CYN_FILE_OPEN_EXISTING = 1 << 9, +} File_Open_Flags; + +typedef struct File_Handle File_Handle; + +// extern File_Handle *cyn_file_open(String path, File_Open_Flags flags, File_Status *status); +extern File_Handle *cyn_file_open(String path, File_Status *status); +/* path - could be partial or full, should be always with '/' + * status - is optional, + * returns NULL on error and writes error into a `status`. + * */ +extern void cyn_file_close(File_Handle *handle); + /* --------- Config API -------- */ #if defined(__cplusplus) |