//////////////////////////////// //~ File types typedef i32 OS_FileFlag; enum { OS_FileFlag_None = 0, OS_FileFlag_Read = (1 << 0), OS_FileFlag_Write = (1 << 1), OS_FileFlag_Create = (1 << 2), OS_FileFlag_NoWait = (1 << 3) }; Struct(OS_File) { u64 handle; }; //////////////////////////////// //~ Command types Struct(OS_CommandResult) { i32 code; String output; }; //////////////////////////////// //~ @hookdecl Startup hooks void OS_Startup(void); //////////////////////////////// //~ @hookdecl File system operations OS_File OS_OpenFile(String path, OS_FileFlag flags); void OS_CloseFile(OS_File file); String OS_ReadEntireFile(Arena *arena, OS_File file); void OS_ClearWriteFile(OS_File file, String data); void OS_DirContentsFromFullPath(Arena *arena, StringList *list, String path); String OS_GetFullPath(Arena *arena, String path); b32 OS_FileOrDirExists(String path); b32 OS_FileExists(String path); b32 OS_DirExists(String path); //////////////////////////////// //~ @hookdecl Directory helpers void OS_Mkdir(String path); //////////////////////////////// //~ @hookdecl Shell operations OS_CommandResult OS_RunCommand(Arena *arena, String cmd);