skip to content
==> src/read.c <==
1/* Reading a whole file into memory. */
2#include "read.h"
3
4#include <stdio.h>
5#include <stdlib.h>
6
7char *mesh_ptx_read_file(const char *path, size_t *len) {
8    FILE *f = fopen(path, "rb");
9    if (!f) return NULL;
10    size_t cap = 1 << 16, n = 0;
11    char *b = malloc(cap + 1);
12    while (b) {
13        size_t r = fread(b + n, 1, cap - n, f);
14        n += r;
15        if (n < cap) break;
16        cap *= 2;
17        char *nb = realloc(b, cap + 1);
18        if (!nb) { free(b); b = NULL; }
19        else b = nb;
20    }
21    int err = ferror(f);
22    fclose(f);
23    if (!b || err) { free(b); return NULL; }
24    b[n] = 0;
25    *len = n;
26    return b;
27}