Str8 str8_read_entire_file(Arena *arena, Str8 filename) { /* TODO(pryazha): Make it crossplatform already */ Assert(filename.ptr); Assert(filename.length); Str8 result = {0}; Arena *tmp = arena_alloc(0); char *cfilename = str8_to_cstr(tmp, filename); FILE *f = fopen(cfilename, "rb"); if (!f) return result; fseek(f, 0, SEEK_END); U64 size = ftell(f); rewind(f); U8 *mem = arena_push(arena, size+1); fread(mem, size, 1, f); fclose(f); mem[size] = 0; result = str8(mem, size); arena_release(tmp); return result; }