@matheusbsbs / matheus-bagliano / commits / c5c4eddd56
Fork 0

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>

Elijah Newren committed Dec 10, 2019 at 20:00 UTC c5c4eddd56ccd2ffd6a193856a660573993e9a41
1 file changed +37 -23
dir.c
+37 -23
@@ -1932,6 +1932,40 @@ static void close_cached_dir(struct cached_dir *cdir)
1932 }
1933 }
1934
1935 +static void add_path_to_appropriate_result_list(struct dir_struct *dir,
1936 + struct untracked_cache_dir *untracked,
1937 + struct cached_dir *cdir,
1938 + struct index_state *istate,
1939 + struct strbuf *path,
1940 + int baselen,
1941 + const struct pathspec *pathspec,
1942 + enum path_treatment state)
1943 +{
1944 + /* add the path to the appropriate result list */
1945 + switch (state) {
1946 + case path_excluded:
1947 + if (dir->flags & DIR_SHOW_IGNORED)
1948 + dir_add_name(dir, istate, path->buf, path->len);
1949 + else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
1950 + ((dir->flags & DIR_COLLECT_IGNORED) &&
1951 + exclude_matches_pathspec(path->buf, path->len,
1952 + pathspec)))
1953 + dir_add_ignored(dir, istate, path->buf, path->len);
1954 + break;
1955 +
1956 + case path_untracked:
1957 + if (dir->flags & DIR_SHOW_IGNORED)
1958 + break;
1959 + dir_add_name(dir, istate, path->buf, path->len);
1960 + if (cdir->fdir)
1961 + add_untracked(untracked, path->buf + baselen);
1962 + break;
1963 +
1964 + default:
1965 + break;
1966 + }
1967 +}
1968 +
1969 /*
1970 * Read a directory tree. We currently ignore anything but
1971 * directories, regular files and symlinks. That's because git
@@ -2035,29 +2069,9 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
2069 continue;
2070 }
2071
2038 - /* add the path to the appropriate result list */
2039 - switch (state) {
2040 - case path_excluded:
2041 - if (dir->flags & DIR_SHOW_IGNORED)
2042 - dir_add_name(dir, istate, path.buf, path.len);
2043 - else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
2044 - ((dir->flags & DIR_COLLECT_IGNORED) &&
2045 - exclude_matches_pathspec(path.buf, path.len,
2046 - pathspec)))
2047 - dir_add_ignored(dir, istate, path.buf, path.len);
2048 - break;
2049 -
2050 - case path_untracked:
2051 - if (dir->flags & DIR_SHOW_IGNORED)
2052 - break;
2053 - dir_add_name(dir, istate, path.buf, path.len);
2054 - if (cdir.fdir)
2055 - add_untracked(untracked, path.buf + baselen);
2056 - break;
2057 -
2058 - default:
2059 - break;
2060 - }
2072 + add_path_to_appropriate_result_list(dir, untracked, &cdir,
2073 + istate, &path, baselen,
2074 + pathspec, state);
2075 }
2076 close_cached_dir(&cdir);
2077 out: