tree.c: update read_tree_recursive callback to pass strbuf as base
[git/git.git] / builtin / ls-tree.c
index 51184df..1ab0381 100644 (file)
@@ -61,7 +61,7 @@ static int show_recursive(const char *base, int baselen, const char *pathname)
        }
 }
 
        }
 }
 
-static int show_tree(const unsigned char *sha1, const char *base, int baselen,
+static int show_tree(const unsigned char *sha1, struct strbuf *base,
                const char *pathname, unsigned mode, int stage, void *context)
 {
        int retval = 0;
                const char *pathname, unsigned mode, int stage, void *context)
 {
        int retval = 0;
@@ -79,7 +79,7 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen,
                 */
                type = commit_type;
        } else if (S_ISDIR(mode)) {
                 */
                type = commit_type;
        } else if (S_ISDIR(mode)) {
-               if (show_recursive(base, baselen, pathname)) {
+               if (show_recursive(base->buf, base->len, pathname)) {
                        retval = READ_TREE_RECURSIVE;
                        if (!(ls_options & LS_SHOW_TREES))
                                return retval;
                        retval = READ_TREE_RECURSIVE;
                        if (!(ls_options & LS_SHOW_TREES))
                                return retval;
@@ -90,7 +90,8 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen,
                return 0;
 
        if (chomp_prefix &&
                return 0;
 
        if (chomp_prefix &&
-           (baselen < chomp_prefix || memcmp(ls_tree_prefix, base, chomp_prefix)))
+           (base->len < chomp_prefix ||
+            memcmp(ls_tree_prefix, base->buf, chomp_prefix)))
                return 0;
 
        if (!(ls_options & LS_NAME_ONLY)) {
                return 0;
 
        if (!(ls_options & LS_NAME_ONLY)) {
@@ -112,7 +113,7 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen,
                        printf("%06o %s %s\t", mode, type,
                               find_unique_abbrev(sha1, abbrev));
        }
                        printf("%06o %s %s\t", mode, type,
                               find_unique_abbrev(sha1, abbrev));
        }
-       write_name_quotedpfx(base + chomp_prefix, baselen - chomp_prefix,
+       write_name_quotedpfx(base->buf + chomp_prefix, base->len - chomp_prefix,
                          pathname, stdout, line_termination);
        return retval;
 }
                          pathname, stdout, line_termination);
        return retval;
 }