| From 7b74d23ed955206a789a96bdc3288593e702afac Mon Sep 17 00:00:00 2001 |
| From: Sean Anderson <sean.anderson@seco.com> |
| Date: Thu, 30 Dec 2021 15:16:08 -0500 |
| Subject: [PATCH] libsparse: Split off most of sparse_file_read_normal into a |
| helper function |
| |
| This carves out the core of sparse_file_read_normal and splits it off so |
| it can be reused in the next patch. No functional change intended. |
| |
| Change-Id: Id00491fd7e5bb6fa28c517a0bb32b8b506539d4d |
| Upstream-status: Backport [95657f3e5976d96073f7bbfe3a49192509999d1d] |
| Signed-off-by: Sean Anderson <sean.anderson@seco.com> |
| --- |
| libsparse/sparse_read.c | 21 ++++++++++++++++----- |
| 1 file changed, 16 insertions(+), 5 deletions(-) |
| |
| diff --git a/libsparse/sparse_read.c b/libsparse/sparse_read.c |
| index 8e188e9a4..ee4abd86a 100644 |
| --- a/libsparse/sparse_read.c |
| +++ b/libsparse/sparse_read.c |
| @@ -353,13 +353,11 @@ static int sparse_file_read_sparse(struct sparse_file *s, int fd, bool crc) |
| return 0; |
| } |
| |
| -static int sparse_file_read_normal(struct sparse_file *s, int fd) |
| +static int do_sparse_file_read_normal(struct sparse_file *s, int fd, uint32_t* buf, int64_t offset, |
| + int64_t remain) |
| { |
| int ret; |
| - uint32_t *buf = malloc(s->block_size); |
| - unsigned int block = 0; |
| - int64_t remain = s->len; |
| - int64_t offset = 0; |
| + unsigned int block = offset / s->block_size; |
| unsigned int to_read; |
| unsigned int i; |
| bool sparse_block; |
| @@ -403,6 +401,19 @@ static int sparse_file_read_normal(struct sparse_file *s, int fd) |
| return 0; |
| } |
| |
| +static int sparse_file_read_normal(struct sparse_file* s, int fd) |
| +{ |
| + int ret; |
| + uint32_t* buf = (uint32_t*)malloc(s->block_size); |
| + |
| + if (!buf) |
| + return -ENOMEM; |
| + |
| + ret = do_sparse_file_read_normal(s, fd, buf, 0, s->len); |
| + free(buf); |
| + return ret; |
| +} |
| + |
| int sparse_file_read(struct sparse_file *s, int fd, bool sparse, bool crc) |
| { |
| if (crc && !sparse) { |
| -- |
| 2.35.1.1320.gc452695387.dirty |
| |