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; int i;
for (i = 0; i < dir->nr; 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 /* If ent->name is prefix of an entry in the
* cache, it will be killed. * 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) if (0 <= pos)
die("BUG: killed-file %.*s not found", die("BUG: killed-file %.*s not found",
ent->len, ent->name); ent->len, ent->name);
pos = -pos - 1; pos = -pos - 1;
while (pos < active_nr && while (pos < istate->cache_nr &&
ce_stage(active_cache[pos])) ce_stage(istate->cache[pos]))
pos++; /* skip unmerged */ pos++; /* skip unmerged */
if (active_nr <= pos) if (istate->cache_nr <= pos)
break; break;
/* pos points at a name immediately after /* pos points at a name immediately after
* ent->name in the cache. Does it expect * ent->name in the cache. Does it expect
* ent->name to be a directory? * ent->name to be a directory?
*/ */
len = ce_namelen(active_cache[pos]); len = ce_namelen(istate->cache[pos]);
if ((ent->len < len) && if ((ent->len < len) &&
!strncmp(active_cache[pos]->name, !strncmp(istate->cache[pos]->name,
ent->name, ent->len) && ent->name, ent->len) &&
active_cache[pos]->name[ent->len] == '/') istate->cache[pos]->name[ent->len] == '/')
killed = 1; killed = 1;
break; 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 /* If any of the leading directories in
* ent->name is registered in the cache, * ent->name is registered in the cache,
* ent->name will be killed. * ent->name will be killed.
@ -337,7 +338,7 @@ static void show_files(struct dir_struct *dir)
if (show_others) if (show_others)
show_other_files(dir); show_other_files(dir);
if (show_killed) if (show_killed)
show_killed_files(dir); show_killed_files(&the_index, dir);
} }
if (show_cached || show_stage) { if (show_cached || show_stage) {
for (i = 0; i < active_nr; i++) { for (i = 0; i < active_nr; i++) {