char *name;
regex_t *pattern;
regex_t *magic;
+ regex_t *pattern_excl;
+ regex_t *magic_excl;
ARGV_t flags;
} * rpmfcAttr;
attr->name = xstrdup(name);
attr->pattern = rpmfcAttrReg(name, "pattern");
attr->magic = rpmfcAttrReg(name, "magic");
+ attr->pattern_excl = rpmfcAttrReg(name, "exclude_pattern");
+ attr->magic_excl = rpmfcAttrReg(name, "exclude_magic");
return attr;
}
regfree(attr->magic);
rfree(attr->magic);
}
+ if (attr->pattern_excl) {
+ regfree(attr->pattern_excl);
+ rfree(attr->pattern_excl);
+ }
+ if (attr->magic_excl) {
+ regfree(attr->magic_excl);
+ rfree(attr->magic_excl);
+ }
argvFree(attr->flags);
rfree(attr->name);
rfree(attr);
if (hasAttr((*attr)->flags, "exeonly") && !is_executable)
continue;
+ /* Filter out path and magic exclude-matches */
+ if (regMatch((*attr)->magic_excl, ftype))
+ continue;
+ if (regMatch((*attr)->pattern_excl, path))
+ continue;
+
/* Add attributes on libmagic type & path pattern matches */
if (regMatch((*attr)->magic, ftype))
argvAddTokens(&fc->fattrs[fc->ix], (*attr)->name);
# %__myattr_provides path + args to provides finder script for <myattr>
# %__myattr_magic libmagic classification match regex
# %__myattr_pattern path based classification match regex
-# %__myattr_exeonly require file to be executable to classify
+# %__myattr_flags flags to control behavior (just "exeonly" for now)
+# %__myattr_exclude_magic exclude by magic regex
+# %__myattr_exclude_pattern exclude by path regex
#
%_fileattrsdir %{_rpmconfigdir}/fileattrs