diff-tree: fix "whole sub-tree disappeared or appeared" case
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 18 May 2005 21:07:42 +0000 (14:07 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 18 May 2005 21:07:42 +0000 (14:07 -0700)
We still need to check which part of the sub-tree is interesting.

diff-tree.c

index 3bc7480..8fb5729 100644 (file)
@@ -54,15 +54,7 @@ static char *malloc_base(const char *base, const char *path, int pathlen)
 }
 
 static void show_file(const char *prefix, void *tree, unsigned long size, const char *base);
-
-/* A whole sub-tree went away or appeared */
-static void show_tree(const char *prefix, void *tree, unsigned long size, const char *base)
-{
-       while (size) {
-               show_file(prefix, tree, size, base);
-               update_tree_entry(&tree, &size);
-       }
-}
+static void show_tree(const char *prefix, void *tree, unsigned long size, const char *base);
 
 /* A file entry went away or appeared */
 static void show_file(const char *prefix, void *tree, unsigned long size, const char *base)
@@ -222,6 +214,16 @@ static int interesting(void *tree, unsigned long size, const char *base)
        return 0; /* No matches */
 }
 
+/* A whole sub-tree went away or appeared */
+static void show_tree(const char *prefix, void *tree, unsigned long size, const char *base)
+{
+       while (size) {
+               if (interesting(tree, size, base))
+                       show_file(prefix, tree, size, base);
+               update_tree_entry(&tree, &size);
+       }
+}
+
 static int diff_tree(void *tree1, unsigned long size1, void *tree2, unsigned long size2, const char *base)
 {
        while (size1 | size2) {