summaryrefslogtreecommitdiff
path: root/include/sqfs
diff options
context:
space:
mode:
Diffstat (limited to 'include/sqfs')
-rw-r--r--include/sqfs/inode.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/sqfs/inode.h b/include/sqfs/inode.h
index 336a394..2b4a550 100644
--- a/include/sqfs/inode.h
+++ b/include/sqfs/inode.h
@@ -537,6 +537,24 @@ extern "C" {
#endif
/**
+ * @brief Create a deep copy of a generic inode.
+ *
+ * The @ref sqfs_inode_generic_t structure contains inlined fields that have a
+ * size depending on the inode data and pointers to the inlined fields. This
+ * helper function calculates the actual size of the structure in memory, makes
+ * a copy and propperly sets up the pointers.
+ *
+ * @param src The inode to copy.
+ * @param copy Returns a pointer to the copy on success. Can be released with a
+ * single free call.
+ *
+ * @return Zero on success, an @ref SQFS_ERROR_CORRUPTED if the node has
+ * an unknown type set.
+ */
+SQFS_API int sqfs_inode_copy(const sqfs_inode_generic_t *src,
+ sqfs_inode_generic_t **copy);
+
+/**
* @brief Get the extended attribute index of an inode
*
* For basic inodes, this returns the inode index 0xFFFFFFFF, i.e. the