From: <al...@us...> - 2003-04-15 17:17:14
|
Update of /cvsroot/msyslog/syslog/src In directory sc8-pr-cvs1:/tmp/cvs-serv30127 Modified Files: syslogd.c syslogd.h Log Message: extract_hostname() by jkohen@ Index: syslogd.c =================================================================== RCS file: /cvsroot/msyslog/syslog/src/syslogd.c,v retrieving revision 1.240 retrieving revision 1.241 diff -u -d -r1.240 -r1.241 --- syslogd.c 5 Apr 2003 01:57:52 -0000 1.240 +++ syslogd.c 15 Apr 2003 17:17:08 -0000 1.241 @@ -232,6 +232,18 @@ struct i_module **unpoll_fd_modules = NULL; /* an array of pointers */ int unpoll_fd_cnt = 0; +#define MIN_HOST_BUF 90 + +static const char *hostname_tmpl[] = { + "<%*d>%*3s %*d %*d:%*d:%*d %*d %n%89s %n", /* w/year */ + "<%*d>%*3s %*d %*d:%*d:%*d %n%89s %n", + "%*3s %*d %*d:%*d:%*d %*d %n%89s %n", /* w/year */ + "%*3s %*d %*d:%*d:%*d %n%89s %n", + "%n%89s %n", +}; +#define NR_HOSTNAME_TEMPLATES (sizeof (hostname_tmpl) / sizeof (hostname_tmpl[0])) + + int main(int argc, char **argv) { @@ -1825,4 +1837,38 @@ ret = vfprintf(stderr, fmt, var); va_end(var); return (ret); +} + +int +extract_hostname(char *msg, char *buf, size_t buf_size) +{ + int found_host; + int n1, n2; + int i; + + if (buf_size < MIN_HOST_BUF) + return (-1); + + found_host = 0; + + for (i = 0; i < NR_HOSTNAME_TEMPLATES; i++) { + if (1 == sscanf(msg, hostname_tmpl[i], &n1, buf, &n2)) { + found_host = 1; + break; + } + } + + if (!found_host || msg[n2] == '\0') + return (-1); + + dprintf(MSYSLOG_INFORMATIVE, "im_tcp_read: before: [%s]\n", msg); + + /* remove host from message */ + while (msg[n2] != '\0') + msg[n1++] = msg[n2++]; + msg[n1] = '\0'; + + dprintf(MSYSLOG_INFORMATIVE, "im_tcp_read: after: [%s]\n", msg); + + return (1); } Index: syslogd.h =================================================================== RCS file: /cvsroot/msyslog/syslog/src/syslogd.h,v retrieving revision 1.113 retrieving revision 1.114 diff -u -d -r1.113 -r1.114 --- syslogd.h 5 Apr 2003 00:06:03 -0000 1.113 +++ syslogd.h 15 Apr 2003 17:17:09 -0000 1.114 @@ -79,6 +79,7 @@ int m_dprintf(int, char const *, ...); /* level, format, ... */ int getxopt(int, char *[], char *, int *); /* argc, argv, opts, startarg */ +int extract_hostname(char *, char *, size_t); #define MSYSLOG_CRITICAL 10 #define MSYSLOG_SERIOUS 20 |