summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-08-01 13:50:05 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-08-01 15:48:42 +0200
commit23a3f10ab62abadf5adcfb9540f2180275ab5b0c (patch)
treecfe537d4359de7dd3486898dad70c40761947680 /include
parent7073f002b54c690ffa17d9f736a4417485d3c6d6 (diff)
Add xattr reader implementation to recover xattrs from squashfs
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/meta_reader.h3
-rw-r--r--include/squashfs.h6
-rw-r--r--include/xattr_reader.h26
3 files changed, 35 insertions, 0 deletions
diff --git a/include/meta_reader.h b/include/meta_reader.h
index 2d790d8..8369ad3 100644
--- a/include/meta_reader.h
+++ b/include/meta_reader.h
@@ -24,6 +24,9 @@ void meta_reader_destroy(meta_reader_t *m);
int meta_reader_seek(meta_reader_t *m, uint64_t block_start,
size_t offset);
+void meta_reader_get_position(meta_reader_t *m, uint64_t *block_start,
+ size_t *offset);
+
/* Returns 0 on success. Internally prints to stderr on failure */
int meta_reader_read(meta_reader_t *m, void *data, size_t size);
diff --git a/include/squashfs.h b/include/squashfs.h
index bd3db7b..fb60049 100644
--- a/include/squashfs.h
+++ b/include/squashfs.h
@@ -256,6 +256,12 @@ int sqfs_super_write(sqfs_super_t *super, int fd);
/* Returns 0 on success. Prints error messages to stderr on failure. */
int sqfs_super_read(sqfs_super_t *super, int fd);
+/* Get id from xattr key prefix or -1 if not supported */
+int sqfs_get_xattr_prefix_id(const char *key);
+
+/* Get a prefix string from the ID or NULL if unknown */
+const char *sqfs_get_xattr_prefix(E_SQFS_XATTR_TYPE id);
+
/* Check if a given xattr key can be encoded in squashfs at all. */
bool sqfs_has_xattr(const char *key);
diff --git a/include/xattr_reader.h b/include/xattr_reader.h
new file mode 100644
index 0000000..a71f0f0
--- /dev/null
+++ b/include/xattr_reader.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+/*
+ * xattr_reader.h
+ *
+ * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
+ */
+#ifndef XATTR_READER_H
+#define XATTR_READER_H
+
+#include "config.h"
+
+#include "squashfs.h"
+#include "compress.h"
+#include "fstree.h"
+
+typedef struct xattr_reader_t xattr_reader_t;
+
+void xattr_reader_destroy(xattr_reader_t *xr);
+
+xattr_reader_t *xattr_reader_create(int sqfsfd, sqfs_super_t *super,
+ compressor_t *cmp);
+
+int xattr_reader_restore_node(xattr_reader_t *xr, fstree_t *fs,
+ tree_node_t *node, uint32_t xattr);
+
+#endif /* XATTR_READER_H */