diff options
Diffstat (limited to 'lib/sqfs')
-rw-r--r-- | lib/sqfs/data_reader.c | 15 | ||||
-rw-r--r-- | lib/sqfs/data_writer/block.c | 2 | ||||
-rw-r--r-- | lib/sqfs/data_writer/fileapi.c | 2 | ||||
-rw-r--r-- | lib/sqfs/dir_writer.c | 3 | ||||
-rw-r--r-- | lib/sqfs/inode.c | 3 | ||||
-rw-r--r-- | lib/sqfs/read_inode.c | 19 | ||||
-rw-r--r-- | lib/sqfs/write_inode.c | 9 |
7 files changed, 22 insertions, 31 deletions
diff --git a/lib/sqfs/data_reader.c b/lib/sqfs/data_reader.c index 6a0db35..af15b9b 100644 --- a/lib/sqfs/data_reader.c +++ b/lib/sqfs/data_reader.c @@ -219,14 +219,13 @@ int sqfs_data_reader_get_block(sqfs_data_reader_t *data, return SQFS_ERROR_OUT_OF_BOUNDS; for (i = 0; i < index; ++i) { - off += SQFS_ON_DISK_BLOCK_SIZE(inode->block_sizes[i]); + off += SQFS_ON_DISK_BLOCK_SIZE(inode->extra[i]); filesz -= data->block_size; } unpacked_size = filesz < data->block_size ? filesz : data->block_size; - return get_block(data, off, inode->block_sizes[index], - unpacked_size, out); + return get_block(data, off, inode->extra[index], unpacked_size, out); } int sqfs_data_reader_get_fragment(sqfs_data_reader_t *data, @@ -285,7 +284,7 @@ sqfs_s32 sqfs_data_reader_read(sqfs_data_reader_t *data, i = 0; while (offset > data->block_size && i < inode->num_file_blocks) { - off += SQFS_ON_DISK_BLOCK_SIZE(inode->block_sizes[i++]); + off += SQFS_ON_DISK_BLOCK_SIZE(inode->extra[i++]); offset -= data->block_size; if (filesz >= data->block_size) { @@ -301,17 +300,15 @@ sqfs_s32 sqfs_data_reader_read(sqfs_data_reader_t *data, if (size < diff) diff = size; - if (SQFS_IS_SPARSE_BLOCK(inode->block_sizes[i])) { + if (SQFS_IS_SPARSE_BLOCK(inode->extra[i])) { memset(buffer, 0, diff); } else { - if (precache_data_block(data, off, - inode->block_sizes[i])) { + if (precache_data_block(data, off, inode->extra[i])) return -1; - } memcpy(buffer, (char *)data->data_block->data + offset, diff); - off += SQFS_ON_DISK_BLOCK_SIZE(inode->block_sizes[i]); + off += SQFS_ON_DISK_BLOCK_SIZE(inode->extra[i]); } if (filesz >= data->block_size) { diff --git a/lib/sqfs/data_writer/block.c b/lib/sqfs/data_writer/block.c index 9396e4a..5967e59 100644 --- a/lib/sqfs/data_writer/block.c +++ b/lib/sqfs/data_writer/block.c @@ -116,7 +116,7 @@ int process_completed_block(sqfs_data_writer_t *proc, sqfs_block_t *blk) proc->fragments[blk->index].pad0 = 0; proc->fragments[blk->index].size = htole32(out); } else { - blk->inode->block_sizes[blk->index] = out; + blk->inode->extra[blk->index] = out; } err = store_block_location(proc, offset, out, blk->checksum); diff --git a/lib/sqfs/data_writer/fileapi.c b/lib/sqfs/data_writer/fileapi.c index de77690..89bac0b 100644 --- a/lib/sqfs/data_writer/fileapi.c +++ b/lib/sqfs/data_writer/fileapi.c @@ -67,7 +67,7 @@ static int flush_block(sqfs_data_writer_t *proc, sqfs_block_t *block) sqfs_inode_make_extended(proc->inode); proc->inode->data.file_ext.sparse += block->size; proc->inode->num_file_blocks += 1; - proc->inode->block_sizes[block->index] = 0; + proc->inode->extra[block->index] = 0; free(block); return 0; } diff --git a/lib/sqfs/dir_writer.c b/lib/sqfs/dir_writer.c index 78256a1..53e5800 100644 --- a/lib/sqfs/dir_writer.c +++ b/lib/sqfs/dir_writer.c @@ -419,7 +419,8 @@ sqfs_inode_generic_t ent.index = idx->index; ent.size = idx->ent->name_len - 1; - ptr = inode->extra + inode->num_dir_idx_bytes; + ptr = (sqfs_u8 *)inode->extra + + inode->num_dir_idx_bytes; memcpy(ptr, &ent, sizeof(ent)); memcpy(ptr + sizeof(ent), idx->ent->name, idx->ent->name_len); diff --git a/lib/sqfs/inode.c b/lib/sqfs/inode.c index 3a4ec09..815cc0f 100644 --- a/lib/sqfs/inode.c +++ b/lib/sqfs/inode.c @@ -72,9 +72,6 @@ int sqfs_inode_copy(const sqfs_inode_generic_t *src, return SQFS_ERROR_ALLOC; memcpy(copy, src, size); - copy->block_sizes = (sqfs_u32 *)copy->extra; - copy->slink_target = (char *)copy->extra; - *out = copy; return 0; } diff --git a/lib/sqfs/read_inode.c b/lib/sqfs/read_inode.c index f7bfff0..8653928 100644 --- a/lib/sqfs/read_inode.c +++ b/lib/sqfs/read_inode.c @@ -101,18 +101,16 @@ static int read_inode_file(sqfs_meta_reader_t *ir, sqfs_inode_t *base, out->base = *base; out->data.file = file; - out->block_sizes = (sqfs_u32 *)out->extra; out->num_file_blocks = count; - err = sqfs_meta_reader_read(ir, out->block_sizes, - count * sizeof(sqfs_u32)); + err = sqfs_meta_reader_read(ir, out->extra, count * sizeof(sqfs_u32)); if (err) { free(out); return err; } for (i = 0; i < count; ++i) - SWAB32(out->block_sizes[i]); + SWAB32(out->extra[i]); *result = out; return 0; @@ -149,18 +147,16 @@ static int read_inode_file_ext(sqfs_meta_reader_t *ir, sqfs_inode_t *base, out->base = *base; out->data.file_ext = file; - out->block_sizes = (sqfs_u32 *)out->extra; out->num_file_blocks = count; - err = sqfs_meta_reader_read(ir, out->block_sizes, - count * sizeof(sqfs_u32)); + err = sqfs_meta_reader_read(ir, out->extra, count * sizeof(sqfs_u32)); if (err) { free(out); return err; } for (i = 0; i < count; ++i) - SWAB32(out->block_sizes[i]); + SWAB32(out->extra[i]); *result = out; return 0; @@ -190,11 +186,10 @@ static int read_inode_slink(sqfs_meta_reader_t *ir, sqfs_inode_t *base, if (out == NULL) return SQFS_ERROR_ALLOC; - out->slink_target = (char *)out->extra; out->base = *base; out->data.slink = slink; - err = sqfs_meta_reader_read(ir, out->slink_target, slink.target_size); + err = sqfs_meta_reader_read(ir, (void *)out->extra, slink.target_size); if (err) { free(out); return err; @@ -290,10 +285,10 @@ static int read_inode_dir_ext(sqfs_meta_reader_t *ir, sqfs_inode_t *base, index_max = new_sz; } - memcpy(out->extra + index_used, &ent, sizeof(ent)); + memcpy((char *)out->extra + index_used, &ent, sizeof(ent)); index_used += sizeof(ent); - err = sqfs_meta_reader_read(ir, out->extra + index_used, + err = sqfs_meta_reader_read(ir, (char *)out->extra + index_used, ent.size + 1); if (err) { free(out); diff --git a/lib/sqfs/write_inode.c b/lib/sqfs/write_inode.c index 5f0ef4c..b5ba905 100644 --- a/lib/sqfs/write_inode.c +++ b/lib/sqfs/write_inode.c @@ -22,7 +22,7 @@ static int write_block_sizes(sqfs_meta_writer_t *ir, size_t i; for (i = 0; i < n->num_file_blocks; ++i) - sizes[i] = htole32(n->block_sizes[i]); + sizes[i] = htole32(n->extra[i]); return sqfs_meta_writer_append(ir, sizes, sizeof(sqfs_u32) * n->num_file_blocks); @@ -112,7 +112,7 @@ int sqfs_meta_writer_write_inode(sqfs_meta_writer_t *ir, ret = sqfs_meta_writer_append(ir, &slink, sizeof(slink)); if (ret) return ret; - return sqfs_meta_writer_append(ir, n->slink_target, + return sqfs_meta_writer_append(ir, n->extra, n->data.slink.target_size); } case SQFS_INODE_BDEV: @@ -143,7 +143,8 @@ int sqfs_meta_writer_write_inode(sqfs_meta_writer_t *ir, ret = sqfs_meta_writer_append(ir, &dir, sizeof(dir)); if (ret) return ret; - return write_dir_index(ir, n->extra, n->num_dir_idx_bytes); + return write_dir_index(ir, (const sqfs_u8 *)n->extra, + n->num_dir_idx_bytes); } case SQFS_INODE_EXT_FILE: { sqfs_inode_file_ext_t file = { @@ -171,7 +172,7 @@ int sqfs_meta_writer_write_inode(sqfs_meta_writer_t *ir, ret = sqfs_meta_writer_append(ir, &slink, sizeof(slink)); if (ret) return ret; - ret = sqfs_meta_writer_append(ir, n->slink_target, + ret = sqfs_meta_writer_append(ir, n->extra, n->data.slink_ext.target_size); if (ret) return ret; |