diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-04-19 08:51:26 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-04-19 11:17:51 +0200 |
commit | 75fb524b5702bca4f8467309f7d95f9937ec6683 (patch) | |
tree | b47a037c0f24873a9fc5b3f5b08583c9ad90de08 /include | |
parent | a13df03fddd9499960d4653aaee0970983b65f73 (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.h | 17 |
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; |