#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); String GetWorkingDir(Allocator arena); bool IsAbsolute(String path); struct StdoutPollInfo { int64_t size_read; int64_t size_available; }; struct Process { bool is_valid; String error_message; int exit_code; char platform[6 * 8]; int64_t view_id; // text editor view bool scroll_to_end; }; Process CreateCommandLineProcess(String command_line, String working_dir); bool WaitForExit(Process *process); bool PollExitCode(Process *process); void KillProcess(Process *process); StdoutPollInfo PollStdout(Process *process, char *buffer, int64_t buffer_size);