On Mon, Feb 24, 2025 at 10:00:28PM +0800, shejialuo wrote: > On Wed, Feb 19, 2025 at 02:23:39PM +0100, Patrick Steinhardt wrote: > > diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c > > index 06543f79c64..b0c09f34433 100644 > > --- a/refs/reftable-backend.c > > +++ b/refs/reftable-backend.c > > @@ -718,6 +718,20 @@ static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator) > > return ITER_OK; > > } > > > > +static int reftable_ref_iterator_seek(struct ref_iterator *ref_iterator, > > + const char *prefix) > > +{ > > + struct reftable_ref_iterator *iter = > > + (struct reftable_ref_iterator *)ref_iterator; > > + > > + free(iter->prefix); > > + iter->prefix = xstrdup_or_null(prefix); > > + iter->prefix_len = prefix ? strlen(prefix) : 0; > > + iter->err = reftable_iterator_seek_ref(&iter->iter, prefix); > > Should we rename this function `reftable_iterator_seek_ref` by the way? > It is a little strange that we have two functions which are so similar: > > 1. reftable_ref_iterator_seek > 2. reftable_iterator_seek_ref > > However, don't worth a reroll. Well, they do similar things, but at different levels: - `reftable_ref_iterator_seek()` operates on the high-level generic `struct ref_iterator`. - `reftable_iterator_seek_ref()` operates on the low-level `struct reftable_ref_iterator` provided by the reftable library. As such I think that they are named appropriately as their prefixes tell us which structure they operate on. Patrick