Hurray for insomnia!
Feels good, doesn't it.
I have implemented $PID macro support in syslog-ng 1.6.8, and have tested it out on gentoo linux.
Could you attach the patch next time, so it's easier to comment?
diff -urN syslog-ng-1.6.8.orig/src/log.c syslog-ng-1.6.8/src/log.c --- syslog-ng-1.6.8.orig/src/log.c 2004-01-13 12:08:02.000000000 >-0600 +++ syslog-ng-1.6.8/src/log.c 2005-10-06 01:14:35.000000000 -0500 @@ -223,6 +223,31 @@ if (left) { lm->program = c_format_cstring("%s", oldleft - left, oldsrc); + + /* Try to extract a pid */ + if (*src == '[') { + unsigned char *pid_start = NULL; + unsigned char *pid_end = NULL; + src++; + left--; + + if (left && *src >= '0' && *src <= '9') {
Consider isdigit(3)
+ pid_start = src; + pid_end = src; + src++; + left--; + while (left && *src >= '0' && *src <= '9') {
Consider isdigit(3) or parse up to *src == ']'
+ pid_end = src; + src++; + left--; + } + } + + if (pid_start != NULL && pid_end != NULL && + pid_end - pid_start > 0) { + lm->pid = c_format_cstring("%s", >pid_end - pid_start, pid_start); + } + } }
src = oldsrc; @@ -278,6 +303,7 @@ if (--msg->use_cnt == 0) { ol_string_free(msg->host); ol_string_free(msg->program); + ol_string_free(msg->pid); ol_string_free(msg->date); ol_string_free(msg->msg); ol_string_free(msg->host_from); @@ -304,6 +330,7 @@ NEW_SPACE(self); self->msg = c_format_cstring("syslog-ng[%i]: %s", getpid(), >length, data); self->program = c_format_cstring("syslog-ng"); + self->pid = c_format_cstring("%i", getpid());
This is wrong! You most certainly don't want to add the pid of the receiving syslog-ng process.
self->stamp = self->recvd = time(NULL); self->pri = pri; self->flags = LF_INTERNAL; diff -urN syslog-ng-1.6.8.orig/src/log.h syslog-ng-1.6.8/src/log.h --- syslog-ng-1.6.8.orig/src/log.h 2003-01-08 03:31:37.000000000 >-0600 +++ syslog-ng-1.6.8/src/log.h 2005-10-06 00:49:45.000000000 -0500 @@ -46,6 +46,7 @@ struct ol_string *msg; struct ol_string *date; struct ol_string *program; + struct ol_string *pid;
Whitespace/tab damage. The rest seems ok from a quick glance. Good night :), Roberto Nibali, ratz -- ------------------------------------------------------------- addr://Kasinostrasse 30, CH-5001 Aarau tel://++41 62 823 9355 http://www.terreactive.com fax://++41 62 823 9356 ------------------------------------------------------------- terreActive AG Wir sichern Ihren Erfolg -------------------------------------------------------------