From e7f69c8fbbbcbddde84933b2becd91e787d1ac63 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Fri, 11 Apr 2025 01:15:01 +0200 Subject: Intial commit Signed-off-by: Johnny Richard --- src/utils.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/utils.c (limited to 'src/utils.c') diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 0000000..5adbd0f --- /dev/null +++ b/src/utils.c @@ -0,0 +1,53 @@ +#include +#include +#include "utils.h" + +char * +read_file_contents(char *file_path) +{ + FILE *file; + int file_size; + + file = fopen(file_path, "r"); + if (file == NULL) { + perror("fopen"); + return NULL; + } + + if (fseek(file, 0, SEEK_END) == -1) { + perror("fseek SEEK_END"); + fclose(file); + return NULL; + } + + if ((file_size = ftell(file)) == -1) { + perror("ftell"); + fclose(file); + return NULL; + } + + if (fseek(file, 0, SEEK_SET) == -1) { + perror("fseek 0 SEEK_SET"); + fclose(file); + return NULL; + } + + char *file_content = (char *)calloc(file_size + 1, sizeof(char)); + if (file_content == NULL) { + fprintf(stderr, "Could not allocate mem for file_content\n"); + fclose(file); + return NULL; + } + + size_t ret = fread(file_content, sizeof(char), file_size, file); + if (ret == 0 && ferror(file) != 0) { + perror("fread"); + free(file_content); + fclose(file); + return NULL; + } + + fclose(file); + + return file_content; +} -- cgit v1.2.3