aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-04-19 08:51:26 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-04-19 11:17:51 +0200
commit75fb524b5702bca4f8467309f7d95f9937ec6683 (patch)
treeb47a037c0f24873a9fc5b3f5b08583c9ad90de08 /include
parenta13df03fddd9499960d4653aaee0970983b65f73 (diff)
libfstree: get rid of dir_info_t
The single boolean created_implicitly can be replaced with a general purpose flag field. The "children" pointer can then be hoisted directly into the data union of tree_node_t. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/fstree.h17
1 files changed, 6 insertions, 11 deletions
diff --git a/include/fstree.h b/include/fstree.h
index dfb1314..7f85be8 100644
--- a/include/fstree.h
+++ b/include/fstree.h
@@ -24,12 +24,15 @@
typedef struct fstree_defaults_t fstree_defaults_t;
typedef struct tree_node_t tree_node_t;
typedef struct file_info_t file_info_t;
-typedef struct dir_info_t dir_info_t;
typedef struct fstree_t fstree_t;
#define container_of(ptr, type, member) \
((type *)((char *)ptr - offsetof(type, member)))
+enum {
+ FLAG_DIR_CREATED_IMPLICITLY = 0x01,
+};
+
/* Additional meta data stored in a tree_node_t for regular files. */
struct file_info_t {
/* Linked list pointer for files in fstree_t */
@@ -46,15 +49,6 @@ struct file_info_t {
bool already_matched;
};
-/* Additional meta data stored in a tree_node_t for directories */
-struct dir_info_t {
- /* Linked list head for children in the directory */
- tree_node_t *children;
-
- /* Set to true for implicitly generated directories. */
- bool created_implicitly;
-};
-
/* A node in a file system tree */
struct tree_node_t {
/* Parent directory children linked list pointer. */
@@ -73,6 +67,7 @@ struct tree_node_t {
sqfs_u32 mod_time;
sqfs_u32 link_count;
sqfs_u16 mode;
+ sqfs_u16 flags;
/* SquashFS inode refernce number. 32 bit offset of the meta data
block start (relative to inode table start), shifted left by 16
@@ -83,7 +78,7 @@ struct tree_node_t {
/* Type specific data. "target" pointer is into payload area below. */
union {
- dir_info_t dir;
+ tree_node_t *children;
file_info_t file;
char *target;
sqfs_u64 devno;