mirror of
https://github.com/git/git.git
synced 2026-08-05 07:31:02 +00:00
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>
This commit is contained in:
committed by
Junio C Hamano
parent
81a03a3236
commit
f1e3c12196
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user