| 1730 | } |
| 1731 | |
| 1732 | static int read_index_extension(struct index_state *istate, |
| 1733 | const char *ext, const char *data, unsigned long sz) |
| 1734 | { |
| 1735 | switch (CACHE_EXT(ext)) { |
| 1736 | case CACHE_EXT_TREE: |
| 1737 | istate->cache_tree = cache_tree_read(data, sz); |
| 1738 | break; |
| 1739 | case CACHE_EXT_RESOLVE_UNDO: |
| 1740 | istate->resolve_undo = resolve_undo_read(data, sz, the_hash_algo); |
| 1741 | break; |
| 1742 | case CACHE_EXT_LINK: |
| 1743 | if (read_link_extension(istate, data, sz)) |
| 1744 | return -1; |
| 1745 | break; |
| 1746 | case CACHE_EXT_UNTRACKED: |
| 1747 | istate->untracked = read_untracked_extension(data, sz); |
| 1748 | break; |
| 1749 | case CACHE_EXT_FSMONITOR: |
| 1750 | read_fsmonitor_extension(istate, data, sz); |
| 1751 | break; |
| 1752 | case CACHE_EXT_ENDOFINDEXENTRIES: |
| 1753 | case CACHE_EXT_INDEXENTRYOFFSETTABLE: |
| 1754 | /* already handled in do_read_index() */ |
| 1755 | break; |
| 1756 | case CACHE_EXT_SPARSE_DIRECTORIES: |
| 1757 | /* no content, only an indicator */ |
| 1758 | istate->sparse_index = INDEX_COLLAPSED; |
| 1759 | break; |
| 1760 | default: |
| 1761 | if (*ext < 'A' || 'Z' < *ext) |
| 1762 | return error(_("index uses %.4s extension, which we do not understand"), |
| 1763 | ext); |
| 1764 | fprintf_ln(stderr, _("ignoring %.4s extension"), ext); |
| 1765 | break; |
| 1766 | } |
| 1767 | return 0; |
| 1768 | } |
| 1769 | |
| 1770 | /* |
| 1771 | * Parses the contents of the cache entry contained within the 'ondisk' buffer |
no test coverage detected