aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sqfs/dir.h4
-rw-r--r--include/sqfs/inode.h3
-rw-r--r--include/sqfs/meta_writer.h27
-rw-r--r--lib/sqfs/dir_writer.c26
-rw-r--r--lib/sqfs/meta_writer.c27
-rw-r--r--lib/sqfs/write_inode.c41
-rw-r--r--lib/sqfs/write_table.c14
-rw-r--r--lib/sqfshelper/serialize_fstree.c24
-rw-r--r--lib/sqfshelper/write_xattr.c50
9 files changed, 115 insertions, 101 deletions
diff --git a/include/sqfs/dir.h b/include/sqfs/dir.h
index 818ca87..22f8a57 100644
--- a/include/sqfs/dir.h
+++ b/include/sqfs/dir.h
@@ -50,7 +50,7 @@ int meta_reader_read_dir_header(meta_reader_t *m, sqfs_dir_header_t *hdr);
The function internally prints to stderr on failure */
sqfs_dir_entry_t *meta_reader_read_dir_ent(meta_reader_t *m);
-sqfs_dir_writer_t *sqfs_dir_writer_create(meta_writer_t *dm);
+sqfs_dir_writer_t *sqfs_dir_writer_create(sqfs_meta_writer_t *dm);
void sqfs_dir_writer_destroy(sqfs_dir_writer_t *writer);
@@ -69,7 +69,7 @@ uint64_t sqfs_dir_writer_get_dir_reference(sqfs_dir_writer_t *writer);
size_t sqfs_dir_writer_get_index_size(sqfs_dir_writer_t *writer);
int sqfs_dir_writer_write_index(sqfs_dir_writer_t *writer,
- meta_writer_t *im);
+ sqfs_meta_writer_t *im);
#ifdef __cplusplus
}
diff --git a/include/sqfs/inode.h b/include/sqfs/inode.h
index c72f3c2..20c8fa2 100644
--- a/include/sqfs/inode.h
+++ b/include/sqfs/inode.h
@@ -143,7 +143,8 @@ sqfs_inode_generic_t *meta_reader_read_inode(meta_reader_t *ir,
uint64_t block_start,
size_t offset);
-int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n);
+int sqfs_meta_writer_write_inode(sqfs_meta_writer_t *iw,
+ sqfs_inode_generic_t *n);
#ifdef __cplusplus
}
diff --git a/include/sqfs/meta_writer.h b/include/sqfs/meta_writer.h
index e91c1e9..a155f3e 100644
--- a/include/sqfs/meta_writer.h
+++ b/include/sqfs/meta_writer.h
@@ -4,8 +4,8 @@
*
* Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
*/
-#ifndef META_WRITER_H
-#define META_WRITER_H
+#ifndef SQFS_META_WRITER_H
+#define SQFS_META_WRITER_H
#include "config.h"
@@ -13,7 +13,7 @@
#include "sqfs/id_table.h"
#include "sqfs/data.h"
-typedef struct meta_writer_t meta_writer_t;
+typedef struct sqfs_meta_writer_t sqfs_meta_writer_t;
#ifdef __cplusplus
extern "C" {
@@ -24,31 +24,34 @@ extern "C" {
If keep_in_mem is true, the blocks are collected in memory and must
be explicitly flushed to disk using meta_write_write_to_file.
*/
-meta_writer_t *meta_writer_create(int fd, compressor_t *cmp, bool keep_in_mem);
+sqfs_meta_writer_t *sqfs_meta_writer_create(int fd, compressor_t *cmp,
+ bool keep_in_mem);
-void meta_writer_destroy(meta_writer_t *m);
+void sqfs_meta_writer_destroy(sqfs_meta_writer_t *m);
/* Compress and flush the currently unfinished block to disk. Returns 0 on
success, internally prints error message to stderr on failure */
-int meta_writer_flush(meta_writer_t *m);
+int sqfs_meta_writer_flush(sqfs_meta_writer_t *m);
/* Returns 0 on success. Prints error message to stderr on failure. */
-int meta_writer_append(meta_writer_t *m, const void *data, size_t size);
+int sqfs_meta_writer_append(sqfs_meta_writer_t *m, const void *data,
+ size_t size);
/* Query the current block start position and offset within the block */
-void meta_writer_get_position(const meta_writer_t *m, uint64_t *block_start,
- uint32_t *offset);
+void sqfs_meta_writer_get_position(const sqfs_meta_writer_t *m,
+ uint64_t *block_start,
+ uint32_t *offset);
/* Reset all internal state, including the current block start position. */
-void meta_writer_reset(meta_writer_t *m);
+void sqfs_meta_writer_reset(sqfs_meta_writer_t *m);
/* If created with keep_in_mem true, write the collected blocks to disk.
Does not flush the current block. Writes error messages to stderr and
returns non-zero on failure. */
-int meta_write_write_to_file(meta_writer_t *m);
+int sqfs_meta_write_write_to_file(sqfs_meta_writer_t *m);
#ifdef __cplusplus
}
#endif
-#endif /* META_WRITER_H */
+#endif /* SQFS_META_WRITER_H */
diff --git a/lib/sqfs/dir_writer.c b/lib/sqfs/dir_writer.c
index 3ef3bc7..2fb655a 100644
--- a/lib/sqfs/dir_writer.c
+++ b/lib/sqfs/dir_writer.c
@@ -43,7 +43,7 @@ struct sqfs_dir_writer_t {
uint64_t dir_ref;
size_t dir_size;
size_t idx_size;
- meta_writer_t *dm;
+ sqfs_meta_writer_t *dm;
};
static int get_type(mode_t mode)
@@ -85,7 +85,7 @@ static void writer_reset(sqfs_dir_writer_t *writer)
writer->idx_size = 0;
}
-sqfs_dir_writer_t *sqfs_dir_writer_create(meta_writer_t *dm)
+sqfs_dir_writer_t *sqfs_dir_writer_create(sqfs_meta_writer_t *dm)
{
sqfs_dir_writer_t *writer = calloc(1, sizeof(*writer));
@@ -111,7 +111,7 @@ int sqfs_dir_writer_begin(sqfs_dir_writer_t *writer)
writer_reset(writer);
- meta_writer_get_position(writer->dm, &block, &offset);
+ sqfs_meta_writer_get_position(writer->dm, &block, &offset);
writer->dir_ref = (block << 16) | offset;
return 0;
}
@@ -185,7 +185,7 @@ static int add_header(sqfs_dir_writer_t *writer, size_t count,
hdr.start_block = htole32(ref->inode_ref >> 16);
hdr.inode_number = htole32(ref->inode_num);
- if (meta_writer_append(writer->dm, &hdr, sizeof(hdr)))
+ if (sqfs_meta_writer_append(writer->dm, &hdr, sizeof(hdr)))
return -1;
idx = calloc(1, sizeof(*idx));
@@ -220,7 +220,7 @@ int sqfs_dir_writer_end(sqfs_dir_writer_t *writer)
uint64_t block;
for (it = writer->list; it != NULL; ) {
- meta_writer_get_position(writer->dm, &block, &offset);
+ sqfs_meta_writer_get_position(writer->dm, &block, &offset);
count = get_conseq_entry_count(offset, it);
if (add_header(writer, count, it, block))
@@ -237,11 +237,15 @@ int sqfs_dir_writer_end(sqfs_dir_writer_t *writer)
diff_u16 = (uint16_t *)&ent.inode_diff;
*diff_u16 = htole16(*diff_u16);
- if (meta_writer_append(writer->dm, &ent, sizeof(ent)))
+ if (sqfs_meta_writer_append(writer->dm, &ent,
+ sizeof(ent))) {
return -1;
+ }
- if (meta_writer_append(writer->dm, it->name, it->name_len))
+ if (sqfs_meta_writer_append(writer->dm, it->name,
+ it->name_len)) {
return -1;
+ }
it = it->next;
}
@@ -266,7 +270,7 @@ size_t sqfs_dir_writer_get_index_size(sqfs_dir_writer_t *writer)
}
int sqfs_dir_writer_write_index(sqfs_dir_writer_t *writer,
- meta_writer_t *im)
+ sqfs_meta_writer_t *im)
{
sqfs_dir_index_t ent;
index_ent_t *idx;
@@ -276,11 +280,13 @@ int sqfs_dir_writer_write_index(sqfs_dir_writer_t *writer,
ent.index = htole32(idx->index);
ent.size = htole32(idx->ent->name_len - 1);
- if (meta_writer_append(im, &ent, sizeof(ent)))
+ if (sqfs_meta_writer_append(im, &ent, sizeof(ent)))
return -1;
- if (meta_writer_append(im, idx->ent->name, idx->ent->name_len))
+ if (sqfs_meta_writer_append(im, idx->ent->name,
+ idx->ent->name_len)) {
return -1;
+ }
}
return 0;
diff --git a/lib/sqfs/meta_writer.c b/lib/sqfs/meta_writer.c
index 1f7825a..c85a12e 100644
--- a/lib/sqfs/meta_writer.c
+++ b/lib/sqfs/meta_writer.c
@@ -22,7 +22,7 @@ typedef struct meta_block_t {
uint8_t data[SQFS_META_BLOCK_SIZE + 2];
} meta_block_t;
-struct meta_writer_t {
+struct sqfs_meta_writer_t {
/* A byte offset into the uncompressed data of the current block */
size_t offset;
@@ -51,9 +51,10 @@ static int write_block(int fd, meta_block_t *outblk)
outblk->data, count + 2);
}
-meta_writer_t *meta_writer_create(int fd, compressor_t *cmp, bool keep_in_mem)
+sqfs_meta_writer_t *sqfs_meta_writer_create(int fd, compressor_t *cmp,
+ bool keep_in_mem)
{
- meta_writer_t *m = calloc(1, sizeof(*m));
+ sqfs_meta_writer_t *m = calloc(1, sizeof(*m));
if (m == NULL) {
perror("creating meta data writer");
@@ -66,7 +67,7 @@ meta_writer_t *meta_writer_create(int fd, compressor_t *cmp, bool keep_in_mem)
return m;
}
-void meta_writer_destroy(meta_writer_t *m)
+void sqfs_meta_writer_destroy(sqfs_meta_writer_t *m)
{
meta_block_t *blk;
@@ -79,7 +80,7 @@ void meta_writer_destroy(meta_writer_t *m)
free(m);
}
-int meta_writer_flush(meta_writer_t *m)
+int sqfs_meta_writer_flush(sqfs_meta_writer_t *m)
{
meta_block_t *outblk;
size_t count;
@@ -129,7 +130,8 @@ int meta_writer_flush(meta_writer_t *m)
return ret;
}
-int meta_writer_append(meta_writer_t *m, const void *data, size_t size)
+int sqfs_meta_writer_append(sqfs_meta_writer_t *m, const void *data,
+ size_t size)
{
size_t diff;
@@ -137,7 +139,7 @@ int meta_writer_append(meta_writer_t *m, const void *data, size_t size)
diff = sizeof(m->data) - m->offset;
if (diff == 0) {
- if (meta_writer_flush(m))
+ if (sqfs_meta_writer_flush(m))
return -1;
diff = sizeof(m->data);
}
@@ -152,25 +154,26 @@ int meta_writer_append(meta_writer_t *m, const void *data, size_t size)
}
if (m->offset == sizeof(m->data))
- return meta_writer_flush(m);
+ return sqfs_meta_writer_flush(m);
return 0;
}
-void meta_writer_get_position(const meta_writer_t *m, uint64_t *block_start,
- uint32_t *offset)
+void sqfs_meta_writer_get_position(const sqfs_meta_writer_t *m,
+ uint64_t *block_start,
+ uint32_t *offset)
{
*block_start = m->block_offset;
*offset = m->offset;
}
-void meta_writer_reset(meta_writer_t *m)
+void sqfs_meta_writer_reset(sqfs_meta_writer_t *m)
{
m->block_offset = 0;
m->offset = 0;
}
-int meta_write_write_to_file(meta_writer_t *m)
+int sqfs_meta_write_write_to_file(sqfs_meta_writer_t *m)
{
meta_block_t *blk;
diff --git a/lib/sqfs/write_inode.c b/lib/sqfs/write_inode.c
index 258f516..408e428 100644
--- a/lib/sqfs/write_inode.c
+++ b/lib/sqfs/write_inode.c
@@ -8,7 +8,7 @@
#include "sqfs/inode.h"
-static int write_block_sizes(meta_writer_t *ir, sqfs_inode_generic_t *n)
+static int write_block_sizes(sqfs_meta_writer_t *ir, sqfs_inode_generic_t *n)
{
uint32_t sizes[n->num_file_blocks];
size_t i;
@@ -16,11 +16,12 @@ static int write_block_sizes(meta_writer_t *ir, sqfs_inode_generic_t *n)
for (i = 0; i < n->num_file_blocks; ++i)
sizes[i] = htole32(n->block_sizes[i]);
- return meta_writer_append(ir, sizes,
- sizeof(uint32_t) * n->num_file_blocks);
+ return sqfs_meta_writer_append(ir, sizes,
+ sizeof(uint32_t) * n->num_file_blocks);
}
-int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
+int sqfs_meta_writer_write_inode(sqfs_meta_writer_t *ir,
+ sqfs_inode_generic_t *n)
{
sqfs_inode_t base;
@@ -31,7 +32,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
base.mod_time = htole32(n->base.mod_time);
base.inode_number = htole32(n->base.inode_number);
- if (meta_writer_append(ir, &base, sizeof(base)))
+ if (sqfs_meta_writer_append(ir, &base, sizeof(base)))
return -1;
switch (n->base.type) {
@@ -43,7 +44,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.offset = htole16(n->data.dir.offset),
.parent_inode = htole32(n->data.dir.parent_inode),
};
- return meta_writer_append(ir, &dir, sizeof(dir));
+ return sqfs_meta_writer_append(ir, &dir, sizeof(dir));
}
case SQFS_INODE_FILE: {
sqfs_inode_file_t file = {
@@ -53,7 +54,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
htole32(n->data.file.fragment_offset),
.file_size = htole32(n->data.file.file_size),
};
- if (meta_writer_append(ir, &file, sizeof(file)))
+ if (sqfs_meta_writer_append(ir, &file, sizeof(file)))
return -1;
return write_block_sizes(ir, n);
}
@@ -62,10 +63,10 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.nlink = htole32(n->data.slink.nlink),
.target_size = htole32(n->data.slink.target_size),
};
- if (meta_writer_append(ir, &slink, sizeof(slink)))
+ if (sqfs_meta_writer_append(ir, &slink, sizeof(slink)))
return -1;
- return meta_writer_append(ir, n->slink_target,
- n->data.slink.target_size);
+ return sqfs_meta_writer_append(ir, n->slink_target,
+ n->data.slink.target_size);
}
case SQFS_INODE_BDEV:
case SQFS_INODE_CDEV: {
@@ -73,14 +74,14 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.nlink = htole32(n->data.dev.nlink),
.devno = htole32(n->data.dev.devno),
};
- return meta_writer_append(ir, &dev, sizeof(dev));
+ return sqfs_meta_writer_append(ir, &dev, sizeof(dev));
}
case SQFS_INODE_FIFO:
case SQFS_INODE_SOCKET: {
sqfs_inode_ipc_t ipc = {
.nlink = htole32(n->data.ipc.nlink),
};
- return meta_writer_append(ir, &ipc, sizeof(ipc));
+ return sqfs_meta_writer_append(ir, &ipc, sizeof(ipc));
}
case SQFS_INODE_EXT_DIR: {
sqfs_inode_dir_ext_t dir = {
@@ -92,7 +93,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.offset = htole16(n->data.dir_ext.offset),
.xattr_idx = htole32(n->data.dir_ext.xattr_idx),
};
- return meta_writer_append(ir, &dir, sizeof(dir));
+ return sqfs_meta_writer_append(ir, &dir, sizeof(dir));
}
case SQFS_INODE_EXT_FILE: {
sqfs_inode_file_ext_t file = {
@@ -105,7 +106,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
htole32(n->data.file_ext.fragment_offset),
.xattr_idx = htole32(n->data.file_ext.xattr_idx),
};
- if (meta_writer_append(ir, &file, sizeof(file)))
+ if (sqfs_meta_writer_append(ir, &file, sizeof(file)))
return -1;
return write_block_sizes(ir, n);
}
@@ -116,13 +117,13 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
};
uint32_t xattr = htole32(n->data.slink_ext.xattr_idx);
- if (meta_writer_append(ir, &slink, sizeof(slink)))
+ if (sqfs_meta_writer_append(ir, &slink, sizeof(slink)))
return -1;
- if (meta_writer_append(ir, n->slink_target,
- n->data.slink_ext.target_size)) {
+ if (sqfs_meta_writer_append(ir, n->slink_target,
+ n->data.slink_ext.target_size)) {
return -1;
}
- return meta_writer_append(ir, &xattr, sizeof(xattr));
+ return sqfs_meta_writer_append(ir, &xattr, sizeof(xattr));
}
case SQFS_INODE_EXT_BDEV:
case SQFS_INODE_EXT_CDEV: {
@@ -131,7 +132,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.devno = htole32(n->data.dev_ext.devno),
.xattr_idx = htole32(n->data.dev_ext.xattr_idx),
};
- return meta_writer_append(ir, &dev, sizeof(dev));
+ return sqfs_meta_writer_append(ir, &dev, sizeof(dev));
}
case SQFS_INODE_EXT_FIFO:
case SQFS_INODE_EXT_SOCKET: {
@@ -139,7 +140,7 @@ int meta_writer_write_inode(meta_writer_t *ir, sqfs_inode_generic_t *n)
.nlink = htole32(n->data.ipc_ext.nlink),
.xattr_idx = htole32(n->data.ipc_ext.xattr_idx),
};
- return meta_writer_append(ir, &ipc, sizeof(ipc));
+ return sqfs_meta_writer_append(ir, &ipc, sizeof(ipc));
}
}
diff --git a/lib/sqfs/write_table.c b/lib/sqfs/write_table.c
index a2814a4..7c24087 100644
--- a/lib/sqfs/write_table.c
+++ b/lib/sqfs/write_table.c
@@ -19,7 +19,7 @@ int sqfs_write_table(int outfd, sqfs_super_t *super, compressor_t *cmp,
{
size_t block_count, list_size, diff, blkidx = 0;
uint64_t block, *locations;
- meta_writer_t *m;
+ sqfs_meta_writer_t *m;
uint32_t offset;
int ret = -1;
@@ -35,29 +35,29 @@ int sqfs_write_table(int outfd, sqfs_super_t *super, compressor_t *cmp,
}
/* Write actual data */
- m = meta_writer_create(outfd, cmp, false);
+ m = sqfs_meta_writer_create(outfd, cmp, false);
if (m == NULL)
goto out_idx;
while (table_size > 0) {
- meta_writer_get_position(m, &block, &offset);
+ sqfs_meta_writer_get_position(m, &block, &offset);
locations[blkidx++] = htole64(super->bytes_used + block);
diff = SQFS_META_BLOCK_SIZE;
if (diff > table_size)
diff = table_size;
- if (meta_writer_append(m, data, diff))
+ if (sqfs_meta_writer_append(m, data, diff))
goto out;
data = (const char *)data + diff;
table_size -= diff;
}
- if (meta_writer_flush(m))
+ if (sqfs_meta_writer_flush(m))
goto out;
- meta_writer_get_position(m, &block, &offset);
+ sqfs_meta_writer_get_position(m, &block, &offset);
super->bytes_used += block;
/* write location list */
@@ -72,7 +72,7 @@ int sqfs_write_table(int outfd, sqfs_super_t *super, compressor_t *cmp,
/* cleanup */
ret = 0;
out:
- meta_writer_destroy(m);
+ sqfs_meta_writer_destroy(m);
out_idx:
free(locations);
return ret;
diff --git a/lib/sqfshelper/serialize_fstree.c b/lib/sqfshelper/serialize_fstree.c
index 8e87354..0a574a0 100644
--- a/lib/sqfshelper/serialize_fstree.c
+++ b/lib/sqfshelper/serialize_fstree.c
@@ -45,18 +45,18 @@ int sqfs_serialize_fstree(int outfd, sqfs_super_t *super, fstree_t *fs,
compressor_t *cmp, id_table_t *idtbl)
{
sqfs_inode_generic_t *inode;
+ sqfs_meta_writer_t *im, *dm;
sqfs_dir_writer_t *dirwr;
- meta_writer_t *im, *dm;
uint32_t offset;
uint64_t block;
int ret = -1;
size_t i;
- im = meta_writer_create(outfd, cmp, false);
+ im = sqfs_meta_writer_create(outfd, cmp, false);
if (im == NULL)
return -1;
- dm = meta_writer_create(outfd, cmp, true);
+ dm = sqfs_meta_writer_create(outfd, cmp, true);
if (dm == NULL)
goto out_im;
@@ -79,10 +79,10 @@ int sqfs_serialize_fstree(int outfd, sqfs_super_t *super, fstree_t *fs,
sqfs_dir_writer_get_index_size(dirwr);
}
- meta_writer_get_position(im, &block, &offset);
+ sqfs_meta_writer_get_position(im, &block, &offset);
fs->inode_table[i]->inode_ref = (block << 16) | offset;
- if (meta_writer_write_inode(im, inode)) {
+ if (sqfs_meta_writer_write_inode(im, inode)) {
free(inode);
goto out;
}
@@ -97,31 +97,31 @@ int sqfs_serialize_fstree(int outfd, sqfs_super_t *super, fstree_t *fs,
free(inode);
}
- if (meta_writer_flush(im))
+ if (sqfs_meta_writer_flush(im))
goto out;
- if (meta_writer_flush(dm))
+ if (sqfs_meta_writer_flush(dm))
goto out;
super->root_inode_ref = fs->root->inode_ref;
- meta_writer_get_position(im, &block, &offset);
+ sqfs_meta_writer_get_position(im, &block, &offset);
super->inode_table_start = super->bytes_used;
super->bytes_used += block;
- meta_writer_get_position(dm, &block, &offset);
+ sqfs_meta_writer_get_position(dm, &block, &offset);
super->directory_table_start = super->bytes_used;
super->bytes_used += block;
- if (meta_write_write_to_file(dm))
+ if (sqfs_meta_write_write_to_file(dm))
goto out;
ret = 0;
out:
sqfs_dir_writer_destroy(dirwr);
out_dm:
- meta_writer_destroy(dm);
+ sqfs_meta_writer_destroy(dm);
out_im:
- meta_writer_destroy(im);
+ sqfs_meta_writer_destroy(im);
return ret;
}
diff --git a/lib/sqfshelper/write_xattr.c b/lib/sqfshelper/write_xattr.c
index a84822f..349b41d 100644
--- a/lib/sqfshelper/write_xattr.c
+++ b/lib/sqfshelper/write_xattr.c
@@ -16,8 +16,8 @@
#include <string.h>
#include <stdio.h>
-static int write_key(meta_writer_t *mw, const char *key, tree_xattr_t *xattr,
- bool value_is_ool)
+static int write_key(sqfs_meta_writer_t *mw, const char *key,
+ tree_xattr_t *xattr, bool value_is_ool)
{
sqfs_xattr_entry_t kent;
int type;
@@ -38,49 +38,49 @@ static int write_key(meta_writer_t *mw, const char *key, tree_xattr_t *xattr,
kent.type = htole16(type);
kent.size = htole16(strlen(key));
- if (meta_writer_append(mw, &kent, sizeof(kent)))
+ if (sqfs_meta_writer_append(mw, &kent, sizeof(kent)))
return -1;
- if (meta_writer_append(mw, key, strlen(key)))
+ if (sqfs_meta_writer_append(mw, key, strlen(key)))
return -1;
xattr->size += sizeof(sqfs_xattr_entry_t) + strlen(key);
return 0;
}
-static int write_value(meta_writer_t *mw, const char *value,
+static int write_value(sqfs_meta_writer_t *mw, const char *value,
tree_xattr_t *xattr, uint64_t *value_ref_out)
{
sqfs_xattr_value_t vent;
uint32_t offset;
uint64_t block;
- meta_writer_get_position(mw, &block, &offset);
+ sqfs_meta_writer_get_position(mw, &block, &offset);
*value_ref_out = (block << 16) | (offset & 0xFFFF);
vent.size = htole32(strlen(value));
- if (meta_writer_append(mw, &vent, sizeof(vent)))
+ if (sqfs_meta_writer_append(mw, &vent, sizeof(vent)))
return -1;
- if (meta_writer_append(mw, value, strlen(value)))
+ if (sqfs_meta_writer_append(mw, value, strlen(value)))
return -1;
xattr->size += sizeof(vent) + strlen(value);
return 0;
}
-static int write_value_ool(meta_writer_t *mw, uint64_t location,
+static int write_value_ool(sqfs_meta_writer_t *mw, uint64_t location,
tree_xattr_t *xattr)
{
sqfs_xattr_value_t vent;
uint64_t ref;
vent.size = htole32(sizeof(location));
- if (meta_writer_append(mw, &vent, sizeof(vent)))
+ if (sqfs_meta_writer_append(mw, &vent, sizeof(vent)))
return -1;
ref = htole64(location);
- if (meta_writer_append(mw, &ref, sizeof(ref)))
+ if (sqfs_meta_writer_append(mw, &ref, sizeof(ref)))
return -1;
xattr->size += sizeof(vent) + sizeof(ref);
@@ -112,8 +112,8 @@ static bool should_store_ool(fstree_t *fs, const char *value, size_t index)
return strlen(value) > sizeof(uint64_t);
}
-static int write_kv_pairs(fstree_t *fs, meta_writer_t *mw, tree_xattr_t *xattr,
- uint64_t *ool_locations)
+static int write_kv_pairs(fstree_t *fs, sqfs_meta_writer_t *mw,
+ tree_xattr_t *xattr, uint64_t *ool_locations)
{
uint32_t key_idx, val_idx;
const char *key, *value;
@@ -174,7 +174,7 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
size_t i = 0, count = 0, blocks;
sqfs_xattr_id_table_t idtbl;
sqfs_xattr_id_t id_ent;
- meta_writer_t *mw;
+ sqfs_meta_writer_t *mw;
tree_xattr_t *it;
uint32_t offset;
@@ -185,7 +185,7 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
if (ool_locations == NULL)
return -1;
- mw = meta_writer_create(outfd, cmp, false);
+ mw = sqfs_meta_writer_create(outfd, cmp, false);
if (mw == NULL)
goto fail_ool;
@@ -193,7 +193,7 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
kv_start = super->bytes_used;
for (it = fs->xattr; it != NULL; it = it->next) {
- meta_writer_get_position(mw, &it->block, &it->offset);
+ sqfs_meta_writer_get_position(mw, &it->block, &it->offset);
it->size = 0;
if (write_kv_pairs(fs, mw, it, ool_locations))
@@ -202,11 +202,11 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
++count;
}
- if (meta_writer_flush(mw))
+ if (sqfs_meta_writer_flush(mw))
goto fail_mw;
- meta_writer_get_position(mw, &block, &offset);
- meta_writer_reset(mw);
+ sqfs_meta_writer_get_position(mw, &block, &offset);
+ sqfs_meta_writer_reset(mw);
super->bytes_used += block;
@@ -232,10 +232,10 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
id_ent.count = htole32(it->num_attr);
id_ent.size = htole32(it->size);
- if (meta_writer_append(mw, &id_ent, sizeof(id_ent)))
+ if (sqfs_meta_writer_append(mw, &id_ent, sizeof(id_ent)))
goto fail_tbl;
- meta_writer_get_position(mw, &block, &offset);
+ sqfs_meta_writer_get_position(mw, &block, &offset);
if (block != id_start) {
id_start = block;
@@ -243,10 +243,10 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
}
}
- if (meta_writer_flush(mw))
+ if (sqfs_meta_writer_flush(mw))
goto fail_tbl;
- meta_writer_get_position(mw, &block, &offset);
+ sqfs_meta_writer_get_position(mw, &block, &offset);
super->bytes_used += block;
/* write offset table */
@@ -267,13 +267,13 @@ int write_xattr(int outfd, fstree_t *fs, sqfs_super_t *super,
super->flags &= ~SQFS_FLAG_NO_XATTRS;
free(tbl);
- meta_writer_destroy(mw);
+ sqfs_meta_writer_destroy(mw);
free(ool_locations);
return 0;
fail_tbl:
free(tbl);
fail_mw:
- meta_writer_destroy(mw);
+ sqfs_meta_writer_destroy(mw);
fail_ool:
free(ool_locations);
return -1;