in each dir's CVS/Entries file as per-dir includes before the dir's list
of excludes taken from the .cvsignore file.
---- orig/exclude.c 2005-10-14 18:45:50
-+++ exclude.c 2005-12-17 19:52:48
-@@ -446,6 +446,14 @@ void *push_local_filters(const char *dir
+--- orig/exclude.c 2005-12-17 21:02:32
++++ exclude.c 2005-12-17 21:18:38
+@@ -212,6 +212,8 @@ static void add_rule(struct filter_list_
+ if (!(lp = new_array(struct filter_list_struct, 1)))
+ out_of_memory("add_rule");
+ lp->head = lp->tail = NULL;
++ if (mflags & MATCHFLG_CVS_IGNORE)
++ cp = "CVS";
+ if (asprintf(&lp->debug_type, " [per-dir %s]", cp) < 0)
+ out_of_memory("add_rule");
+ ret->u.mergelist = lp;
+@@ -446,6 +448,14 @@ void *push_local_filters(const char *dir
set_filter_dir(dir, dirlen);
}
if (strlcpy(dirbuf + dirbuf_len, ex->pattern,
MAXPATHLEN - dirbuf_len) < MAXPATHLEN - dirbuf_len) {
parse_filter_file(lp, dirbuf, ex->match_flags,
-@@ -962,6 +970,7 @@ void parse_filter_file(struct filter_lis
+@@ -962,6 +972,7 @@ void parse_filter_file(struct filter_lis
char line[BIGPATHBUFLEN];
char *eob = line + sizeof line - 1;
int word_split = mflags & MATCHFLG_WORD_SPLIT;
if (!fname || !*fname)
return;
-@@ -1006,6 +1015,24 @@ void parse_filter_file(struct filter_lis
+@@ -1006,6 +1017,24 @@ void parse_filter_file(struct filter_lis
continue;
break;
}
if (word_split && isspace(ch))
break;
if (eol_nulls? !ch : (ch == '\n' || ch == '\r'))
-@@ -1015,13 +1042,15 @@ void parse_filter_file(struct filter_lis
+@@ -1015,13 +1044,15 @@ void parse_filter_file(struct filter_lis
else
overflow = 1;
}