// File\r
//\r
\r
-// reads entire file and gives back the string holding the contents. (caller must be responsible for freeing the string!)\r
-const char* c_slurp_file(const char* filename, bool* success);\r
+// reads entire file and gives back the file content and filesize in bytes. (caller must be responsible for freeing the string!)\r
+const char* c_slurp_file(const char* filename, int *file_size);\r
void c_touch_file_if_doesnt_exist(cstr file);\r
\r
//\r
result = ret_val;\\r
goto defer\r
\r
-const char *c_slurp_file(const char* filename, bool* success) {\r
+const char *c_slurp_file(const char* filename, int *file_size) {\r
FILE* f = fopen(filename, "rb");\r
char* result = NULL;\r
\r
defer(NULL);\r
}\r
\r
+ *file_size = (int)fsize;\r
+\r
result = C_MALLOC(sizeof(char)*(fsize+1));\r
\r
if (result == NULL){\r
\r
defer:\r
if (f) fclose(f);\r
- *success = result != NULL;\r
+ if (result == NULL) *file_size = -1;\r
return result;\r
}\r
\r
[INFO] buff: '#define COMMONLIB_IMPLEMENTATION
+
#include "../commonlib.h"
+
+
int main(void) {
- bool success = false;
- const char *buff = c_slurp_file(__FILE__, &success);
+
+ int file_size = 0;
+
+ const char *buff = c_slurp_file(__FILE__, &file_size);
+
- if (!success) { return 1; }
- c_log_info("buff: '%s'", buff);
+ 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)
#include "../commonlib.h"
int main(void) {
- bool success = false;
- const char *buff = c_slurp_file(__FILE__, &success);
+ int file_size = 0;
+ const char *buff = c_slurp_file(__FILE__, &file_size);
- if (!success) { return 1; }
+ if (file_size < 0) { return 1; }
- c_log_info("buff: '%s'", buff);
+ 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;