aboutsummaryrefslogtreecommitdiff
path: root/src/cynic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cynic.h')
-rw-r--r--src/cynic.h83
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)