diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-09-15 18:11:47 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-09-15 21:48:47 +0200 |
commit | dc28467db83432f19f004bb76f5e8515c71f8d0b (patch) | |
tree | c6c0557977a5e628d946e7e5aaad345281aa67c0 /lib/sqfs/src/dir_reader.c | |
parent | 69ac85c09dac74f9691b2ed340438e9648516c9f (diff) |
libsqfs: Cleanup readdir state struct
There is no need to keep a copy of the state data internally. If the
external user wants to reset/rewind, they can simply keep a copy of
the old state, now that it is completely transparent.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/sqfs/src/dir_reader.c')
-rw-r--r-- | lib/sqfs/src/dir_reader.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/sqfs/src/dir_reader.c b/lib/sqfs/src/dir_reader.c index 2b6d0e8..fdb5976 100644 --- a/lib/sqfs/src/dir_reader.c +++ b/lib/sqfs/src/dir_reader.c @@ -210,11 +210,11 @@ int sqfs_dir_reader_open_dir(sqfs_dir_reader_t *rd, parent = inode->data.dir.parent_inode; } - if (dcache_find(rd, inode->base.inode_number, &state->cur_ref)) + if (dcache_find(rd, inode->base.inode_number, &state->dir_ref)) return SQFS_ERROR_NO_ENTRY; - if (state->cur_ref == rd->super.root_inode_ref) { - state->parent_ref = state->cur_ref; + if (state->dir_ref == rd->super.root_inode_ref) { + state->parent_ref = state->dir_ref; } else if (dcache_find(rd, parent, &state->parent_ref)) { return SQFS_ERROR_NO_ENTRY; } @@ -224,7 +224,6 @@ int sqfs_dir_reader_open_dir(sqfs_dir_reader_t *rd, state->state = DIR_STATE_ENTRIES; } - state->start_state = state->state; return 0; } @@ -256,7 +255,7 @@ int sqfs_dir_reader_read(sqfs_dir_reader_t *rd, sqfs_dir_reader_state_t *state, err = mk_dummy_entry(".", out); if (err == 0) { state->state = DIR_STATE_DOT; - state->ent_ref = state->cur_ref; + state->ent_ref = state->dir_ref; } return err; case DIR_STATE_DOT: |