From 90d0b5eead05174cea371788cc4766bc7739e982 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 12 Jan 2020 08:22:28 +0100 Subject: Add a start anchor parameter to sqfs_dir_reader_find_by_path It optionally allows code that does tree traversal to start at an inode that it obtained previously and makes it easier to keep state externally. Signed-off-by: David Oberhollenzer --- lib/sqfs/dir_reader.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib/sqfs/dir_reader.c') diff --git a/lib/sqfs/dir_reader.c b/lib/sqfs/dir_reader.c index bda7d7a..8eae5bd 100644 --- a/lib/sqfs/dir_reader.c +++ b/lib/sqfs/dir_reader.c @@ -210,15 +210,21 @@ int sqfs_dir_reader_get_root_inode(sqfs_dir_reader_t *rd, block_start, offset, inode); } -int sqfs_dir_reader_find_by_path(sqfs_dir_reader_t *rd, const char *path, - sqfs_inode_generic_t **out) +int sqfs_dir_reader_find_by_path(sqfs_dir_reader_t *rd, + const sqfs_inode_generic_t *start, + const char *path, sqfs_inode_generic_t **out) { sqfs_inode_generic_t *inode; sqfs_dir_entry_t *ent; const char *ptr; int ret; - ret = sqfs_dir_reader_get_root_inode(rd, &inode); + if (start == NULL) { + ret = sqfs_dir_reader_get_root_inode(rd, &inode); + } else { + ret = sqfs_inode_copy(start, &inode); + } + if (ret) return ret; -- cgit v1.2.3