summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/syslogd/syslogd.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 0727b2b..ca5391d 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -577,9 +577,14 @@ printline(hname, msg)
q = line;
- while ((c = *p++ & 0177) != '\0' &&
- q < &line[sizeof(line) - 1])
- if (iscntrl(c))
+ while ((c = (unsigned char)*p++) != '\0' &&
+ q < &line[sizeof(line) - 3]) {
+ if ((c & 0x80) && c < 0xA0) {
+ c &= 0x7F;
+ *q++ = 'M';
+ *q++ = '-';
+ }
+ if (isascii(c) && iscntrl(c)) {
if (c == '\n')
*q++ = ' ';
else if (c == '\t')
@@ -588,8 +593,9 @@ printline(hname, msg)
*q++ = '^';
*q++ = c ^ 0100;
}
- else
+ } else
*q++ = c;
+ }
*q = '\0';
logmsg(pri, line, hname, 0);
OpenPOWER on IntegriCloud