| 1709 | } |
| 1710 | |
| 1711 | int reftable_stack_read_log(struct reftable_stack *st, const char *refname, |
| 1712 | struct reftable_log_record *log) |
| 1713 | { |
| 1714 | struct reftable_iterator it = {0}; |
| 1715 | int err; |
| 1716 | |
| 1717 | err = reftable_stack_init_log_iterator(st, &it); |
| 1718 | if (err) |
| 1719 | goto done; |
| 1720 | |
| 1721 | err = reftable_iterator_seek_log(&it, refname); |
| 1722 | if (err) |
| 1723 | goto done; |
| 1724 | |
| 1725 | err = reftable_iterator_next_log(&it, log); |
| 1726 | if (err) |
| 1727 | goto done; |
| 1728 | |
| 1729 | if (strcmp(log->refname, refname) || |
| 1730 | reftable_log_record_is_deletion(log)) { |
| 1731 | err = 1; |
| 1732 | goto done; |
| 1733 | } |
| 1734 | |
| 1735 | done: |
| 1736 | if (err) { |
| 1737 | reftable_log_record_release(log); |
| 1738 | } |
| 1739 | reftable_iterator_destroy(&it); |
| 1740 | return err; |
| 1741 | } |
| 1742 | |
| 1743 | static int is_table_name(const char *s) |
| 1744 | { |