/* SPDX-License-Identifier: GPL-3.0-or-later */ #ifndef MKFS_H #define MKFS_H #include "meta_writer.h" #include "squashfs.h" #include "compress.h" #include "id_table.h" #include "fstree.h" #include "config.h" #include "table.h" #include #include #include #include #include #include #include typedef struct { tree_node_t *node; uint32_t block; uint32_t offset; } idx_ref_t; typedef struct { size_t num_nodes; size_t max_nodes; idx_ref_t idx_nodes[]; } dir_index_t; typedef struct { unsigned int def_uid; unsigned int def_gid; unsigned int def_mode; unsigned int def_mtime; int outmode; int compressor; int blksz; int devblksz; bool quiet; const char *infile; const char *packdir; const char *outfile; const char *selinux; char *comp_extra; } options_t; typedef struct { int outfd; options_t opt; sqfs_super_t super; fstree_t fs; void *block; void *fragment; void *scratch; sqfs_fragment_t *fragments; size_t num_fragments; size_t max_fragments; int file_block_count; file_info_t *frag_list; size_t frag_offset; id_table_t idtbl; compressor_t *cmp; } sqfs_info_t; void process_command_line(options_t *opt, int argc, char **argv); int write_data_to_image(sqfs_info_t *info); int write_xattr(sqfs_info_t *info); int write_dir(meta_writer_t *dm, dir_info_t *dir, dir_index_t **index); int write_inode(fstree_t *fs, id_table_t *idtbl, meta_writer_t *im, meta_writer_t *dm, tree_node_t *node); int sqfs_write_inodes(sqfs_super_t *super, fstree_t *fs, int outfd, compressor_t *cmp, id_table_t *idtbl); #endif /* MKFS_H */