diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/common.h | 90 | ||||
-rw-r--r-- | include/compress_cli.h | 42 | ||||
-rw-r--r-- | include/simple_writer.h | 87 |
3 files changed, 131 insertions, 88 deletions
diff --git a/include/common.h b/include/common.h index ea27edc..b0c7abb 100644 --- a/include/common.h +++ b/include/common.h @@ -9,25 +9,17 @@ #include "config.h" -#include "sqfs/xattr_writer.h" #include "sqfs/xattr_reader.h" -#include "sqfs/compressor.h" -#include "sqfs/id_table.h" #include "sqfs/inode.h" #include "sqfs/table.h" -#include "sqfs/error.h" -#include "sqfs/meta_writer.h" #include "sqfs/data_reader.h" -#include "sqfs/block_processor.h" -#include "sqfs/block_writer.h" -#include "sqfs/frag_table.h" -#include "sqfs/dir_writer.h" #include "sqfs/dir_reader.h" #include "sqfs/block.h" #include "sqfs/xattr.h" #include "sqfs/dir.h" -#include "sqfs/io.h" +#include "simple_writer.h" +#include "compress_cli.h" #include "fstream.h" #include "compat.h" #include "fstree.h" @@ -35,39 +27,6 @@ #include <stddef.h> -typedef struct { - const char *filename; - sqfs_block_writer_t *blkwr; - sqfs_frag_table_t *fragtbl; - sqfs_block_processor_t *data; - sqfs_dir_writer_t *dirwr; - sqfs_meta_writer_t *dm; - sqfs_meta_writer_t *im; - sqfs_compressor_t *cmp; - sqfs_id_table_t *idtbl; - sqfs_file_t *outfile; - sqfs_super_t super; - fstree_t fs; - sqfs_xattr_writer_t *xwr; -} sqfs_writer_t; - -typedef struct { - const char *filename; - char *fs_defaults; - char *comp_extra; - size_t block_size; - size_t devblksize; - size_t max_backlog; - size_t num_jobs; - - int outmode; - SQFS_COMPRESSOR comp_id; - - bool exportable; - bool no_xattr; - bool quiet; -} sqfs_writer_cfg_t; - typedef struct sqfs_hard_link_t { struct sqfs_hard_link_t *next; sqfs_u32 inode_number; @@ -77,35 +36,6 @@ typedef struct sqfs_hard_link_t { #define container_of(ptr, type, member) \ ((type *)((char *)ptr - offsetof(type, member))) -/* - High level helper function to serialize an entire file system tree to - a squashfs inode table and directory table. - - The data is written to the given file descriptor and the super block is - update accordingly (inode and directory table start and total size). - - The function internally creates two meta data writers and uses - meta_writer_write_inode to serialize the inode table of the fstree. - - Returns 0 on success. Prints error messages to stderr on failure. - */ -int sqfs_serialize_fstree(const char *filename, sqfs_writer_t *wr); - -/* Print out fancy statistics for squashfs packing tools */ -void sqfs_print_statistics(const sqfs_super_t *super, - const sqfs_block_processor_t *blk, - const sqfs_block_writer_t *wr); - -void compressor_print_available(void); - -SQFS_COMPRESSOR compressor_get_default(void); - -int compressor_cfg_init_options(sqfs_compressor_config_t *cfg, - SQFS_COMPRESSOR id, - size_t block_size, char *options); - -void compressor_print_help(SQFS_COMPRESSOR id); - int inode_stat(const sqfs_tree_node_t *node, struct stat *sb); char *sqfs_tree_node_get_path(const sqfs_tree_node_t *node); @@ -118,14 +48,6 @@ int write_data_from_file(const char *filename, sqfs_block_processor_t *data, sqfs_inode_generic_t **inode, sqfs_file_t *file, int flags); -void sqfs_writer_cfg_init(sqfs_writer_cfg_t *cfg); - -int sqfs_writer_init(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *wrcfg); - -int sqfs_writer_finish(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *cfg); - -void sqfs_writer_cleanup(sqfs_writer_t *sqfs, int status); - void sqfs_perror(const char *file, const char *action, int error_code); int sqfs_tree_find_hard_links(const sqfs_tree_node_t *root, @@ -143,14 +65,6 @@ int mkdir_p(const char *path); void print_version(const char *progname); /* - Create an liblzo2 based LZO compressor. - - XXX: This must be in libcommon instead of libsquashfs for legal reasons. - */ -int lzo_compressor_create(const sqfs_compressor_config_t *cfg, - sqfs_compressor_t **out); - -/* Parse a number optionally followed by a KMG suffix (case insensitive). Prints an error message to stderr and returns -1 on failure, 0 on success. diff --git a/include/compress_cli.h b/include/compress_cli.h new file mode 100644 index 0000000..1ac7972 --- /dev/null +++ b/include/compress_cli.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * compress_cli.h + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#ifndef COMPRESS_CLI_H +#define COMPRESS_CLI_H + +#include "sqfs/compressor.h" +#include "sqfs/super.h" +#include "sqfs/block.h" +#include "sqfs/error.h" +#include "sqfs/io.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void compressor_print_available(void); + +SQFS_COMPRESSOR compressor_get_default(void); + +int compressor_cfg_init_options(sqfs_compressor_config_t *cfg, + SQFS_COMPRESSOR id, + size_t block_size, char *options); + +void compressor_print_help(SQFS_COMPRESSOR id); + +/* + Create an liblzo2 based LZO compressor. + + XXX: This must be in libcommon instead of libsquashfs for legal reasons. + */ +int lzo_compressor_create(const sqfs_compressor_config_t *cfg, + sqfs_compressor_t **out); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPRESS_CLI_H */ diff --git a/include/simple_writer.h b/include/simple_writer.h new file mode 100644 index 0000000..1a3302b --- /dev/null +++ b/include/simple_writer.h @@ -0,0 +1,87 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * simple_writer.h + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#ifndef SIMPLE_WRITER_H +#define SIMPLE_WRITER_H + +#include "config.h" + +#include "sqfs/block_processor.h" +#include "sqfs/block_writer.h" +#include "sqfs/xattr_writer.h" +#include "sqfs/meta_writer.h" +#include "sqfs/frag_table.h" +#include "sqfs/dir_writer.h" +#include "sqfs/compressor.h" +#include "sqfs/id_table.h" +#include "sqfs/error.h" +#include "sqfs/io.h" + +#include "fstree.h" + +typedef struct { + const char *filename; + sqfs_block_writer_t *blkwr; + sqfs_frag_table_t *fragtbl; + sqfs_block_processor_t *data; + sqfs_dir_writer_t *dirwr; + sqfs_meta_writer_t *dm; + sqfs_meta_writer_t *im; + sqfs_compressor_t *cmp; + sqfs_id_table_t *idtbl; + sqfs_file_t *outfile; + sqfs_super_t super; + fstree_t fs; + sqfs_xattr_writer_t *xwr; +} sqfs_writer_t; + +typedef struct { + const char *filename; + char *fs_defaults; + char *comp_extra; + size_t block_size; + size_t devblksize; + size_t max_backlog; + size_t num_jobs; + + int outmode; + SQFS_COMPRESSOR comp_id; + + bool exportable; + bool no_xattr; + bool quiet; +} sqfs_writer_cfg_t; + +#ifdef __cplusplus +extern "C" { +#endif + +void sqfs_writer_cfg_init(sqfs_writer_cfg_t *cfg); + +int sqfs_writer_init(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *wrcfg); + +int sqfs_writer_finish(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *cfg); + +void sqfs_writer_cleanup(sqfs_writer_t *sqfs, int status); + +/* + High level helper function to serialize an entire file system tree to + a squashfs inode table and directory table. The super block is update + accordingly. + + The function internally creates two meta data writers and uses + meta_writer_write_inode to serialize the inode table of the fstree. + + Returns 0 on success. Prints error messages to stderr on failure. + The filename is used to prefix error messages. + */ +int sqfs_serialize_fstree(const char *filename, sqfs_writer_t *wr); + +#ifdef __cplusplus +} +#endif + +#endif /* SIMPLE_WRITER_H */ |