diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-01-19 20:05:13 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-01-19 20:05:13 +0100 |
commit | 4a091b656c0861e3f9335c38af25040cb3ff03c8 (patch) | |
tree | 263ee5a322bd263125ae07ef40ef5fed31812b29 /include/sqfs/inode.h | |
parent | 001d3dc914d19b3d85aa04f2a042837cef4af0e4 (diff) |
Cleanup: remove the payload pointers from sqfs_inode_generic_t
There are 3 types of extra payload:
- Directory index
- File block sizes
- Symlink target
This commit removes the type specific pointers and modifies the code
to use the payload area directly. To simplify the file block case and
mitigate alignment issues, the type of the extra field is changed to
sqfs_u32.
For symlink target, the extra field can simply be cast to a character
pointer (it had to be cast anyway for most uses). For block sizes,
probably the most common usecase, it can be used as is. For directory
indices, there is a helper function anyway.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include/sqfs/inode.h')
-rw-r--r-- | include/sqfs/inode.h | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/include/sqfs/inode.h b/include/sqfs/inode.h index 65ff45e..17df022 100644 --- a/include/sqfs/inode.h +++ b/include/sqfs/inode.h @@ -483,23 +483,6 @@ struct sqfs_inode_generic_t { sqfs_inode_t base; /** - * @brief A pointer into the extra field holding the symlink target. - * - * @param This string is not null terminated. The helper functions rely - * entirely on the length stored in the symlink inode. - */ - char *slink_target; - - /** - * @brief A pointer into the extra field holding file blocks sizes. - * - * For file inodes, holds the consecutive block sizes. Bit number 24 is - * set if the block is stored uncompressed. If it the size is zero, - * the block is sparse. - */ - sqfs_u32 *block_sizes; - - /** * @brief For file inodes, stores the number of blocks used. */ size_t num_file_blocks; @@ -528,8 +511,13 @@ struct sqfs_inode_generic_t { /** * @brief Holds type specific extra data, such as symlink target. + * + * For regular file inodes, this is an array of block sizes. For symlink + * inodes, this is actually a string holding the target. For extended + * directory inodes, this is actually a blob of tightly packed directory + * index entries. */ - sqfs_u8 extra[]; + sqfs_u32 extra[]; }; #ifdef __cplusplus |