Re: [PATCH v2 12/16] refs/iterator: implement seeking for reftable iterators
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Feb 25, 2025, 07:39 UTC
- Message-ID
- <Z71zxD17Ib5iydyr@pks.im>
- In-Reply-To
- <Z7x7fDiW0iN7qGIg@ArchLinux>
On Mon, Feb 24, 2025 at 10:00:28PM +0800, shejialuo wrote:
Show 27 quoted lines
> 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