Skip to content

Commit

Permalink
dir: break part of read_directory_recursive() out for reuse
Browse files Browse the repository at this point in the history
Create an add_path_to_appropriate_result_list() function from the code
at the end of read_directory_recursive() so we can use it elsewhere.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
newren authored and gitster committed Dec 11, 2019
1 parent 072a231 commit c5c4edd
Showing 1 changed file with 37 additions and 23 deletions.
60 changes: 37 additions & 23 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1932,6 +1932,40 @@ static void close_cached_dir(struct cached_dir *cdir)
}
}

static void add_path_to_appropriate_result_list(struct dir_struct *dir,
struct untracked_cache_dir *untracked,
struct cached_dir *cdir,
struct index_state *istate,
struct strbuf *path,
int baselen,
const struct pathspec *pathspec,
enum path_treatment state)
{
/* add the path to the appropriate result list */
switch (state) {
case path_excluded:
if (dir->flags & DIR_SHOW_IGNORED)
dir_add_name(dir, istate, path->buf, path->len);
else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
((dir->flags & DIR_COLLECT_IGNORED) &&
exclude_matches_pathspec(path->buf, path->len,
pathspec)))
dir_add_ignored(dir, istate, path->buf, path->len);
break;

case path_untracked:
if (dir->flags & DIR_SHOW_IGNORED)
break;
dir_add_name(dir, istate, path->buf, path->len);
if (cdir->fdir)
add_untracked(untracked, path->buf + baselen);
break;

default:
break;
}
}

/*
* Read a directory tree. We currently ignore anything but
* directories, regular files and symlinks. That's because git
Expand Down Expand Up @@ -2035,29 +2069,9 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
continue;
}

/* add the path to the appropriate result list */
switch (state) {
case path_excluded:
if (dir->flags & DIR_SHOW_IGNORED)
dir_add_name(dir, istate, path.buf, path.len);
else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
((dir->flags & DIR_COLLECT_IGNORED) &&
exclude_matches_pathspec(path.buf, path.len,
pathspec)))
dir_add_ignored(dir, istate, path.buf, path.len);
break;

case path_untracked:
if (dir->flags & DIR_SHOW_IGNORED)
break;
dir_add_name(dir, istate, path.buf, path.len);
if (cdir.fdir)
add_untracked(untracked, path.buf + baselen);
break;

default:
break;
}
add_path_to_appropriate_result_list(dir, untracked, &cdir,
istate, &path, baselen,
pathspec, state);
}
close_cached_dir(&cdir);
out:
Expand Down

0 comments on commit c5c4edd

Please sign in to comment.