clean: use cache_name_is_other()

cmd_clean() has the exact same code of index_name_is_other(). Reduce
code duplication.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2014-01-24 20:40:35 +07:00 коммит произвёл Junio C Hamano
Родитель 05b85022c9
Коммит 2e70c01799
1 изменённых файлов: 2 добавлений и 19 удалений

Просмотреть файл

@ -933,29 +933,12 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
for (i = 0; i < dir.nr; i++) {
struct dir_entry *ent = dir.entries[i];
int len, pos;
int matches = 0;
const struct cache_entry *ce;
struct stat st;
const char *rel;
/*
* Remove the '/' at the end that directory
* walking adds for directory entries.
*/
len = ent->len;
if (len && ent->name[len-1] == '/')
len--;
pos = cache_name_pos(ent->name, len);
if (0 <= pos)
continue; /* exact match */
pos = -pos - 1;
if (pos < active_nr) {
ce = active_cache[pos];
if (ce_namelen(ce) == len &&
!memcmp(ce->name, ent->name, len))
continue; /* Yup, this one exists unmerged */
}
if (!cache_name_is_other(ent->name, ent->len))
continue;
if (lstat(ent->name, &st))
die_errno("Cannot lstat '%s'", ent->name);