feat(utilities): added the get_file_content_with_size to properly handle binary files

This commit is contained in:
lisk77 2025-08-28 17:00:49 +02:00
parent 37a696bd38
commit 358db79882
2 changed files with 22 additions and 0 deletions

View file

@ -62,5 +62,6 @@ int cut_path(char*, char*);
void combine_path(char*, char*); void combine_path(char*, char*);
PathType get_path_type(const char*); PathType get_path_type(const char*);
char* get_file_content(char*); char* get_file_content(char*);
char* get_file_content_with_size(char*, size_t*);
#endif // UTILITIES_H #endif // UTILITIES_H

View file

@ -482,3 +482,24 @@ char* get_file_content(char* path) {
return buf; return buf;
} }
char* get_file_content_with_size(char* path, size_t* size) {
if (!path || !size) return NULL;
FILE* file = fopen(path, "rb");
if (!file) { perror("ERROR: could not open file in get_file_content_with_size!"); return NULL; }
if (fseek(file, 0, SEEK_END) != 0) { fclose(file); return NULL; }
long file_size = ftell(file);
if (file_size < 0) { perror("ERROR: file size is negative in get_file_content_with_size!"); fclose(file); return NULL; }
if (fseek(file, 0, SEEK_SET) != 0) { fclose(file); return NULL; }
size_t n = (size_t)file_size;
char* buf = (char*)malloc(n);
if (!buf) { fclose(file); return NULL; }
size_t got = fread(buf, 1, n, file);
fclose(file);
*size = got;
return buf;
}