diff options
| author | Junio C Hamano <gitster@pobox.com> | 2009-02-03 23:50:09 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2009-02-03 23:50:09 -0800 |
| commit | f0817310903312bbc243dd80f066e17a8e0e4b1d (patch) | |
| tree | fd619c9bf1e11ee6ea1ad5d6a000f96146f916b6 /test-dump-cache-tree.c | |
| parent | 281907574ca420cc9a800190509adbf89bf9a2d1 (diff) | |
| parent | 7a85f6ae88be5937c32a7b61601a40a02c03fb3f (diff) | |
Merge branch 'maint-1.6.0' into maint
* maint-1.6.0:
User-manual: "git stash <comment>" form is long gone
add test-dump-cache-tree in Makefile
fix typo in Documentation
apply: fix access to an uninitialized mode variable, found by valgrind
Diffstat (limited to 'test-dump-cache-tree.c')
| -rw-r--r-- | test-dump-cache-tree.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test-dump-cache-tree.c b/test-dump-cache-tree.c new file mode 100644 index 0000000000..1f73f1ea7d --- /dev/null +++ b/test-dump-cache-tree.c @@ -0,0 +1,64 @@ +#include "cache.h" +#include "tree.h" +#include "cache-tree.h" + + +static void dump_one(struct cache_tree *it, const char *pfx, const char *x) +{ + if (it->entry_count < 0) + printf("%-40s %s%s (%d subtrees)\n", + "invalid", x, pfx, it->subtree_nr); + else + printf("%s %s%s (%d entries, %d subtrees)\n", + sha1_to_hex(it->sha1), x, pfx, + it->entry_count, it->subtree_nr); +} + +static int dump_cache_tree(struct cache_tree *it, + struct cache_tree *ref, + const char *pfx) +{ + int i; + int errs = 0; + + if (!it || !ref) + /* missing in either */ + return 0; + + if (it->entry_count < 0) { + dump_one(it, pfx, ""); + dump_one(ref, pfx, "#(ref) "); + if (it->subtree_nr != ref->subtree_nr) + errs = 1; + } + else { + dump_one(it, pfx, ""); + if (hashcmp(it->sha1, ref->sha1) || + ref->entry_count != it->entry_count || + ref->subtree_nr != it->subtree_nr) { + dump_one(ref, pfx, "#(ref) "); + errs = 1; + } + } + + for (i = 0; i < it->subtree_nr; i++) { + char path[PATH_MAX]; + struct cache_tree_sub *down = it->down[i]; + struct cache_tree_sub *rdwn; + + rdwn = cache_tree_sub(ref, down->name); + sprintf(path, "%s%.*s/", pfx, down->namelen, down->name); + if (dump_cache_tree(down->cache_tree, rdwn->cache_tree, path)) + errs = 1; + } + return errs; +} + +int main(int ac, char **av) +{ + struct cache_tree *another = cache_tree(); + if (read_cache() < 0) + die("unable to read index file"); + cache_tree_update(another, active_cache, active_nr, 0, 1); + return dump_cache_tree(active_cache_tree, another, ""); +} |
