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>
This commit is contained in:
Brandon Williams 2017-06-12 15:14:00 -07:00 committed by Junio C Hamano
parent 1985fd68c6
commit 23d6236a07

View file

@ -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++) {