Skip to content

Commit

Permalink
dir_struct: add collect_ignored option
Browse files Browse the repository at this point in the history
When set, this option will cause read_directory to keep
track of which entries were ignored. While this shouldn't
effect functionality in most cases, it can make warning
messages to the user much more useful.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
peff authored and gitster committed Jun 13, 2007
1 parent 90ac368 commit 2abd31b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
12 changes: 12 additions & 0 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,15 @@ struct dir_entry *dir_add_name(struct dir_struct *dir, const char *pathname, int
return dir->entries[dir->nr++] = dir_entry_new(pathname, len);
}

struct dir_entry *dir_add_ignored(struct dir_struct *dir, const char *pathname, int len)
{
if (cache_name_pos(pathname, len) >= 0)
return NULL;

ALLOC_GROW(dir->ignored, dir->ignored_nr, dir->ignored_alloc);
return dir->ignored[dir->ignored_nr++] = dir_entry_new(pathname, len);
}

enum exist_status {
index_nonexistent = 0,
index_directory,
Expand Down Expand Up @@ -463,6 +472,8 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
continue;

exclude = excluded(dir, fullname);
if (exclude && dir->collect_ignored)
dir_add_ignored(dir, fullname, baselen + len);
if (exclude != dir->show_ignored) {
if (!dir->show_ignored || DTYPE(de) != DT_DIR) {
continue;
Expand Down Expand Up @@ -609,6 +620,7 @@ int read_directory(struct dir_struct *dir, const char *path, const char *base, i
read_directory_recursive(dir, path, base, baselen, 0, simplify);
free_simplify(simplify);
qsort(dir->entries, dir->nr, sizeof(struct dir_entry *), cmp_name);
qsort(dir->ignored, dir->ignored_nr, sizeof(struct dir_entry *), cmp_name);
return dir->nr;
}

Expand Down
5 changes: 4 additions & 1 deletion dir.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,14 @@ struct exclude_list {

struct dir_struct {
int nr, alloc;
int ignored_nr, ignored_alloc;
unsigned int show_ignored:1,
show_other_directories:1,
hide_empty_directories:1,
no_gitlinks:1;
no_gitlinks:1,
collect_ignored:1;
struct dir_entry **entries;
struct dir_entry **ignored;

/* Exclude info */
const char *exclude_per_dir;
Expand Down

0 comments on commit 2abd31b

Please sign in to comment.