#include #include #include #include void* read_file(const char* path, size_t* out_len) { FILE* f = fopen(path, "r"); if (!f) { return NULL; } fseek(f, 0, SEEK_END); long f_len = ftell(f); rewind(f); char* buf = malloc(f_len + 1); assert(buf); memset(buf, 0, f_len + 1); size_t num_read = fread(buf, f_len, 1, f); assert(num_read == 1); fclose(f); if (out_len) { *out_len = f_len + 1; } return buf; }