summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authordcs <dcs@FreeBSD.org>2002-09-23 11:59:19 +0000
committerdcs <dcs@FreeBSD.org>2002-09-23 11:59:19 +0000
commit0a327f9db4a881fbdf50ea890f74a1ce17112519 (patch)
tree920d9cf95b394860bd5f156145e6f6892d2dc1c1 /usr.sbin
parent456a491da7892351012637eda2691f270124c7e9 (diff)
downloadFreeBSD-src-0a327f9db4a881fbdf50ea890f74a1ce17112519.zip
FreeBSD-src-0a327f9db4a881fbdf50ea890f74a1ce17112519.tar.gz
Introduce to the !program specification a capability similar to the one
that already exists for hosts: being able to specify a section that applies to every program *except* the one in question. The normal syntax for program specification is still valid. For the new capability, one uses: !-program Since there is no way to specify a program beginning with a dash in the old syntax, as it would be interpreted as the case above, the following alternative syntax to the original capability is provided: !+program This shouldn't introduce incompatibilities with any syslogd configuration in production because -stable's syslogd does not support a dash anywhere in the program specification. MFC after: 2 weeks
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/syslogd/syslog.conf.511
-rw-r--r--usr.sbin/syslogd/syslogd.c16
2 files changed, 25 insertions, 2 deletions
diff --git a/usr.sbin/syslogd/syslog.conf.5 b/usr.sbin/syslogd/syslog.conf.5
index 18579a3..099b9cb 100644
--- a/usr.sbin/syslogd/syslog.conf.5
+++ b/usr.sbin/syslogd/syslog.conf.5
@@ -185,6 +185,17 @@ specification for
.Ql foo
will also match any message logged by the kernel with the prefix
.Ql "foo: " .
+The
+.Ql #!+prog
+or
+.Ql !+prog
+specification works just like the previous one,
+and the
+.Ql #!-prog
+or
+.Ql !-prog
+specification will match any message but the ones from that
+program.
A
.Em hostname
specification of the form
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 999254a..c3887ac 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -853,8 +853,20 @@ logmsg(int pri, const char *msg, const char *from, int flags)
/* skip messages with the incorrect program name */
if (f->f_program)
- if (strcmp(prog, f->f_program) != 0)
- continue;
+ switch (f->f_program[0]) {
+ case '+':
+ if (strcmp(prog, f->f_program + 1) != 0)
+ continue;
+ break;
+ case '-':
+ if (strcmp(prog, f->f_program + 1) == 0)
+ continue;
+ break;
+ default:
+ if (strcmp(prog, f->f_program) != 0)
+ continue;
+ break;
+ }
if (f->f_type == F_CONSOLE && (flags & IGN_CONS))
continue;
OpenPOWER on IntegriCloud