Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Mar 2016 04:22:22 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r297331 - head/sbin/devd
Message-ID:  <201603280422.u2S4MMRH012240@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Mon Mar 28 04:22:22 2016
New Revision: 297331
URL: https://svnweb.freebsd.org/changeset/base/297331

Log:
  Sometimes, it's useful to export the entire line to an external
  program without listening to the devd socket for all events. Define
  two new pseudo variables $*, the entire event from devctl and $_,
  the entire event without the type character, since it might be easier
  to use in some circumstances.

Modified:
  head/sbin/devd/devd.cc
  head/sbin/devd/devd.conf.5

Modified: head/sbin/devd/devd.cc
==============================================================================
--- head/sbin/devd/devd.cc	Mon Mar 28 02:05:35 2016	(r297330)
+++ head/sbin/devd/devd.cc	Mon Mar 28 04:22:22 2016	(r297331)
@@ -648,8 +648,8 @@ config::expand_one(const char *&src, str
 		return;
 	}
 
-	// $[^A-Za-z] -> $\1
-	if (!isalpha(*src)) {
+	// $[^-A-Za-z_*] -> $\1
+	if (!isalpha(*src) && *src != '_' && *src != '-' && *src != '*') {
 		dst += '$';
 		dst += *src++;
 		return;
@@ -793,10 +793,15 @@ process_event(char *buffer)
 	devdlog(LOG_INFO, "Processing event '%s'\n", buffer);
 	type = *buffer++;
 	cfg.push_var_table();
+	// $* is the entire line
+	cfg.set_variable("*", buffer - 1);
+	// $_ is the entire line without the initial character
+	cfg.set_variable("_", buffer - 1);
 	// No match doesn't have a device, and the format is a little
 	// different, so handle it separately.
 	switch (type) {
 	case notify:
+		//! (k=v)*
 		sp = cfg.set_vars(sp);
 		break;
 	case nomatch:

Modified: head/sbin/devd/devd.conf.5
==============================================================================
--- head/sbin/devd/devd.conf.5	Mon Mar 28 02:05:35 2016	(r297330)
+++ head/sbin/devd/devd.conf.5	Mon Mar 28 04:22:22 2016	(r297331)
@@ -41,7 +41,7 @@
 .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\"
-.Dd July 11, 2015
+.Dd March 28, 2016
 .Dt DEVD.CONF 5
 .Os
 .Sh NAME
@@ -234,10 +234,17 @@ A partial list of variables and their po
 with the
 .Ic match
 statement.
+The variables are published by the bus based on characteristics of the device
+that generated the event (for device events).
+Variables for other classes of events are dependent on those events.
 .Pp
 .Bl -tag -width ".Li manufacturer" -compact
 .It Ic Variable
 .Ic Description
+.It Li *
+The entire message from the current event
+.It Li _
+The entire message from the current event, after the initial type character
 .It Li bus
 Device name of parent bus.
 .It Li cdev



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603280422.u2S4MMRH012240>