| 785 | } |
| 786 | |
| 787 | static struct reftable_ref_iterator *ref_iterator_for_stack(struct reftable_ref_store *refs, |
| 788 | struct reftable_stack *stack, |
| 789 | const char *prefix, |
| 790 | const char **exclude_patterns, |
| 791 | int flags) |
| 792 | { |
| 793 | struct reftable_ref_iterator *iter; |
| 794 | int ret; |
| 795 | |
| 796 | iter = xcalloc(1, sizeof(*iter)); |
| 797 | base_ref_iterator_init(&iter->base, &reftable_ref_iterator_vtable); |
| 798 | iter->base.ref.oid = &iter->oid; |
| 799 | iter->flags = flags; |
| 800 | iter->refs = refs; |
| 801 | iter->exclude_patterns = filter_exclude_patterns(exclude_patterns); |
| 802 | |
| 803 | ret = refs->err; |
| 804 | if (ret) |
| 805 | goto done; |
| 806 | |
| 807 | ret = reftable_stack_reload(stack); |
| 808 | if (ret) |
| 809 | goto done; |
| 810 | |
| 811 | ret = reftable_stack_init_ref_iterator(stack, &iter->iter); |
| 812 | if (ret) |
| 813 | goto done; |
| 814 | |
| 815 | ret = reftable_ref_iterator_seek(&iter->base, prefix, |
| 816 | REF_ITERATOR_SEEK_SET_PREFIX); |
| 817 | if (ret) |
| 818 | goto done; |
| 819 | |
| 820 | done: |
| 821 | iter->err = ret; |
| 822 | return iter; |
| 823 | } |
| 824 | |
| 825 | static struct ref_iterator *reftable_be_iterator_begin(struct ref_store *ref_store, |
| 826 | const char *prefix, |
no test coverage detected