From c92faad51817c10570de3680e95a3fd18bb21204 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 12 Jan 2020 08:15:00 +0100 Subject: Add an inode deep copy helper function to libsquashfs Signed-off-by: David Oberhollenzer --- include/sqfs/inode.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'include') 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 @@ -536,6 +536,24 @@ struct sqfs_inode_generic_t { 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 * -- cgit v1.2.3