Skip to content

Commit 9572724

Browse files
committed
refs: implement _foreach with the iterator
1 parent 932af0e commit 9572724

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/refs.c

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -562,10 +562,28 @@ int git_reference_foreach(
562562
git_reference_foreach_cb callback,
563563
void *payload)
564564
{
565-
git_refdb *refdb;
566-
git_repository_refdb__weakptr(&refdb, repo);
565+
git_reference_iterator *iter;
566+
const char *name;
567+
int error;
568+
569+
GIT_UNUSED(list_flags);
570+
571+
if (git_reference_iterator_new(&iter, repo) < 0)
572+
return -1;
567573

568-
return git_refdb_foreach(refdb, list_flags, callback, payload);
574+
while ((error = git_reference_next(&name, iter)) == 0) {
575+
if (callback(name, payload)) {
576+
error = GIT_EUSER;
577+
goto out;
578+
}
579+
}
580+
581+
if (error == GIT_ITEROVER)
582+
error = 0;
583+
584+
out:
585+
git_reference_iterator_free(iter);
586+
return error;
569587
}
570588

571589
int git_reference_iterator_new(git_reference_iterator **out, git_repository *repo)

0 commit comments

Comments
 (0)