+#define MATCHFLG_INCLUDE (1<<4) /* this is an include, not an exclude */
+#define MATCHFLG_DIRECTORY (1<<5) /* this matches only directories */
+#define MATCHFLG_CLEAR_LIST (1<<6) /* this item is the "!" token */
+#define MATCHFLG_WORD_SPLIT (1<<7) /* split rules on whitespace */
+#define MATCHFLG_NO_INHERIT (1<<8) /* don't inherit these rules */
+#define MATCHFLG_NO_PREFIXES (1<<9) /* parse no prefixes from patterns */
+#define MATCHFLG_MERGE_FILE (1<<10)/* specifies a file to merge */
+#define MATCHFLG_PERDIR_MERGE (1<<11)/* merge-file is searched per-dir */
+#define MATCHFLG_EXCLUDE_SELF (1<<12)/* merge-file name should be excluded */
+#define MATCHFLG_FINISH_SETUP (1<<13)/* per-dir merge file needs setup */
+#define MATCHFLG_NEGATE (1<<14)/* rule matches when pattern does not */
+
+#define MATCHFLGS_FROM_CONTAINER (MATCHFLG_ABS_PATH | MATCHFLG_INCLUDE \
+ | MATCHFLG_DIRECTORY | MATCHFLG_NEGATE)
+
+struct filter_struct {
+ struct filter_struct *next;