1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <stdio.h>
#include "../include/assert.h"
#include "../include/memory.h"
#include "../include/str.h"
#include "../include/testing.h"
#include "../include/types.h"
MemoryFile load_file(Arena *a, const char *filename) {
FILE *file = fopen(filename, "rb");
assert(file != 0, "failed to open file: %s", filename);
MemoryFile mem_file = {0};
// Get file size
fseek(file, 0, SEEK_END);
mem_file.size = ftell(file);
fseek(file, 0, SEEK_SET);
mem_file.content = new(a, byte, mem_file.size + 1);
size bytes_read = fread(mem_file.content, 1, mem_file.size, file);
assert(bytes_read == mem_file.size, "failed to read entire file: %s",
filename);
mem_file.content[mem_file.size] = '\0'; // Null terminate
fclose(file);
return mem_file;
}
|