dir: break part of read_directory_recursive() out for reuse
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>
This commit is contained in:
parent
072a231016
commit
c5c4eddd56
60
dir.c
60
dir.c
@ -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
|
* Read a directory tree. We currently ignore anything but
|
||||||
* directories, regular files and symlinks. That's because git
|
* directories, regular files and symlinks. That's because git
|
||||||
@ -2035,29 +2069,9 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add the path to the appropriate result list */
|
add_path_to_appropriate_result_list(dir, untracked, &cdir,
|
||||||
switch (state) {
|
istate, &path, baselen,
|
||||||
case path_excluded:
|
pathspec, state);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
close_cached_dir(&cdir);
|
close_cached_dir(&cdir);
|
||||||
out:
|
out:
|
||||||
|
Loading…
Reference in New Issue
Block a user