diff options
| author | Simon J. Gerraty <sjg@FreeBSD.org> | 2014-04-28 07:50:45 +0000 |
|---|---|---|
| committer | Simon J. Gerraty <sjg@FreeBSD.org> | 2014-04-28 07:50:45 +0000 |
| commit | 3b8f08459569bf0faa21473e5cec2491e95c9349 (patch) | |
| tree | 80f45dd81ca716bcd7ca9674581e1fc40b93cd34 /usr.bin/script | |
| parent | 9d2ab4a62d6733c45958627ac113bdbd818d1e2a (diff) | |
| parent | b2ba55951383498f252746f618d513139da06e8e (diff) | |
Notes
Diffstat (limited to 'usr.bin/script')
| -rw-r--r-- | usr.bin/script/script.1 | 9 | ||||
| -rw-r--r-- | usr.bin/script/script.c | 20 |
2 files changed, 22 insertions, 7 deletions
diff --git a/usr.bin/script/script.1 b/usr.bin/script/script.1 index 9b8efcd8af36b..de8e7fff17bfc 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 515a10eb2d7c5..72814fbe17adf 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; @@ -235,12 +238,15 @@ main(int argc, char *argv[]) FD_SET(master, &rfd); if (readstdin) FD_SET(STDIN_FILENO, &rfd); - if ((!readstdin && ttyflg) || flushtime > 0) { - tv.tv_sec = !readstdin && ttyflg ? 1 : - flushtime - (tvec - start); + if (!readstdin && ttyflg) { + tv.tv_sec = 1; tv.tv_usec = 0; tvp = &tv; readstdin = 1; + } else if (flushtime > 0) { + tv.tv_sec = flushtime - (tvec - start); + tv.tv_usec = 0; + tvp = &tv; } else { tvp = NULL; } @@ -283,6 +289,8 @@ main(int argc, char *argv[]) fflush(fscript); start = tvec; } + if (Fflg) + fflush(fscript); } finish(); done(0); |
