This patch from Vitezslav Batrla, is a cleaner fix for the problem with syslogd logging the '<' char.
No binary (build failed)
—
(log yok)
| @@ -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)) { | |