Re: [PATCH 04/17] ls-tree: convert show_recursive to use the pathspec struct interface
From: Duy Nguyen <hidden>
Date: 2016-12-07 10:39:34
On Wed, Dec 7, 2016 at 4:51 AM, Brandon Williams [off-list ref] wrote:
Convert 'show_recursive()' to use the pathspec struct interface from using the '_raw' entry in the pathspec struct.
Slightly off-topic (sorry, but you made me look at this code! :D), could you update the magic_mask argument of parse_pathspec() in this file to PATHSPEC_ALL_MAGIC & ~(PATHSPEC_FROMTOP | PATHSPEC_LITERAL)? It makes sure all future magic will be caught as unsupported (and I think Stefan is adding one, but understandably he did not find this code). I think it's in the spirit of renaming _raw to match too. By limiting magic to fromtop and literal, we are sure match can only be path and nothing else, which is good because this show_recursive can't handle anything else either.
quoted hunk ↗ jump to hunk
Signed-off-by: Brandon Williams <redacted> --- builtin/ls-tree.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index 0e30d86..e0f4307 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c@@ -31,21 +31,18 @@ static const char * const ls_tree_usage[] = { static int show_recursive(const char *base, int baselen, const char *pathname) { - const char **s; + int i; if (ls_options & LS_RECURSIVE) return 1; - s = pathspec._raw; - if (!s) + if (!pathspec.nr) return 0; - for (;;) { - const char *spec = *s++; + for (i = 0; i < pathspec.nr; i++) { + const char *spec = pathspec.items[i].match; int len, speclen; - if (!spec) - return 0; if (strncmp(base, spec, baselen)) continue; len = strlen(pathname);@@ -59,6 +56,7 @@ static int show_recursive(const char *base, int baselen, const char *pathname) continue; return 1; } + return 0; } static int show_tree(const unsigned char *sha1, struct strbuf *base, --2.8.0.rc3.226.g39d4020
-- Duy