From 9b5904c9627d75e5d7962dabea60d30c5a457038 Mon Sep 17 00:00:00 2001 From: Benjamyn Love Date: Tue, 5 Dec 2023 10:15:16 +1100 Subject: [PATCH] Added in fileloader library --- libs/fileLoader.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ libs/fileLoader.h | 5 +++++ 2 files changed, 59 insertions(+) create mode 100644 libs/fileLoader.c create mode 100644 libs/fileLoader.h diff --git a/libs/fileLoader.c b/libs/fileLoader.c new file mode 100644 index 0000000..acaf829 --- /dev/null +++ b/libs/fileLoader.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fileLoader.h" + +char *load_file_to_mem(char *filename) { + int fd = open(filename, O_RDONLY); + + if (fd < 0) { + printf("\n\"%s \" could not open", filename); + exit(1); + } + + struct stat statbuf; + int err = fstat(fd, &statbuf); + if (err < 0) { + printf("\n\"%s \" could not open", filename); + exit(2); + } + + char *filecontents = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0); + if (filecontents == MAP_FAILED) { + printf("Mapping failed"); + exit(3); + } + + + return filecontents; +} + +int unmap_file(char *ptr, char *filename) { + int fd = open(filename, O_RDONLY); + + if (fd < 0) { + printf("\n\"%s \" could not open", filename); + exit(1); + } + + struct stat statbuf; + int err = fstat(fd, &statbuf); + err = munmap(ptr, statbuf.st_size); + if (err != 0) + { + printf("Unmapping failed"); + return 1; + } + return 0; +} diff --git a/libs/fileLoader.h b/libs/fileLoader.h new file mode 100644 index 0000000..8eba000 --- /dev/null +++ b/libs/fileLoader.h @@ -0,0 +1,5 @@ +#ifndef HEADER_FILE +#define HEADER_FILE +char *load_file_to_mem(char *filename); +int unmap_file(char *ptr, char *filename); +#endif