@@ -20,38 +20,58 @@ void table_init_iter(struct reftable_table *tab,
20
20
tab -> ops -> init_iter (tab -> table_arg , it , typ );
21
21
}
22
22
23
- int reftable_table_seek_ref (struct reftable_table * tab ,
24
- struct reftable_iterator * it , const char * name )
23
+ void reftable_table_init_ref_iter (struct reftable_table * tab ,
24
+ struct reftable_iterator * it )
25
+ {
26
+ table_init_iter (tab , it , BLOCK_TYPE_REF );
27
+ }
28
+
29
+ void reftable_table_init_log_iter (struct reftable_table * tab ,
30
+ struct reftable_iterator * it )
31
+ {
32
+ table_init_iter (tab , it , BLOCK_TYPE_LOG );
33
+ }
34
+
35
+ int reftable_iterator_seek_ref (struct reftable_iterator * it ,
36
+ const char * name )
25
37
{
26
38
struct reftable_record want = {
27
39
.type = BLOCK_TYPE_REF ,
28
40
.u .ref = {
29
41
.refname = (char * )name ,
30
42
},
31
43
};
32
- table_init_iter (tab , it , BLOCK_TYPE_REF );
33
44
return it -> ops -> seek (it -> iter_arg , & want );
34
45
}
35
46
36
- int reftable_table_seek_log (struct reftable_table * tab ,
37
- struct reftable_iterator * it , const char * name )
47
+ int reftable_iterator_seek_log_at (struct reftable_iterator * it ,
48
+ const char * name , uint64_t update_index )
38
49
{
39
50
struct reftable_record want = {
40
51
.type = BLOCK_TYPE_LOG ,
41
52
.u .log = {
42
53
.refname = (char * )name ,
43
- .update_index = ~(( uint64_t ) 0 ) ,
54
+ .update_index = update_index ,
44
55
},
45
56
};
46
- table_init_iter (tab , it , BLOCK_TYPE_LOG );
47
57
return it -> ops -> seek (it -> iter_arg , & want );
48
58
}
49
59
60
+ int reftable_iterator_seek_log (struct reftable_iterator * it ,
61
+ const char * name )
62
+ {
63
+ return reftable_iterator_seek_log_at (it , name , ~((uint64_t ) 0 ));
64
+ }
65
+
50
66
int reftable_table_read_ref (struct reftable_table * tab , const char * name ,
51
67
struct reftable_ref_record * ref )
52
68
{
53
69
struct reftable_iterator it = { NULL };
54
- int err = reftable_table_seek_ref (tab , & it , name );
70
+ int err ;
71
+
72
+ reftable_table_init_ref_iter (tab , & it );
73
+
74
+ err = reftable_iterator_seek_ref (& it , name );
55
75
if (err )
56
76
goto done ;
57
77
@@ -76,10 +96,13 @@ int reftable_table_print(struct reftable_table *tab) {
76
96
struct reftable_ref_record ref = { NULL };
77
97
struct reftable_log_record log = { NULL };
78
98
uint32_t hash_id = reftable_table_hash_id (tab );
79
- int err = reftable_table_seek_ref (tab , & it , "" );
80
- if (err < 0 ) {
99
+ int err ;
100
+
101
+ reftable_table_init_ref_iter (tab , & it );
102
+
103
+ err = reftable_iterator_seek_ref (& it , "" );
104
+ if (err < 0 )
81
105
return err ;
82
- }
83
106
84
107
while (1 ) {
85
108
err = reftable_iterator_next_ref (& it , & ref );
@@ -94,10 +117,12 @@ int reftable_table_print(struct reftable_table *tab) {
94
117
reftable_iterator_destroy (& it );
95
118
reftable_ref_record_release (& ref );
96
119
97
- err = reftable_table_seek_log (tab , & it , "" );
98
- if (err < 0 ) {
120
+ reftable_table_init_log_iter (tab , & it );
121
+
122
+ err = reftable_iterator_seek_log (& it , "" );
123
+ if (err < 0 )
99
124
return err ;
100
- }
125
+
101
126
while (1 ) {
102
127
err = reftable_iterator_next_log (& it , & log );
103
128
if (err > 0 ) {
0 commit comments