reftable/reader: inline `reader_seek_internal()`

We have both `reader_seek()` and `reader_seek_internal()`, where the
former function only exists so that we can exit early in case the given
table has no records of the sought-after type.

Merge these two functions into one.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2024-05-13 10:47:21 +02:00 committed by Junio C Hamano
parent 81a03a3236
commit f1e3c12196
1 changed files with 12 additions and 22 deletions

View File

@ -573,21 +573,25 @@ done:
return err;
}

static int reader_seek_internal(struct reftable_reader *r,
struct reftable_iterator *it,
struct reftable_record *rec)
static int reader_seek(struct reftable_reader *r, struct reftable_iterator *it,
struct reftable_record *rec)
{
struct reftable_reader_offsets *offs =
reader_offsets_for(r, reftable_record_type(rec));
uint64_t idx = offs->index_offset;
uint8_t typ = reftable_record_type(rec);
struct reftable_reader_offsets *offs = reader_offsets_for(r, typ);
struct table_iter ti = TABLE_ITER_INIT, *p;
int err;

err = table_iter_seek_start(&ti, r, reftable_record_type(rec), !!idx);
if (!offs->is_present) {
iterator_set_empty(it);
return 0;
}

err = table_iter_seek_start(&ti, r, reftable_record_type(rec),
!!offs->index_offset);
if (err < 0)
goto out;

if (idx)
if (offs->index_offset)
err = table_iter_seek_indexed(&ti, rec);
else
err = table_iter_seek_linear(&ti, rec);
@ -604,20 +608,6 @@ out:
return err;
}

static int reader_seek(struct reftable_reader *r, struct reftable_iterator *it,
struct reftable_record *rec)
{
uint8_t typ = reftable_record_type(rec);

struct reftable_reader_offsets *offs = reader_offsets_for(r, typ);
if (!offs->is_present) {
iterator_set_empty(it);
return 0;
}

return reader_seek_internal(r, it, rec);
}

int reftable_reader_seek_ref(struct reftable_reader *r,
struct reftable_iterator *it, const char *name)
{