aboutsummaryrefslogtreecommitdiff
path: root/src/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/file.c')
-rw-r--r--src/file.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/file.c b/src/file.c
index 634bb3b..57a847a 100644
--- a/src/file.c
+++ b/src/file.c
@@ -48,3 +48,20 @@ file_size(FILE *const file)
return size;
}
+
+size_t
+file_read_sectors(FILE *const file, char *const buffer, uint32_t buffer_size,
+ uint32_t sector_size)
+{
+ const size_t bytes_read = fread(buffer, 1U, buffer_size, file);
+
+ if (ferror(file)) {
+ print_error("cannot read from file: %s", strerror(errno));
+ return 0;
+ } else if ((bytes_read % sector_size) != 0) {
+ print_error("data read from input file is not multiple of sector size");
+ return 0;
+ } else {
+ return (bytes_read / sector_size);
+ }
+}