diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
commit | 166877cf15f6afa89c9f8a61e267d485868d0ee1 (patch) | |
tree | 9f080314edc4fb293f91227cdc1c01cfec8d7bae /src/cynic.h | |
parent | 8ebdc95621bc61fdf3c98cd7ae4ddca67398df23 (diff) | |
download | ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.tar.gz ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.zip |
+disgrace and rework of ungrateful.h
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) |