diff options
author | Andrey A. Chernov <ache@FreeBSD.org> | 2000-04-18 01:12:27 +0000 |
---|---|---|
committer | Andrey A. Chernov <ache@FreeBSD.org> | 2000-04-18 01:12:27 +0000 |
commit | 8d396be510de9306b0efd32352a69860d7d195fc (patch) | |
tree | 50323ec666b16dd52001f529293a6ae7d6b3950e /usr.sbin/syslogd/syslogd.c | |
parent | 487e50ecdbbfbb4a8a2f0cafc6ebf64106c9608c (diff) | |
download | src-8d396be510de9306b0efd32352a69860d7d195fc.tar.gz src-8d396be510de9306b0efd32352a69860d7d195fc.zip |
Enable 8bit chars excepting high controls
Notes
Notes:
svn path=/head/; revision=59341
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 0727b2bc2dab..ca5391d34e77 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); |