diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-06-11 02:17:28 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-06-11 02:19:01 +0200 |
commit | e7ddca51274e88b68aa8eeec8ebd4be48eca3934 (patch) | |
tree | 3492eb308c54257bfa8501bb0a56e2170a9f50c4 /mkfs/mkfs.c | |
parent | 8825f5973740ae2baaab4d61ac16bc870873c167 (diff) |
Encapsulate data/fragment processing in data_writer_t data structure
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'mkfs/mkfs.c')
-rw-r--r-- | mkfs/mkfs.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index 019a233..77e9581 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -40,8 +40,8 @@ static int padd_file(sqfs_info_t *info) int main(int argc, char **argv) { int status = EXIT_FAILURE, ret; + data_writer_t *data; sqfs_info_t info; - uint64_t start; memset(&info, 0, sizeof(info)); @@ -111,39 +111,37 @@ int main(int argc, char **argv) info.super.bytes_used += ret; } - if (write_data_to_image(&info)) + data = data_writer_create(&info.super, info.cmp, info.outfd); + if (data == NULL) goto out_cmp; + if (write_data_to_image(data, &info)) + goto out_data; + if (sqfs_serialize_fstree(info.outfd, &info.super, &info.fs, info.cmp, &info.idtbl)) { - goto out_cmp; - } - - info.super.fragment_entry_count = info.num_fragments; - - if (sqfs_write_table(info.outfd, &info.super, info.fragments, - sizeof(info.fragments[0]), info.num_fragments, - &start, info.cmp)) { - goto out_cmp; + goto out_data; } - info.super.fragment_table_start = start; + if (data_writer_write_fragment_table(data)) + goto out_data; if (id_table_write(&info.idtbl, info.outfd, &info.super, info.cmp)) - goto out_cmp; + goto out_data; if (write_xattr(&info)) - goto out_cmp; + goto out_data; if (sqfs_super_write(&info.super, info.outfd)) - goto out_cmp; + goto out_data; if (padd_file(&info)) - goto out_cmp; + goto out_data; status = EXIT_SUCCESS; +out_data: + data_writer_destroy(data); out_cmp: - free(info.fragments); info.cmp->destroy(info.cmp); out_fstree: fstree_cleanup(&info.fs); |