ls-tree: convert show_recursive to use the pathspec struct interface

Convert 'show_recursive()' to use the pathspec struct interface from
using the '_raw' entry in the pathspec struct.

Signed-off-by: Brandon Williams <bmwill@google.com>
Reviewed-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brandon Williams 2017-01-04 10:03:59 -08:00 committed by Junio C Hamano
parent 966de3028b
commit e1e24edc1a

View File

@ -31,21 +31,18 @@ static const char * const ls_tree_usage[] = {
static int show_recursive(const char *base, int baselen, const char *pathname) static int show_recursive(const char *base, int baselen, const char *pathname)
{ {
const char **s; int i;
if (ls_options & LS_RECURSIVE) if (ls_options & LS_RECURSIVE)
return 1; return 1;
s = pathspec._raw; if (!pathspec.nr)
if (!s)
return 0; return 0;
for (;;) { for (i = 0; i < pathspec.nr; i++) {
const char *spec = *s++; const char *spec = pathspec.items[i].match;
int len, speclen; int len, speclen;
if (!spec)
return 0;
if (strncmp(base, spec, baselen)) if (strncmp(base, spec, baselen))
continue; continue;
len = strlen(pathname); len = strlen(pathname);
@ -59,6 +56,7 @@ static int show_recursive(const char *base, int baselen, const char *pathname)
continue; continue;
return 1; return 1;
} }
return 0;
} }
static int show_tree(const unsigned char *sha1, struct strbuf *base, static int show_tree(const unsigned char *sha1, struct strbuf *base,
@ -175,8 +173,8 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
* cannot be lifted until it is converted to use * cannot be lifted until it is converted to use
* match_pathspec() or tree_entry_interesting() * match_pathspec() or tree_entry_interesting()
*/ */
parse_pathspec(&pathspec, PATHSPEC_GLOB | PATHSPEC_ICASE | parse_pathspec(&pathspec, PATHSPEC_ALL_MAGIC &
PATHSPEC_EXCLUDE, ~(PATHSPEC_FROMTOP | PATHSPEC_LITERAL),
PATHSPEC_PREFER_CWD, PATHSPEC_PREFER_CWD,
prefix, argv + 1); prefix, argv + 1);
for (i = 0; i < pathspec.nr; i++) for (i = 0; i < pathspec.nr; i++)