diff options
-rw-r--r-- | sysklogd/syslogd.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index bafbaa3..416521f 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -424,31 +424,21 @@ static int serveConnection(char *tmpbuf, int n_read) while (p < tmpbuf + n_read) { int pri = (LOG_USER | LOG_NOTICE); + int num_lt = 0; char line[MAXLINE + 1]; unsigned char c; char *q = line; - char *p1 = 0; - int oldpri; while ((c = *p) && q < &line[sizeof(line) - 1]) { - if (c == '<' && p1 == 0) { + if (c == '<' && num_lt == 0) { /* Parse the magic priority number. */ - p1 = p; - oldpri = pri; + num_lt++; pri = 0; while (isdigit(*(++p))) { pri = 10 * pri + (*p - '0'); } - if ( *p != '>') { - *q++ = c; - p=p1; - p1=0; - pri=oldpri; - } else { - if (pri & ~(LOG_FACMASK | LOG_PRIMASK)){ - pri = (LOG_USER | LOG_NOTICE); - } - } + if (pri & ~(LOG_FACMASK | LOG_PRIMASK)){ + pri = (LOG_USER | LOG_NOTICE); } else if (c == '\n') { *q++ = ' '; } else if (iscntrl(c) && (c < 0177)) { |