diff options
Diffstat (limited to 'include/sqfs')
-rw-r--r-- | include/sqfs/inode.h | 18 |
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 |