MCPcopy Index your code
hub / github.com/git/git / parse_footer

Function parse_footer

reftable/table.c:43–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41}
42
43static int parse_footer(struct reftable_table *t, uint8_t *footer,
44 uint8_t *header)
45{
46 uint8_t *f = footer;
47 uint8_t first_block_typ;
48 int err = 0;
49 uint32_t computed_crc;
50 uint32_t file_crc;
51
52 if (memcmp(f, "REFT", 4)) {
53 err = REFTABLE_FORMAT_ERROR;
54 goto done;
55 }
56 f += 4;
57
58 if (memcmp(footer, header, header_size(t->version))) {
59 err = REFTABLE_FORMAT_ERROR;
60 goto done;
61 }
62
63 f++;
64 t->block_size = reftable_get_be24(f);
65
66 f += 3;
67 t->min_update_index = reftable_get_be64(f);
68 f += 8;
69 t->max_update_index = reftable_get_be64(f);
70 f += 8;
71
72 if (t->version == 1) {
73 t->hash_id = REFTABLE_HASH_SHA1;
74 } else {
75 switch (reftable_get_be32(f)) {
76 case REFTABLE_FORMAT_ID_SHA1:
77 t->hash_id = REFTABLE_HASH_SHA1;
78 break;
79 case REFTABLE_FORMAT_ID_SHA256:
80 t->hash_id = REFTABLE_HASH_SHA256;
81 break;
82 default:
83 err = REFTABLE_FORMAT_ERROR;
84 goto done;
85 }
86
87 f += 4;
88 }
89
90 t->ref_offsets.index_offset = reftable_get_be64(f);
91 f += 8;
92
93 t->obj_offsets.offset = reftable_get_be64(f);
94 f += 8;
95
96 t->object_id_len = t->obj_offsets.offset & ((1 << 5) - 1);
97 t->obj_offsets.offset >>= 5;
98
99 t->obj_offsets.index_offset = reftable_get_be64(f);
100 f += 8;

Callers 1

reftable_table_newFunction · 0.85

Calls 4

header_sizeFunction · 0.85
reftable_get_be24Function · 0.85
reftable_get_be64Function · 0.85
reftable_get_be32Function · 0.85

Tested by

no test coverage detected