summaryrefslogtreecommitdiffstats
path: root/usr.bin/tip
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2011-05-10 10:58:57 +0000
committerphk <phk@FreeBSD.org>2011-05-10 10:58:57 +0000
commite5d670fcadafc613b6edd202c0ebdb1d1f1a3689 (patch)
tree8f09139d46659a67514d9307f3144ff60fc2cef2 /usr.bin/tip
parentb0e91b4cdcf53ff29913ad32fc9260901f29db9b (diff)
downloadFreeBSD-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/tip')
-rw-r--r--usr.bin/tip/tip/tipout.c16
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);
}
}
}
OpenPOWER on IntegriCloud