- Add support for a "!" character in regex matching in devd(8). It inverts
the logic (true/false) of the matching. - Add "!usbus[0-9]+" to IFNET ATTACH notification handler in the default devd.conf to prevent rc.d/netif from running when usbus[0-9]+ is attached. Reviewed by: imp
This commit is contained in:
parent
5e6f40a264
commit
0321b694c7
@ -38,6 +38,7 @@ options {
|
||||
#
|
||||
notify 0 {
|
||||
match "system" "IFNET";
|
||||
match "subsystem" "!usbus[0-9]+";
|
||||
match "type" "ATTACH";
|
||||
action "/etc/pccard_ether $subsystem start";
|
||||
};
|
||||
|
@ -251,7 +251,14 @@ match::match(config &c, const char *var, const char *re)
|
||||
: _var(var)
|
||||
{
|
||||
_re = "^";
|
||||
_re.append(c.expand_string(string(re)));
|
||||
if (!c.expand_string(string(re)).empty() &&
|
||||
c.expand_string(string(re)).at(0) == '!') {
|
||||
_re.append(c.expand_string(string(re)).substr(1));
|
||||
_inv = 1;
|
||||
} else {
|
||||
_re.append(c.expand_string(string(re)));
|
||||
_inv = 0;
|
||||
}
|
||||
_re.append("$");
|
||||
regcomp(&_regex, _re.c_str(), REG_EXTENDED | REG_NOSUB | REG_ICASE);
|
||||
}
|
||||
@ -268,10 +275,13 @@ match::do_match(config &c)
|
||||
bool retval;
|
||||
|
||||
if (Dflag)
|
||||
fprintf(stderr, "Testing %s=%s against %s\n", _var.c_str(),
|
||||
value.c_str(), _re.c_str());
|
||||
fprintf(stderr, "Testing %s=%s against %s, invert=%d\n",
|
||||
_var.c_str(), value.c_str(), _re.c_str(), _inv);
|
||||
|
||||
retval = (regexec(&_regex, value.c_str(), 0, NULL, 0) == 0);
|
||||
if (_inv == 1)
|
||||
retval = (retval == 0) ? 1 : 0;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
.\" SOFTWARE.
|
||||
.\"
|
||||
.Dd March 8, 2009
|
||||
.Dd October 25, 2011
|
||||
.Dt DEVD.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -121,6 +121,10 @@ Creates a regular expression and assigns it to the variable
|
||||
.Ar regexp-name .
|
||||
The variable is available throughout the rest of
|
||||
the configuration file.
|
||||
If the string begins with
|
||||
.Ql \&! ,
|
||||
it matches if the regular expression formed by the rest of the string
|
||||
does not match.
|
||||
All regular expressions have an implicit
|
||||
.Ql ^$
|
||||
around them.
|
||||
|
@ -92,6 +92,7 @@ public:
|
||||
private:
|
||||
std::string _var;
|
||||
std::string _re;
|
||||
bool _inv;
|
||||
regex_t _regex;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user