diff --git a/usr.bin/script/script.1 b/usr.bin/script/script.1 index 9b8efcd8af36..de8e7fff17bf 100644 --- a/usr.bin/script/script.1 +++ b/usr.bin/script/script.1 @@ -28,7 +28,7 @@ .\" @(#)script.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd Oct 27, 2012 +.Dd December 4, 2013 .Dt SCRIPT 1 .Os .Sh NAME @@ -37,6 +37,7 @@ .Sh SYNOPSIS .Nm .Op Fl adfkpqr +.Op Fl F Ar pipe .Op Fl t Ar time .Op Ar file Op Ar command ... .Sh DESCRIPTION @@ -76,6 +77,12 @@ retaining the prior contents. When playing back a session with the .Fl p flag, do not sleep between records when playing back a timestamped session. +.It Fl F Ar pipe +Immediately flush output after each write. +This will allow a user to create a named pipe using +.Xr mkfifo 1 +and another user may watch the live session using a utility like +.Xr cat 1 . .It Fl f Create .Ar file.filemon diff --git a/usr.bin/script/script.c b/usr.bin/script/script.c index 515a10eb2d7c..1396d3d1f383 100644 --- a/usr.bin/script/script.c +++ b/usr.bin/script/script.c @@ -98,18 +98,18 @@ main(int argc, char *argv[]) char obuf[BUFSIZ]; char ibuf[BUFSIZ]; fd_set rfd; - int aflg, kflg, pflg, ch, k, n; + int aflg, Fflg, kflg, pflg, ch, k, n; int flushtime, readstdin; int fm_fd, fm_log; - aflg = kflg = pflg = 0; + aflg = Fflg = kflg = pflg = 0; usesleep = 1; rawout = 0; flushtime = 30; fm_fd = -1; /* Shut up stupid "may be used uninitialized" GCC warning. (not needed w/clang) */ - while ((ch = getopt(argc, argv, "adfkpqrt:")) != -1) + while ((ch = getopt(argc, argv, "adFfkpqrt:")) != -1) switch(ch) { case 'a': aflg = 1; @@ -117,6 +117,9 @@ main(int argc, char *argv[]) case 'd': usesleep = 0; break; + case 'F': + Fflg = 1; + break; case 'f': fflg = 1; break; @@ -283,6 +286,8 @@ main(int argc, char *argv[]) fflush(fscript); start = tvec; } + if (Fflg) + fflush(fscript); } finish(); done(0);