diff options
Diffstat (limited to 'prb_os_io.c')
-rw-r--r-- | prb_os_io.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/prb_os_io.c b/prb_os_io.c new file mode 100644 index 0000000..d35b73f --- /dev/null +++ b/prb_os_io.c @@ -0,0 +1,31 @@ +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; +} |