aboutsummaryrefslogtreecommitdiff
path: root/lib/sqfs
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2022-12-04 00:39:47 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-01-19 16:24:56 +0100
commit4160b50a0b4c51f8b7191928cdf38d9fb0147fe2 (patch)
tree996998b7fe506101c8d91aeb71891eaac358902e /lib/sqfs
parent42194bf57d470e548e03c44f5c2340d7d23a3ecb (diff)
Add a helper function to initialize libsquashfs objects
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/sqfs')
-rw-r--r--lib/sqfs/block_processor/block_processor.c3
-rw-r--r--lib/sqfs/block_writer.c3
-rw-r--r--lib/sqfs/comp/gzip.c4
-rw-r--r--lib/sqfs/comp/lz4.c4
-rw-r--r--lib/sqfs/comp/lzma.c4
-rw-r--r--lib/sqfs/comp/xz.c4
-rw-r--r--lib/sqfs/comp/zstd.c4
-rw-r--r--lib/sqfs/data_reader.c4
-rw-r--r--lib/sqfs/dir_reader/dir_reader.c4
-rw-r--r--lib/sqfs/dir_writer.c3
-rw-r--r--lib/sqfs/frag_table.c4
-rw-r--r--lib/sqfs/id_table.c4
-rw-r--r--lib/sqfs/meta_reader.c4
-rw-r--r--lib/sqfs/meta_writer.c3
-rw-r--r--lib/sqfs/unix/io_file.c4
-rw-r--r--lib/sqfs/win32/io_file.c4
-rw-r--r--lib/sqfs/xattr/xattr_reader.c3
-rw-r--r--lib/sqfs/xattr/xattr_writer.c5
18 files changed, 34 insertions, 34 deletions
diff --git a/lib/sqfs/block_processor/block_processor.c b/lib/sqfs/block_processor/block_processor.c
index 97b8958..e223718 100644
--- a/lib/sqfs/block_processor/block_processor.c
+++ b/lib/sqfs/block_processor/block_processor.c
@@ -268,6 +268,8 @@ int sqfs_block_processor_create_ex(const sqfs_block_processor_desc_t *desc,
if (proc == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(proc, block_processor_destroy, NULL);
+
proc->max_backlog = desc->max_backlog;
proc->max_block_size = desc->max_block_size;
proc->frag_tbl = desc->tbl;
@@ -275,7 +277,6 @@ int sqfs_block_processor_create_ex(const sqfs_block_processor_desc_t *desc,
proc->file = desc->file;
proc->uncmp = desc->uncmp;
proc->stats.size = sizeof(proc->stats);
- ((sqfs_object_t *)proc)->destroy = block_processor_destroy;
/* we need at least one current data block + one fragment block */
if (proc->max_backlog < 3)
diff --git a/lib/sqfs/block_writer.c b/lib/sqfs/block_writer.c
index 7302736..1612986 100644
--- a/lib/sqfs/block_writer.c
+++ b/lib/sqfs/block_writer.c
@@ -219,9 +219,10 @@ sqfs_block_writer_t *sqfs_block_writer_create(sqfs_file_t *file,
if (wr == NULL)
return NULL;
+ sqfs_object_init(wr, block_writer_destroy, NULL);
+
((sqfs_block_writer_t *)wr)->write_data_block = write_data_block;
((sqfs_block_writer_t *)wr)->get_block_count = get_block_count;
- ((sqfs_object_t *)wr)->destroy = block_writer_destroy;
wr->flags = flags;
wr->file = file;
wr->devblksz = devblksz;
diff --git a/lib/sqfs/comp/gzip.c b/lib/sqfs/comp/gzip.c
index 39d4227..beacfb8 100644
--- a/lib/sqfs/comp/gzip.c
+++ b/lib/sqfs/comp/gzip.c
@@ -277,6 +277,8 @@ int gzip_compressor_create(const sqfs_compressor_config_t *cfg,
if (gzip == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(gzip, gzip_destroy, gzip_create_copy);
+
gzip->opt.level = cfg->level;
gzip->opt.window = cfg->opt.gzip.window_size;
gzip->opt.strategies = cfg->flags & SQFS_COMP_FLAG_GZIP_ALL;
@@ -286,8 +288,6 @@ int gzip_compressor_create(const sqfs_compressor_config_t *cfg,
base->do_block = gzip_do_block;
base->write_options = gzip_write_options;
base->read_options = gzip_read_options;
- ((sqfs_object_t *)base)->copy = gzip_create_copy;
- ((sqfs_object_t *)base)->destroy = gzip_destroy;
if (gzip->compress) {
ret = deflateInit2(&gzip->strm, cfg->level,
diff --git a/lib/sqfs/comp/lz4.c b/lib/sqfs/comp/lz4.c
index 152ae75..77f4a6e 100644
--- a/lib/sqfs/comp/lz4.c
+++ b/lib/sqfs/comp/lz4.c
@@ -156,6 +156,8 @@ int lz4_compressor_create(const sqfs_compressor_config_t *cfg,
if (lz4 == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(lz4, lz4_destroy, lz4_create_copy);
+
lz4->high_compression = (cfg->flags & SQFS_COMP_FLAG_LZ4_HC) != 0;
lz4->block_size = cfg->block_size;
@@ -164,8 +166,6 @@ int lz4_compressor_create(const sqfs_compressor_config_t *cfg,
lz4_uncomp_block : lz4_comp_block;
base->write_options = lz4_write_options;
base->read_options = lz4_read_options;
- ((sqfs_object_t *)base)->copy = lz4_create_copy;
- ((sqfs_object_t *)base)->destroy = lz4_destroy;
*out = base;
return 0;
diff --git a/lib/sqfs/comp/lzma.c b/lib/sqfs/comp/lzma.c
index 01e6042..5456603 100644
--- a/lib/sqfs/comp/lzma.c
+++ b/lib/sqfs/comp/lzma.c
@@ -260,6 +260,8 @@ int lzma_compressor_create(const sqfs_compressor_config_t *cfg,
if (lzma == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(lzma, lzma_destroy, lzma_create_copy);
+
lzma->block_size = cfg->block_size;
lzma->flags = cfg->flags;
lzma->level = cfg->level;
@@ -273,8 +275,6 @@ int lzma_compressor_create(const sqfs_compressor_config_t *cfg,
lzma_uncomp_block : lzma_comp_block;
base->write_options = lzma_write_options;
base->read_options = lzma_read_options;
- ((sqfs_object_t *)base)->copy = lzma_create_copy;
- ((sqfs_object_t *)base)->destroy = lzma_destroy;
*out = base;
return 0;
diff --git a/lib/sqfs/comp/xz.c b/lib/sqfs/comp/xz.c
index 3fb27b2..13545ed 100644
--- a/lib/sqfs/comp/xz.c
+++ b/lib/sqfs/comp/xz.c
@@ -304,6 +304,8 @@ int xz_compressor_create(const sqfs_compressor_config_t *cfg,
if (xz == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(xz, xz_destroy, xz_create_copy);
+
xz->flags = cfg->flags;
xz->dict_size = cfg->opt.xz.dict_size;
xz->block_size = cfg->block_size;
@@ -316,8 +318,6 @@ int xz_compressor_create(const sqfs_compressor_config_t *cfg,
xz_uncomp_block : xz_comp_block;
base->write_options = xz_write_options;
base->read_options = xz_read_options;
- ((sqfs_object_t *)base)->copy = xz_create_copy;
- ((sqfs_object_t *)base)->destroy = xz_destroy;
*out = base;
return 0;
diff --git a/lib/sqfs/comp/zstd.c b/lib/sqfs/comp/zstd.c
index af5bd84..a6d7975 100644
--- a/lib/sqfs/comp/zstd.c
+++ b/lib/sqfs/comp/zstd.c
@@ -151,6 +151,8 @@ int zstd_compressor_create(const sqfs_compressor_config_t *cfg,
if (zstd == NULL)
return SQFS_ERROR_ALLOC;
+ sqfs_object_init(zstd, zstd_destroy, zstd_create_copy);
+
zstd->block_size = cfg->block_size;
zstd->level = cfg->level;
zstd->zctx = ZSTD_createCCtx();
@@ -164,8 +166,6 @@ int zstd_compressor_create(const sqfs_compressor_config_t *cfg,
zstd_uncomp_block : zstd_comp_block;
base->write_options = zstd_write_options;
base->read_options = zstd_read_options;
- ((sqfs_object_t *)base)->copy = zstd_create_copy;
- ((sqfs_object_t *)base)->destroy = zstd_destroy;
*out = base;
return 0;
diff --git a/lib/sqfs/data_reader.c b/lib/sqfs/data_reader.c
index 1033db9..c3fc1b9 100644
--- a/lib/sqfs/data_reader.c
+++ b/lib/sqfs/data_reader.c
@@ -196,14 +196,14 @@ sqfs_data_reader_t *sqfs_data_reader_create(sqfs_file_t *file,
if (data == NULL)
return NULL;
+ sqfs_object_init(data, data_reader_destroy, data_reader_copy);
+
data->frag_tbl = sqfs_frag_table_create(0);
if (data->frag_tbl == NULL) {
free(data);
return NULL;
}
- ((sqfs_object_t *)data)->destroy = data_reader_destroy;
- ((sqfs_object_t *)data)->copy = data_reader_copy;
data->file = file;
data->block_size = block_size;
data->cmp = cmp;
diff --git a/lib/sqfs/dir_reader/dir_reader.c b/lib/sqfs/dir_reader/dir_reader.c
index 68cebd3..38700df 100644
--- a/lib/sqfs/dir_reader/dir_reader.c
+++ b/lib/sqfs/dir_reader/dir_reader.c
@@ -122,6 +122,8 @@ sqfs_dir_reader_t *sqfs_dir_reader_create(const sqfs_super_t *super,
if (rd == NULL)
return NULL;
+ sqfs_object_init(rd, dir_reader_destroy, dir_reader_copy);
+
if (flags & SQFS_DIR_READER_DOT_ENTRIES) {
ret = rbtree_init(&rd->dcache, sizeof(sqfs_u32),
sizeof(sqfs_u64), dcache_key_compare);
@@ -150,8 +152,6 @@ sqfs_dir_reader_t *sqfs_dir_reader_create(const sqfs_super_t *super,
if (rd->meta_dir == NULL)
goto fail_mdir;
- ((sqfs_object_t *)rd)->destroy = dir_reader_destroy;
- ((sqfs_object_t *)rd)->copy = dir_reader_copy;
rd->super = super;
rd->flags = flags;
rd->state = DIR_STATE_NONE;
diff --git a/lib/sqfs/dir_writer.c b/lib/sqfs/dir_writer.c
index ce63a1e..f56e0a7 100644
--- a/lib/sqfs/dir_writer.c
+++ b/lib/sqfs/dir_writer.c
@@ -147,6 +147,8 @@ sqfs_dir_writer_t *sqfs_dir_writer_create(sqfs_meta_writer_t *dm,
if (writer == NULL)
return NULL;
+ sqfs_object_init(writer, dir_writer_destroy, NULL);
+
if (flags & SQFS_DIR_WRITER_CREATE_EXPORT_TABLE) {
if (array_init(&writer->export_tbl, sizeof(sqfs_u64), 512)) {
free(writer);
@@ -157,7 +159,6 @@ sqfs_dir_writer_t *sqfs_dir_writer_create(sqfs_meta_writer_t *dm,
writer->export_tbl.size * writer->export_tbl.count);
}
- ((sqfs_object_t *)writer)->destroy = dir_writer_destroy;
writer->dm = dm;
return writer;
}
diff --git a/lib/sqfs/frag_table.c b/lib/sqfs/frag_table.c
index 71627df..151df28 100644
--- a/lib/sqfs/frag_table.c
+++ b/lib/sqfs/frag_table.c
@@ -59,9 +59,9 @@ sqfs_frag_table_t *sqfs_frag_table_create(sqfs_u32 flags)
if (tbl == NULL)
return NULL;
+ sqfs_object_init(tbl, frag_table_destroy, frag_table_copy);
+
array_init(&tbl->table, sizeof(sqfs_fragment_t), 0);
- ((sqfs_object_t *)tbl)->copy = frag_table_copy;
- ((sqfs_object_t *)tbl)->destroy = frag_table_destroy;
return tbl;
}
diff --git a/lib/sqfs/id_table.c b/lib/sqfs/id_table.c
index cebf64b..ec3fdfe 100644
--- a/lib/sqfs/id_table.c
+++ b/lib/sqfs/id_table.c
@@ -58,9 +58,7 @@ sqfs_id_table_t *sqfs_id_table_create(sqfs_u32 flags)
if (tbl != NULL) {
array_init(&tbl->ids, sizeof(sqfs_u32), 0);
-
- ((sqfs_object_t *)tbl)->destroy = id_table_destroy;
- ((sqfs_object_t *)tbl)->copy = id_table_copy;
+ sqfs_object_init(tbl, id_table_destroy, id_table_copy);
}
return tbl;
diff --git a/lib/sqfs/meta_reader.c b/lib/sqfs/meta_reader.c
index cddcda6..1b48fb8 100644
--- a/lib/sqfs/meta_reader.c
+++ b/lib/sqfs/meta_reader.c
@@ -74,8 +74,8 @@ sqfs_meta_reader_t *sqfs_meta_reader_create(sqfs_file_t *file,
if (m == NULL)
return NULL;
- ((sqfs_object_t *)m)->copy = meta_reader_copy;
- ((sqfs_object_t *)m)->destroy = meta_reader_destroy;
+ sqfs_object_init(m, meta_reader_destroy, meta_reader_copy);
+
m->block_offset = 0xFFFFFFFFFFFFFFFFUL;
m->start = start;
m->limit = limit;
diff --git a/lib/sqfs/meta_writer.c b/lib/sqfs/meta_writer.c
index 2314e06..5b8898b 100644
--- a/lib/sqfs/meta_writer.c
+++ b/lib/sqfs/meta_writer.c
@@ -87,7 +87,8 @@ sqfs_meta_writer_t *sqfs_meta_writer_create(sqfs_file_t *file,
if (m == NULL)
return NULL;
- ((sqfs_object_t *)m)->destroy = meta_writer_destroy;
+ sqfs_object_init(m, meta_writer_destroy, NULL);
+
m->cmp = cmp;
m->file = file;
m->flags = flags;
diff --git a/lib/sqfs/unix/io_file.c b/lib/sqfs/unix/io_file.c
index d4c1232..e1fb9db 100644
--- a/lib/sqfs/unix/io_file.c
+++ b/lib/sqfs/unix/io_file.c
@@ -154,6 +154,8 @@ sqfs_file_t *sqfs_open_file(const char *filename, sqfs_u32 flags)
if (file == NULL)
return NULL;
+ sqfs_object_init(file, stdio_destroy, stdio_copy);
+
if (flags & SQFS_FILE_OPEN_READ_ONLY) {
file->readonly = true;
open_mode = O_RDONLY;
@@ -190,7 +192,5 @@ sqfs_file_t *sqfs_open_file(const char *filename, sqfs_u32 flags)
base->write_at = stdio_write_at;
base->get_size = stdio_get_size;
base->truncate = stdio_truncate;
- ((sqfs_object_t *)base)->copy = stdio_copy;
- ((sqfs_object_t *)base)->destroy = stdio_destroy;
return base;
}
diff --git a/lib/sqfs/win32/io_file.c b/lib/sqfs/win32/io_file.c
index cfef296..548a246 100644
--- a/lib/sqfs/win32/io_file.c
+++ b/lib/sqfs/win32/io_file.c
@@ -187,6 +187,8 @@ sqfs_file_t *sqfs_open_file(const char *filename, sqfs_u32 flags)
return NULL;
}
+ sqfs_object_init(file, stdio_destroy, stdio_copy);
+
if (flags & SQFS_FILE_OPEN_READ_ONLY) {
file->readonly = true;
access_flags = GENERIC_READ;
@@ -231,7 +233,5 @@ sqfs_file_t *sqfs_open_file(const char *filename, sqfs_u32 flags)
base->write_at = stdio_write_at;
base->get_size = stdio_get_size;
base->truncate = stdio_truncate;
- ((sqfs_object_t *)base)->destroy = stdio_destroy;
- ((sqfs_object_t *)base)->copy = stdio_copy;
return base;
}
diff --git a/lib/sqfs/xattr/xattr_reader.c b/lib/sqfs/xattr/xattr_reader.c
index a55ad2f..313da88 100644
--- a/lib/sqfs/xattr/xattr_reader.c
+++ b/lib/sqfs/xattr/xattr_reader.c
@@ -347,7 +347,6 @@ sqfs_xattr_reader_t *sqfs_xattr_reader_create(sqfs_u32 flags)
if (xr == NULL)
return NULL;
- ((sqfs_object_t *)xr)->copy = xattr_reader_copy;
- ((sqfs_object_t *)xr)->destroy = xattr_reader_destroy;
+ sqfs_object_init(xr, xattr_reader_destroy, xattr_reader_copy);
return xr;
}
diff --git a/lib/sqfs/xattr/xattr_writer.c b/lib/sqfs/xattr/xattr_writer.c
index c49aaf1..39e1b05 100644
--- a/lib/sqfs/xattr/xattr_writer.c
+++ b/lib/sqfs/xattr/xattr_writer.c
@@ -95,6 +95,8 @@ sqfs_xattr_writer_t *sqfs_xattr_writer_create(sqfs_u32 flags)
if (xwr == NULL)
return NULL;
+ sqfs_object_init(xwr, xattr_writer_destroy, xattr_writer_copy);
+
if (str_table_init(&xwr->keys))
goto fail_keys;
@@ -112,9 +114,6 @@ sqfs_xattr_writer_t *sqfs_xattr_writer_create(sqfs_u32 flags)
}
xwr->kv_block_tree.key_context = xwr;
-
- ((sqfs_object_t *)xwr)->copy = xattr_writer_copy;
- ((sqfs_object_t *)xwr)->destroy = xattr_writer_destroy;
return xwr;
fail_tree:
array_cleanup(&xwr->kv_pairs);