summaryrefslogtreecommitdiff
path: root/include/sqfs/meta_reader.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sqfs/meta_reader.h')
-rw-r--r--include/sqfs/meta_reader.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/include/sqfs/meta_reader.h b/include/sqfs/meta_reader.h
new file mode 100644
index 0000000..d5628af
--- /dev/null
+++ b/include/sqfs/meta_reader.h
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+/*
+ * meta_reader.h
+ *
+ * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
+ */
+#ifndef META_READER_H
+#define META_READER_H
+
+#include "config.h"
+
+#include "compress.h"
+#include "squashfs.h"
+
+typedef struct meta_reader_t meta_reader_t;
+
+/* Create a meta data reader using a given compressor to extract data.
+ Internally prints error message to stderr on failure.
+
+ Start offset and limit can be specified to do bounds checking against
+ a subregion of the filesystem image.
+*/
+meta_reader_t *meta_reader_create(int fd, compressor_t *cmp,
+ uint64_t start, uint64_t limit);
+
+void meta_reader_destroy(meta_reader_t *m);
+
+/* Returns 0 on success. Internally prints to stderr on failure */
+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);
+
+/* Inode can be freed with a single free() call.
+ The function internally prints error message to stderr on failure. */
+sqfs_inode_generic_t *meta_reader_read_inode(meta_reader_t *ir,
+ sqfs_super_t *super,
+ uint64_t block_start,
+ size_t offset);
+
+/* Returns 0 on success. Internally prints to stderr on failure */
+int meta_reader_read_dir_header(meta_reader_t *m, sqfs_dir_header_t *hdr);
+
+/* Entry can be freed with a single free() call.
+ The function internally prints to stderr on failure */
+sqfs_dir_entry_t *meta_reader_read_dir_ent(meta_reader_t *m);
+
+#endif /* META_READER_H */