From d0e4289fdb2907313d96ee7957b930d48dfdad2d Mon Sep 17 00:00:00 2001 From: momoyon Date: Sun, 6 Apr 2025 21:13:27 +0500 Subject: [PATCH] Change slurp_file to read in text_mode --- commonlib.h | 13 +++++-------- tests/.slurp_file.out.expected | 16 +--------------- tests/slurp_file.c | 4 ++-- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/commonlib.h b/commonlib.h index ebef2ca..d1b219d 100644 --- a/commonlib.h +++ b/commonlib.h @@ -335,7 +335,7 @@ bool c_os_file_exists(cstr filename) { goto defer const char *c_slurp_file(const char* filename, int *file_size) { - FILE* f = fopen(filename, "rb"); + FILE* f = fopen(filename, "r"); char* result = NULL; if (f == NULL){ @@ -355,8 +355,6 @@ const char *c_slurp_file(const char* filename, int *file_size) { defer(NULL); } - *file_size = (int)fsize; - result = C_MALLOC(sizeof(char)*(fsize+1)); if (result == NULL){ @@ -369,13 +367,12 @@ const char *c_slurp_file(const char* filename, int *file_size) { defer(NULL); } - if (fread((char*)result, sizeof(char), fsize, f) != fsize){ - c_log_error("'%s': %s", filename, strerror(errno)); - defer(NULL); - } + size_t read = fread((char*)result, sizeof(char), fsize, f); + + *file_size = (int)read; // set null-terminator - result[fsize] = '\0'; + result[read] = '\0'; defer: if (f) fclose(f); diff --git a/tests/.slurp_file.out.expected b/tests/.slurp_file.out.expected index f2d6e97..2720f7a 100644 --- a/tests/.slurp_file.out.expected +++ b/tests/.slurp_file.out.expected @@ -1,29 +1,15 @@ [INFO] buff: '#define COMMONLIB_IMPLEMENTATION - #include "../commonlib.h" - - int main(void) { - int file_size = 0; - const char *buff = c_slurp_file(__FILE__, &file_size); - - if (file_size < 0) { return 1; } - - c_log_info("buff: '%s' (%d bytes)", buff, file_size); - - // We don't care about leaking memory since we are just exiting right away! - return 0; - } - -' (375 bytes) +' (353 bytes) diff --git a/tests/slurp_file.c b/tests/slurp_file.c index f5413ea..4822d9a 100644 --- a/tests/slurp_file.c +++ b/tests/slurp_file.c @@ -4,11 +4,11 @@ int main(void) { int file_size = 0; const char *buff = c_slurp_file(__FILE__, &file_size); - + if (file_size < 0) { return 1; } c_log_info("buff: '%s' (%d bytes)", buff, file_size); - + // We don't care about leaking memory since we are just exiting right away! return 0; } -- 2.39.5