diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-02-22 23:38:23 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-02-22 23:38:23 +0100 |
commit | 7350bebc4ceee0bf065e73f392edb725f8d0cd14 (patch) | |
tree | 002dcaf28f184e473bd33117ff59a3626701c241 /tar | |
parent | aecc6dc5a9971eb4f1309f0754b0f213347c4d11 (diff) |
libcommon: stdin file: Fix size accounting for sparse files
The file has to report the "apparent size" for sparse files, but
internally work with the actual size in the tar ball.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tar')
-rw-r--r-- | tar/tar2sqfs.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/tar/tar2sqfs.c b/tar/tar2sqfs.c index f505f6b..69d445e 100644 --- a/tar/tar2sqfs.c +++ b/tar/tar2sqfs.c @@ -250,11 +250,9 @@ fail_arg: static int write_file(tar_header_decoded_t *hdr, file_info_t *fi, sqfs_u64 filesize) { - const sparse_map_t *it; sqfs_inode_generic_t *inode; size_t size, max_blk_count; sqfs_file_t *file; - sqfs_u64 sum; int flags; int ret; @@ -278,21 +276,10 @@ static int write_file(tar_header_decoded_t *hdr, file_info_t *fi, inode->base.type = SQFS_INODE_FILE; fi->user_ptr = inode; - if (hdr->sparse != NULL) { - for (sum = 0, it = hdr->sparse; it != NULL; it = it->next) - sum += it->count; - - file = sqfs_get_stdin_file(input_file, hdr->sparse, sum); - if (file == NULL) { - perror("packing files"); - return -1; - } - } else { - file = sqfs_get_stdin_file(input_file, NULL, filesize); - if (file == NULL) { - perror("packing files"); - return -1; - } + file = sqfs_get_stdin_file(input_file, hdr->sparse, filesize); + if (file == NULL) { + perror("packing files"); + return -1; } flags = 0; |