mirror of
https://github.com/git/git
synced 2024-10-02 14:45:21 +00:00
dir-iterator: pass name to prepare_next_entry_data()
directly
When adding the next directory entry for `struct dir_iterator` we pass the complete `struct dirent *` to `prepare_next_entry_data()` even though we only need the entry's name. Refactor the code to pass in the name, only. This prepares for a subsequent commit where we introduce the ability to iterate through dir entries in an ordered manner. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f7cdeafdd0
commit
0218de2bdb
|
@ -94,15 +94,15 @@ static int pop_level(struct dir_iterator_int *iter)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Populate iter->base with the necessary information on the next iteration
|
* Populate iter->base with the necessary information on the next iteration
|
||||||
* entry, represented by the given dirent de. Return 0 on success and -1
|
* entry, represented by the given name. Return 0 on success and -1
|
||||||
* otherwise, setting errno accordingly.
|
* otherwise, setting errno accordingly.
|
||||||
*/
|
*/
|
||||||
static int prepare_next_entry_data(struct dir_iterator_int *iter,
|
static int prepare_next_entry_data(struct dir_iterator_int *iter,
|
||||||
struct dirent *de)
|
const char *name)
|
||||||
{
|
{
|
||||||
int err, saved_errno;
|
int err, saved_errno;
|
||||||
|
|
||||||
strbuf_addstr(&iter->base.path, de->d_name);
|
strbuf_addstr(&iter->base.path, name);
|
||||||
/*
|
/*
|
||||||
* We have to reset these because the path strbuf might have
|
* We have to reset these because the path strbuf might have
|
||||||
* been realloc()ed at the previous strbuf_addstr().
|
* been realloc()ed at the previous strbuf_addstr().
|
||||||
|
@ -159,7 +159,7 @@ int dir_iterator_advance(struct dir_iterator *dir_iterator)
|
||||||
if (is_dot_or_dotdot(de->d_name))
|
if (is_dot_or_dotdot(de->d_name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (prepare_next_entry_data(iter, de)) {
|
if (prepare_next_entry_data(iter, de->d_name)) {
|
||||||
if (errno != ENOENT && iter->flags & DIR_ITERATOR_PEDANTIC)
|
if (errno != ENOENT && iter->flags & DIR_ITERATOR_PEDANTIC)
|
||||||
goto error_out;
|
goto error_out;
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in a new issue