summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBernhard Rosenkraenzer <bero@arklinux.org>2006-08-18 22:00:30 +0000
committerBernhard Rosenkraenzer <bero@arklinux.org>2006-08-18 22:00:30 +0000
commit29b030df67f46bdb351f5a6bd7d9d3b4dc6b5d63 (patch)
tree8cc7fd0f39c17d517f79d8e1b045fc5563717d66 /lib
parent423c4d156a9f9ef79a9df1302fadd9cfd8092cfe (diff)
downloadgrep-29b030df67f46bdb351f5a6bd7d9d3b4dc6b5d63.tar.gz
--exclude-dir
* lib/savedir.c, lib/savedir.h, src/grep.c, doc/*: Add --exclude-dir option (patch #5051)
Diffstat (limited to 'lib')
-rw-r--r--lib/savedir.c10
-rw-r--r--lib/savedir.h3
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/savedir.c b/lib/savedir.c
index 3990c266..974787e2 100644
--- a/lib/savedir.c
+++ b/lib/savedir.c
@@ -100,7 +100,7 @@ isdir1 (const char *dir, const char *file)
Return NULL if DIR cannot be opened or if out of memory. */
char *
savedir (const char *dir, off_t name_size, struct exclude *included_patterns,
- struct exclude *excluded_patterns)
+ struct exclude *excluded_patterns, struct exclude *excluded_directory_patterns )
{
DIR *dirp;
struct dirent *dp;
@@ -143,6 +143,14 @@ savedir (const char *dir, off_t name_size, struct exclude *included_patterns,
&& excluded_filename (excluded_patterns, dp->d_name, 0))
continue;
}
+
+ if ( excluded_directory_patterns
+ && isdir1 (dir, dp->d_name) )
+ {
+ if (excluded_directory_patterns
+ && excluded_filename (excluded_directory_patterns, dp->d_name, 0))
+ continue;
+ }
if (size_needed > name_size)
{
diff --git a/lib/savedir.h b/lib/savedir.h
index 49c331b5..a5f6e446 100644
--- a/lib/savedir.h
+++ b/lib/savedir.h
@@ -13,6 +13,7 @@
extern char *
savedir PARAMS ((const char *dir, off_t name_size,
- struct exclude *, struct exclude *));
+ struct exclude *, struct exclude *,
+ struct exclude *));
#endif