]> granicus.if.org Git - git/commitdiff
dir: convert directory_exists_in_index to take index
authorBrandon Williams <bmwill@google.com>
Fri, 5 May 2017 19:53:23 +0000 (12:53 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 6 May 2017 10:15:38 +0000 (19:15 +0900)
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c

diff --git a/dir.c b/dir.c
index 44307b9630db8b6c5d45399b965ee3d928240a3f..5c635198d588fe8fc1bf718c0e6dfefb1926ae5f 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1264,14 +1264,15 @@ enum exist_status {
  * the directory name; instead, use the case insensitive
  * directory hash.
  */
-static enum exist_status directory_exists_in_index_icase(const char *dirname, int len)
+static enum exist_status directory_exists_in_index_icase(struct index_state *istate,
+                                                        const char *dirname, int len)
 {
        struct cache_entry *ce;
 
-       if (index_dir_exists(&the_index, dirname, len))
+       if (index_dir_exists(istate, dirname, len))
                return index_directory;
 
-       ce = index_file_exists(&the_index, dirname, len, ignore_case);
+       ce = index_file_exists(istate, dirname, len, ignore_case);
        if (ce && S_ISGITLINK(ce->ce_mode))
                return index_gitdir;
 
@@ -1285,18 +1286,19 @@ static enum exist_status directory_exists_in_index_icase(const char *dirname, in
  * the files it contains) will sort with the '/' at the
  * end.
  */
-static enum exist_status directory_exists_in_index(const char *dirname, int len)
+static enum exist_status directory_exists_in_index(struct index_state *istate,
+                                                  const char *dirname, int len)
 {
        int pos;
 
        if (ignore_case)
-               return directory_exists_in_index_icase(dirname, len);
+               return directory_exists_in_index_icase(istate, dirname, len);
 
-       pos = index_name_pos(&the_index, dirname, len);
+       pos = index_name_pos(istate, dirname, len);
        if (pos < 0)
                pos = -pos-1;
-       while (pos < the_index.cache_nr) {
-               const struct cache_entry *ce = the_index.cache[pos++];
+       while (pos < istate->cache_nr) {
+               const struct cache_entry *ce = istate->cache[pos++];
                unsigned char endchar;
 
                if (strncmp(ce->name, dirname, len))
@@ -1351,7 +1353,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
        const struct pathspec *pathspec)
 {
        /* The "len-1" is to strip the final '/' */
-       switch (directory_exists_in_index(dirname, len-1)) {
+       switch (directory_exists_in_index(&the_index, dirname, len-1)) {
        case index_directory:
                return path_recurse;
 
@@ -1554,7 +1556,7 @@ static enum path_treatment treat_one_path(struct dir_struct *dir,
        if ((dir->flags & DIR_COLLECT_KILLED_ONLY) &&
            (dtype == DT_DIR) &&
            !has_path_in_index &&
-           (directory_exists_in_index(path->buf, path->len) == index_nonexistent))
+           (directory_exists_in_index(&the_index, path->buf, path->len) == index_nonexistent))
                return path_none;
 
        exclude = is_excluded(dir, path->buf, &dtype);