aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-05-13 10:16:46 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-05-19 18:43:55 +0200
commitfef051fb89071a5f58715e389f7a9c4d95231d78 (patch)
tree08f068661495ee401f5026dc7d45a684c3092186 /include
parent0e7fba27a26694f6babe5bd5de93733760cd770d (diff)
Generate extended attribute table
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/fstree.h4
-rw-r--r--include/squashfs.h33
2 files changed, 37 insertions, 0 deletions
diff --git a/include/fstree.h b/include/fstree.h
index 96294b8..e8324a9 100644
--- a/include/fstree.h
+++ b/include/fstree.h
@@ -28,6 +28,10 @@ struct tree_xattr_t {
size_t num_attr;
size_t max_attr;
+ uint32_t block;
+ uint32_t offset;
+ uint32_t size;
+
/**
* @brief Incremental index within all xattr blocks
*/
diff --git a/include/squashfs.h b/include/squashfs.h
index e599863..5574b29 100644
--- a/include/squashfs.h
+++ b/include/squashfs.h
@@ -164,6 +164,30 @@ typedef struct {
uint8_t name[];
} sqfs_dir_index_t;
+typedef struct {
+ uint16_t type;
+ uint16_t size;
+ uint8_t key[];
+} sqfs_xattr_entry_t;
+
+typedef struct {
+ uint32_t size;
+ uint8_t value[];
+} sqfs_xattr_value_t;
+
+typedef struct {
+ uint64_t xattr;
+ uint32_t count;
+ uint32_t size;
+} sqfs_xattr_id_t;
+
+typedef struct {
+ uint64_t xattr_table_start;
+ uint32_t xattr_ids;
+ uint32_t unused;
+} sqfs_xattr_id_table_t;
+
+
typedef enum {
SQFS_COMP_GZIP = 1,
SQFS_COMP_LZMA = 2,
@@ -207,6 +231,15 @@ typedef enum {
SQFS_INODE_EXT_SOCKET = 14,
} E_SQFS_INODE_TYPE;
+typedef enum {
+ SQUASHFS_XATTR_USER = 0,
+ SQUASHFS_XATTR_TRUSTED = 1,
+ SQUASHFS_XATTR_SECURITY = 2,
+
+ SQUASHFS_XATTR_FLAG_OOL = 0x100,
+ SQUASHFS_XATTR_PREFIX_MASK = 0xFF,
+} E_SQFS_XATTR_TYPE;
+
int sqfs_super_init(sqfs_super_t *super, size_t block_size, uint32_t mtime,
E_SQFS_COMPRESSOR compressor);