MCPcopy Create free account
hub / github.com/git/git / reftable_encode_key

Function reftable_encode_key

reftable/record.c:142–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

140}
141
142int reftable_encode_key(int *restart, struct string_view dest,
143 struct reftable_buf prev_key, struct reftable_buf key,
144 uint8_t extra)
145{
146 struct string_view start = dest;
147 size_t prefix_len = common_prefix_size(&prev_key, &key);
148 uint64_t suffix_len = key.len - prefix_len;
149 int n = put_var_int(&dest, prefix_len);
150 if (n < 0)
151 return n;
152 string_view_consume(&dest, n);
153
154 *restart = (prefix_len == 0);
155
156 n = put_var_int(&dest, suffix_len << 3 | (uint64_t)extra);
157 if (n < 0)
158 return n;
159 string_view_consume(&dest, n);
160
161 if (dest.len < suffix_len)
162 return REFTABLE_ENTRY_TOO_BIG_ERROR;
163 memcpy(dest.buf, key.buf + prefix_len, suffix_len);
164 string_view_consume(&dest, suffix_len);
165
166 return start.len - dest.len;
167}
168
169int reftable_decode_keylen(struct string_view in,
170 uint64_t *prefix_len,

Callers 2

block_writer_addFunction · 0.85

Calls 3

common_prefix_sizeFunction · 0.85
put_var_intFunction · 0.85
string_view_consumeFunction · 0.85

Tested by 1