From: momoyon Date: Sun, 6 Apr 2025 16:13:27 +0000 (+0500) Subject: Change slurp_file to read in text_mode X-Git-Url: https://www.git.momoyon.org/?a=commitdiff_plain;h=d0e4289fdb2907313d96ee7957b930d48dfdad2d;p=commonlib.git Change slurp_file to read in text_mode --- 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; }