#pragma once #include "../basic/basic.h" struct FileIter { bool is_valid; bool is_directory; String absolute_path; String relative_path; String filename; String path; Allocator allocator; Arena *arena; TempArena temp; union { struct Win32_FileIter *w32; void *dir; }; }; String ReadFile(Allocator arena, String path); bool WriteFile(String path, String data); String GetAbsolutePath(Allocator arena, String relative); bool IsValid(const FileIter &it); void Advance(FileIter *it); FileIter IterateFiles(Allocator allocator, String path); bool InitOS(); String GetExePath(Allocator allocator); String GetExeDir(Allocator allocator); bool FileExists(String path); bool IsDir(String path); bool IsFile(String path); struct Process { bool is_valid; String error_message; char platform[32]; }; Process RunEx(String cmd); int Wait(Process *process);