#include #include #include "util.h" /* Put the entire file content into the string str and the file size into *len. If errors occur, return non-zero; otherwise the return value is zero. Note that *str should be already allocated. Note that the length of the string str is actually 1+length, and the last character is the null character. */ BOOL read_entire_file(const char *file_name, char **str, NUM *len) { long file_size = 0; FILE *file = fopen(file_name, "r"); if (!file) { eprintf("%s:%Cannot open file \"%s\": ", __FILE__, __LINE__, file_name); perror(NULL); return 1; } fseek(file, 0, SEEK_END); file_size = ftell(file); fseek(file, 0, SEEK_SET); *len = 1+file_size; char *newstr = realloc(*str, 1+file_size); if (newstr == NULL) { fleprintf0("Cannot realloc\n"); return 1; } *str = newstr; fread(*str, sizeof(char), file_size, file); fclose(file); *(*str+file_size) = 0; return 0; }