On Wed, Dec 7, 2016 at 4:51 AM, Brandon Williams <bmw...@google.com> 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.

>
> Signed-off-by: Brandon Williams <bmw...@google.com>
> ---
>  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

Reply via email to