diff options
author | phk <phk@FreeBSD.org> | 2011-05-10 10:58:57 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2011-05-10 10:58:57 +0000 |
commit | e5d670fcadafc613b6edd202c0ebdb1d1f1a3689 (patch) | |
tree | 8f09139d46659a67514d9307f3144ff60fc2cef2 /usr.bin | |
parent | b0e91b4cdcf53ff29913ad32fc9260901f29db9b (diff) | |
download | FreeBSD-src-e5d670fcadafc613b6edd202c0ebdb1d1f1a3689.zip FreeBSD-src-e5d670fcadafc613b6edd202c0ebdb1d1f1a3689.tar.gz |
Flush the scriptfile whenever we see a non-graphical character to get
more real-time logging, without forcing a write(2) on every single
character.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tip/tip/tipout.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/usr.bin/tip/tip/tipout.c b/usr.bin/tip/tip/tipout.c index 42fc4a2..3dff3bd 100644 --- a/usr.bin/tip/tip/tipout.c +++ b/usr.bin/tip/tip/tipout.c @@ -170,12 +170,18 @@ tipout(void) if (boolean(value(SCRIPT)) && fscript != NULL) { if (!boolean(value(BEAUTIFY))) { fwrite(buf, 1, cnt, fscript); - continue; + } else { + for (cp = buf; cp < buf + cnt; cp++) + if ((*cp >= ' ' && *cp <= '~') || + any(*cp, value(EXCEPTIONS))) + putc(*cp, fscript); + } + for (cp = buf; cp < buf + cnt; cp++) { + if (!isgraph(*cp)) { + fflush(fscript); + break; + } } - for (cp = buf; cp < buf + cnt; cp++) - if ((*cp >= ' ' && *cp <= '~') || - any(*cp, value(EXCEPTIONS))) - putc(*cp, fscript); } } } |