| 775 | } |
| 776 | |
| 777 | static 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 | |
| 824 | static int reftable_log_record_decode(void *rec, struct reftable_buf key, |
| 825 | uint8_t val_type, struct string_view in, |
nothing calls this directly
no test coverage detected