diff options
author | dcs <dcs@FreeBSD.org> | 2002-09-23 11:59:19 +0000 |
---|---|---|
committer | dcs <dcs@FreeBSD.org> | 2002-09-23 11:59:19 +0000 |
commit | 0a327f9db4a881fbdf50ea890f74a1ce17112519 (patch) | |
tree | 920d9cf95b394860bd5f156145e6f6892d2dc1c1 | |
parent | 456a491da7892351012637eda2691f270124c7e9 (diff) | |
download | FreeBSD-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
-rw-r--r-- | usr.sbin/syslogd/syslog.conf.5 | 11 | ||||
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 16 |
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; |