3,14 → 3,18 |
size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) { |
unsigned bytes_read = 0; |
unsigned bytes_count = size * nmemb; |
_ksys_file_read_file(stream->name, stream->position, bytes_count, ptr, &bytes_read); |
stream->position += bytes_read; |
ksys_bdfe_t info; |
// TODO: Handle _ksys_file_get_info error somehow |
if (!_ksys_file_get_info(stream->name, &info)) { |
if (stream->position >= info.size) { |
stream->eof = 1; |
|
for (size_t i = 0; i < bytes_count; i++) { |
char c = fgetc(stream); |
|
if (c == EOF) { |
break; |
} |
|
ptr[i] = c; |
|
bytes_read++; |
} |
|
return bytes_read / size; |
} |