aboutsummaryrefslogtreecommitdiff
path: root/src/std/testing.c
blob: af2d1c838bcc98f8180ef6e64ff4a74a264fde52 (plain) (blame)
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 "assert.h"
#include "memory.h"
#include "str.h"
#include "testing.h"
#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;
}