|
|
|
@ -260,7 +260,8 @@ int excluded(struct dir_struct *dir, const char *pathname)
@@ -260,7 +260,8 @@ int excluded(struct dir_struct *dir, const char *pathname)
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void add_name(struct dir_struct *dir, const char *pathname, int len) |
|
|
|
|
static void add_name(struct dir_struct *dir, const char *pathname, int len, |
|
|
|
|
int ignored_entry) |
|
|
|
|
{ |
|
|
|
|
struct dir_entry *ent; |
|
|
|
|
|
|
|
|
@ -273,6 +274,7 @@ static void add_name(struct dir_struct *dir, const char *pathname, int len)
@@ -273,6 +274,7 @@ static void add_name(struct dir_struct *dir, const char *pathname, int len)
|
|
|
|
|
dir->entries = xrealloc(dir->entries, alloc*sizeof(ent)); |
|
|
|
|
} |
|
|
|
|
ent = xmalloc(sizeof(*ent) + len + 1); |
|
|
|
|
ent->ignored_entry = ignored_entry; |
|
|
|
|
ent->len = len; |
|
|
|
|
memcpy(ent->name, pathname, len); |
|
|
|
|
ent->name[len] = 0; |
|
|
|
@ -314,6 +316,7 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
@@ -314,6 +316,7 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
|
|
|
|
|
|
|
|
|
|
while ((de = readdir(fdir)) != NULL) { |
|
|
|
|
int len; |
|
|
|
|
int ignored_entry; |
|
|
|
|
|
|
|
|
|
if ((de->d_name[0] == '.') && |
|
|
|
|
(de->d_name[1] == 0 || |
|
|
|
@ -322,11 +325,12 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
@@ -322,11 +325,12 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
|
|
|
|
|
continue; |
|
|
|
|
len = strlen(de->d_name); |
|
|
|
|
memcpy(fullname + baselen, de->d_name, len+1); |
|
|
|
|
if (excluded(dir, fullname) != dir->show_ignored) { |
|
|
|
|
if (!dir->show_ignored || DTYPE(de) != DT_DIR) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
ignored_entry = excluded(dir, fullname); |
|
|
|
|
|
|
|
|
|
if (!dir->show_both && |
|
|
|
|
(ignored_entry != dir->show_ignored) && |
|
|
|
|
(!dir->show_ignored || DTYPE(de) != DT_DIR)) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
switch (DTYPE(de)) { |
|
|
|
|
struct stat st; |
|
|
|
@ -364,7 +368,8 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
@@ -364,7 +368,8 @@ static int read_directory_recursive(struct dir_struct *dir, const char *path, co
|
|
|
|
|
if (check_only) |
|
|
|
|
goto exit_early; |
|
|
|
|
else |
|
|
|
|
add_name(dir, fullname, baselen + len); |
|
|
|
|
add_name(dir, fullname, baselen + len, |
|
|
|
|
ignored_entry); |
|
|
|
|
} |
|
|
|
|
exit_early: |
|
|
|
|
closedir(fdir); |
|
|
|
|