svn commit: r226775 - in head: etc sbin/devd
Ronald Klop
ronald-freebsd8 at klop.yi.org
Thu Oct 27 20:48:02 UTC 2011
Hi,
I like this. Do you have plans the commit it on stable/9?
Ronald.
On Wed, 26 Oct 2011 04:11:28 +0200, Hiroki Sato <hrs at freebsd.org> wrote:
> Author: hrs
> Date: Wed Oct 26 02:11:28 2011
> New Revision: 226775
> URL: http://svn.freebsd.org/changeset/base/226775
>
> Log:
> - 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
>
> Modified:
> head/etc/devd.conf
> head/sbin/devd/devd.cc
> head/sbin/devd/devd.conf.5
> head/sbin/devd/devd.hh
>
> Modified: head/etc/devd.conf
> ==============================================================================
> --- head/etc/devd.conf Wed Oct 26 01:58:36 2011 (r226774)
> +++ head/etc/devd.conf Wed Oct 26 02:11:28 2011 (r226775)
> @@ -38,6 +38,7 @@ options {
> #
> notify 0 {
> match "system" "IFNET";
> + match "subsystem" "!usbus[0-9]+";
> match "type" "ATTACH";
> action "/etc/pccard_ether $subsystem start";
> };
>
> Modified: head/sbin/devd/devd.cc
> ==============================================================================
> --- head/sbin/devd/devd.cc Wed Oct 26 01:58:36 2011 (r226774)
> +++ head/sbin/devd/devd.cc Wed Oct 26 02:11:28 2011 (r226775)
> @@ -251,7 +251,14 @@ match::match(config &c, const char *var,
> : _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;
> }
>
> Modified: head/sbin/devd/devd.conf.5
> ==============================================================================
> --- head/sbin/devd/devd.conf.5 Wed Oct 26 01:58:36 2011 (r226774)
> +++ head/sbin/devd/devd.conf.5 Wed Oct 26 02:11:28 2011 (r226775)
> @@ -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
> .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.
>
> Modified: head/sbin/devd/devd.hh
> ==============================================================================
> --- head/sbin/devd/devd.hh Wed Oct 26 01:58:36 2011 (r226774)
> +++ head/sbin/devd/devd.hh Wed Oct 26 02:11:28 2011 (r226775)
> @@ -92,6 +92,7 @@ public:
> private:
> std::string _var;
> std::string _re;
> + bool _inv;
> regex_t _regex;
> };
> _______________________________________________
> svn-src-all at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-all
> To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the svn-src-head
mailing list