From 7668ec5865a82f4c72999493078d641c6ac1f8db Mon Sep 17 00:00:00 2001 From: jsteube Date: Sun, 7 Aug 2022 20:36:08 +0000 Subject: [PATCH] Prepare file_to_buffer() for later use --- include/shared.h | 2 ++ src/shared.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/shared.h b/include/shared.h index 2416d963c..d70da47f7 100644 --- a/include/shared.h +++ b/include/shared.h @@ -107,4 +107,6 @@ int input_tokenizer (const u8 *input_buf, const int input_len, hc_token_t *token bool is_apple_silicon (void); #endif +char *file_to_buffer (const char *filename); + #endif // _SHARED_H diff --git a/src/shared.c b/src/shared.c index f4d4749b3..f79e2e66a 100644 --- a/src/shared.c +++ b/src/shared.c @@ -1397,3 +1397,34 @@ bool is_apple_silicon (void) } #endif // __APPLE__ + +char *file_to_buffer (const char *filename) +{ + HCFILE fp; + + if (hc_fopen (&fp, filename, "r") == true) + { + struct stat st; + + memset (&st, 0, sizeof (st)); + + if (hc_fstat (&fp, &st)) + { + hc_fclose (&fp); + + return NULL; + } + + char *buffer = malloc (st.st_size + 1); + + const size_t nread = hc_fread (buffer, 1, st.st_size, &fp); + + hc_fclose (&fp); + + buffer[nread] = 0; + + return buffer; + } + + return NULL; +}