feat(utilities): added the get_file_content_with_size to properly handle binary files
This commit is contained in:
parent
37a696bd38
commit
358db79882
2 changed files with 22 additions and 0 deletions
|
|
@ -482,3 +482,24 @@ char* get_file_content(char* path) {
|
|||
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue