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

Function reftable_log_record_encode

reftable/record.c:777–822  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

775}
776
777static int reftable_log_record_encode(const void *rec, struct string_view s,
778 uint32_t hash_size)
779{
780 const struct reftable_log_record *r = rec;
781 struct string_view start = s;
782 int n = 0;
783 if (reftable_log_record_is_deletion(r))
784 return 0;
785
786 if (s.len < 2 * hash_size)
787 return REFTABLE_ENTRY_TOO_BIG_ERROR;
788
789 memcpy(s.buf, r->value.update.old_hash, hash_size);
790 memcpy(s.buf + hash_size, r->value.update.new_hash, hash_size);
791 string_view_consume(&s, 2 * hash_size);
792
793 n = encode_string(r->value.update.name ? r->value.update.name : "", s);
794 if (n < 0)
795 return n;
796 string_view_consume(&s, n);
797
798 n = encode_string(r->value.update.email ? r->value.update.email : "",
799 s);
800 if (n < 0)
801 return n;
802 string_view_consume(&s, n);
803
804 n = put_var_int(&s, r->value.update.time);
805 if (n < 0)
806 return n;
807 string_view_consume(&s, n);
808
809 if (s.len < 2)
810 return REFTABLE_ENTRY_TOO_BIG_ERROR;
811
812 reftable_put_be16(s.buf, r->value.update.tz_offset);
813 string_view_consume(&s, 2);
814
815 n = encode_string(
816 r->value.update.message ? r->value.update.message : "", s);
817 if (n < 0)
818 return n;
819 string_view_consume(&s, n);
820
821 return start.len - s.len;
822}
823
824static int reftable_log_record_decode(void *rec, struct reftable_buf key,
825 uint8_t val_type, struct string_view in,

Callers

nothing calls this directly

Calls 5

string_view_consumeFunction · 0.85
encode_stringFunction · 0.85
put_var_intFunction · 0.85
reftable_put_be16Function · 0.85

Tested by

no test coverage detected