Date: Sat, 15 Jan 2000 17:26:41 +0300 (MSK) From: "Vladimir B. Grebeschikov" <vova@express.ru> To: current@freebsd.org Subject: syslogd Message-ID: <Pine.BSF.4.21.0001151723020.53170-100000@lanturn.kmost.express.ru>
next in thread | raw e-mail | index | archive | help
I've make small patch to syslogd, to enable terminate search of logfiles when matched specifig progname, like: # log anything interesting to console *.err;kern.debug;auth.notice;mail.crit /dev/console *.err root *.notice;news.err root *.alert root *.emerg * # log firewall messages ONLY in this file (noy in messages below) !!ipfw *.* /var/log/ipfw !* *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages mail.info /var/log/maillog lpr.info /var/log/lpd-errs cron.* /var/cron/log may be this patch will be interesting to other freebsd people ? --- usr.sbin/syslogd/syslogd.c.orig Sat Jan 15 14:56:37 2000 +++ usr.sbin/syslogd/syslogd.c Sat Jan 15 16:57:25 2000 @@ -153,6 +153,7 @@ #define PRI_EQ 0x2 #define PRI_GT 0x4 char *f_program; /* program this applies to */ + short f_prog_excl; /* don't match files after chane prog */ union { char f_uname[MAXUNAMES][UT_NAMESIZE+1]; struct { @@ -657,6 +658,7 @@ char *timestamp; char prog[NAME_MAX+1]; char buf[MAXLINE+1]; + int pexcl = 0; dprintf("logmsg: pri %o, flags %x, from %s, msg %s\n", pri, flags, from, msg); @@ -721,6 +723,7 @@ return; } for (f = Files; f; f = f->f_next) { + int pok = 0; /* skip messages that are incorrect priority */ if (!(((f->f_pcmp[fac] & PRI_EQ) && (f->f_pmask[fac] == prilev)) ||((f->f_pcmp[fac] & PRI_LT) && (f->f_pmask[fac] < prilev)) @@ -729,9 +732,20 @@ || f->f_pmask[fac] == INTERNAL_NOPRI) continue; /* skip messages with the incorrect program name */ - if(f->f_program) + if(f->f_program) { if(strcmp(prog, f->f_program) != 0) continue; + else + pok = 1; + + if(f->f_prog_excl) + pexcl = 1; + + } + + if (pexcl && !pok) + break; /* terminate search when f->f_program + no longer match prog */ if (f->f_type == F_CONSOLE && (flags & IGN_CONS)) continue; @@ -1305,7 +1319,7 @@ continue; } for(i = 0; i < NAME_MAX; i++) { - if(!isalnum(p[i])) + if(!isalnum(p[i]) && p[i] != '!') break; prog[i] = p[i]; } @@ -1396,7 +1410,9 @@ if(prog) { f->f_program = calloc(1, strlen(prog)+1); if(f->f_program) { - strcpy(f->f_program, prog); + f->f_prog_excl = (*prog == '!'); + strcpy(f->f_program, prog + (f->f_prog_excl?1:0)); + } } -- TSB Russian Express, Moscow Vladimir B. Grebenschikov, vova@express.ru To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0001151723020.53170-100000>