summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Williams <bmwill@google.com>2017-06-12 15:14:00 -0700
committerJunio C Hamano <gitster@pobox.com>2017-06-13 11:40:51 -0700
commit23d6236a07be1434479a5d2f1f82cd8dda4818f9 (patch)
tree91d755a6f565d18b4c8fe7ebb23a33d26cf96933
parent1985fd68c65f2989033924416367a683b1d8ca67 (diff)
downloadgit-23d6236a07be1434479a5d2f1f82cd8dda4818f9.tar.gz
ls-files: convert show_killed_files to take an index
Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/ls-files.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 8c3f3d8cac..b82b78036d 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -120,7 +120,8 @@ static void show_other_files(struct dir_struct *dir)
}
}
-static void show_killed_files(struct dir_struct *dir)
+static void show_killed_files(const struct index_state *istate,
+ const struct dir_struct *dir)
{
int i;
for (i = 0; i < dir->nr; i++) {
@@ -134,29 +135,29 @@ static void show_killed_files(struct dir_struct *dir)
/* If ent->name is prefix of an entry in the
* cache, it will be killed.
*/
- pos = cache_name_pos(ent->name, ent->len);
+ pos = index_name_pos(istate, ent->name, ent->len);
if (0 <= pos)
die("BUG: killed-file %.*s not found",
ent->len, ent->name);
pos = -pos - 1;
- while (pos < active_nr &&
- ce_stage(active_cache[pos]))
+ while (pos < istate->cache_nr &&
+ ce_stage(istate->cache[pos]))
pos++; /* skip unmerged */
- if (active_nr <= pos)
+ if (istate->cache_nr <= pos)
break;
/* pos points at a name immediately after
* ent->name in the cache. Does it expect
* ent->name to be a directory?
*/
- len = ce_namelen(active_cache[pos]);
+ len = ce_namelen(istate->cache[pos]);
if ((ent->len < len) &&
- !strncmp(active_cache[pos]->name,
+ !strncmp(istate->cache[pos]->name,
ent->name, ent->len) &&
- active_cache[pos]->name[ent->len] == '/')
+ istate->cache[pos]->name[ent->len] == '/')
killed = 1;
break;
}
- if (0 <= cache_name_pos(ent->name, sp - ent->name)) {
+ if (0 <= index_name_pos(istate, ent->name, sp - ent->name)) {
/* If any of the leading directories in
* ent->name is registered in the cache,
* ent->name will be killed.
@@ -337,7 +338,7 @@ static void show_files(struct dir_struct *dir)
if (show_others)
show_other_files(dir);
if (show_killed)
- show_killed_files(dir);
+ show_killed_files(&the_index, dir);
}
if (show_cached || show_stage) {
for (i = 0; i < active_nr; i++) {