diff options
Diffstat (limited to 'mkfs/mksquashfs.c')
-rw-r--r-- | mkfs/mksquashfs.c | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/mkfs/mksquashfs.c b/mkfs/mksquashfs.c deleted file mode 100644 index 2f2e508..0000000 --- a/mkfs/mksquashfs.c +++ /dev/null @@ -1,118 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -#include "mksquashfs.h" -#include "util.h" - -static int padd_file(sqfs_info_t *info) -{ - size_t padd_sz = info->super.bytes_used % info->opt.devblksz; - uint8_t *buffer; - ssize_t ret; - - if (padd_sz == 0) - return 0; - - padd_sz = info->opt.devblksz - padd_sz; - - buffer = calloc(1, padd_sz); - if (buffer == NULL) { - perror("padding output file to block size"); - return -1; - } - - ret = write_retry(info->outfd, buffer, padd_sz); - - if (ret < 0) { - perror("Error padding squashfs image to page size"); - free(buffer); - return -1; - } - - if ((size_t)ret < padd_sz) { - fputs("Truncated write trying to padd squashfs image\n", - stderr); - return -1; - } - - free(buffer); - return 0; -} - -int main(int argc, char **argv) -{ - int status = EXIT_FAILURE; - sqfs_info_t info; - - memset(&info, 0, sizeof(info)); - - process_command_line(&info.opt, argc, argv); - - if (sqfs_super_init(&info.super, info.opt.blksz, info.opt.def_mtime, - info.opt.compressor)) { - return EXIT_FAILURE; - } - - if (id_table_init(&info.idtbl)) - return EXIT_FAILURE; - - info.outfd = open(info.opt.outfile, info.opt.outmode, 0644); - if (info.outfd < 0) { - perror(info.opt.outfile); - goto out_idtbl; - } - - if (sqfs_super_write(&info.super, info.outfd)) - goto out_outfd; - - if (fstree_init(&info.fs, info.opt.blksz, info.opt.def_mtime, - info.opt.def_mode, info.opt.def_uid, - info.opt.def_gid)) { - goto out_outfd; - } - - if (fstree_from_file(&info.fs, info.opt.infile)) - goto out_fstree; - - fstree_sort(&info.fs); - - info.cmp = compressor_create(info.super.compression_id, true, - info.super.block_size); - if (info.cmp == NULL) { - fputs("Error creating compressor\n", stderr); - goto out_outfd; - } - - if (write_data_to_image(&info)) - goto out_cmp; - - if (sqfs_write_inodes(&info)) - 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, - &info.super.fragment_table_start, info.cmp)) { - goto out_cmp; - } - - if (id_table_write(&info.idtbl, info.outfd, &info.super, info.cmp)) - goto out_cmp; - - if (sqfs_super_write(&info.super, info.outfd)) - goto out_cmp; - - if (padd_file(&info)) - goto out_cmp; - - status = EXIT_SUCCESS; -out_cmp: - free(info.fragments); - info.cmp->destroy(info.cmp); -out_fstree: - fstree_cleanup(&info.fs); -out_outfd: - close(info.outfd); -out_idtbl: - id_table_cleanup(&info.idtbl); - return status; -} |