From: Karel Zak Date: Fri, 12 Apr 2019 14:27:54 +0000 (+0200) Subject: script: support multi-stream logging X-Git-Tag: v2.35-rc1~169 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c1c2ee0b3afec6e05d044b611362d9a5a6966467;p=thirdparty%2Futil-linux.git script: support multi-stream logging * allow to use --log-in and --log-out in the same time * add --log-io to log stdout and stdin to the one log file * introduce a new timing file format with entry type identifirs I : info about input stream O : info about output stream in the next commits it's possible to add 'S' for signals and 'H' for extra (header) information. * the new file format is optional and enabled only if multiple streams logging is requested. Signed-off-by: Karel Zak --- diff --git a/term-utils/script.1 b/term-utils/script.1 index 5d822d498d..75ad24f032 100644 --- a/term-utils/script.1 +++ b/term-utils/script.1 @@ -44,6 +44,10 @@ makes a typescript of everything displayed on your terminal. It is useful for students who need a hardcopy record of an interactive session as proof of an assignment, as the typescript file can be printed out later with .BR lpr (1). +Since version 2.35 +.B script +supports multiple streams and allows to log input and output to separate +files or all the one file. .PP If the argument .I file @@ -87,6 +91,12 @@ being done using `cat foo'. Allow the default output destination, i.e. the typescript file, to be a hard or symbolic link. The command will follow a symbolic link. .TP +\fB\-B\fR, \fB\-\-log\-io\fR \fIfile\fR +Log input and output to the same +\fIfile\fR. Note, this option makes sense only if \fB\-\-log\-timing\fR is +also specified, otherwise it's impossible to separate output and input streams from +the log \fIfile\fR. +.TP \fB\-I\fR, \fB\-\-log\-in\fR \fIfile\fR Log input to the \fIfile\fR. The log output is disabled if only \fB\-\-log\-in\fR specified. @@ -100,12 +110,23 @@ name 'typescript' if the option \fB\-\-log\-out\fR or \fB\-\-log\-in\fR is not given. The log output is disabled if only \fB\-\-log\-in\fR specified. .TP \fB\-T\fR, \fB\-\-log\-timing\fR \fIfile\fR -Log timing information to the \fIfile\fR. +Log timing information to the \fIfile\fR. Two timing file formats are supporte +now. The classic format is used when only one stream (input or output) logging +is enabled. The multi-stream format is used on \fB\-\-log\-io\fR or when +\fB\-\-log\-in\fR and \fB\-\-log\-out\fR are used together. .sp -This log data contains two fields, separated by a space. The first +.RS +.B Classic format +.PP +The log contains two fields, separated by a space. The first field indicates how much time elapsed since the previous output. The second -field indicates how many characters were output this time. This information -can be used to replay typescripts with realistic typing and output delays. +field indicates how many characters were output this time. +.sp +.B Multi-stream format +.PP +The first field is entry type itentifier ('I'nput, 'O'utput, 'H'eader, 'S'ignal). +The socond field is how much time elapsed since the previous entry, and rest of the entry is type specific data. +.RE .TP \fB\-o\fR, \fB\-\-output-limit\fR \fIsize\fR Limit the size of the typescript and timing files to diff --git a/term-utils/script.c b/term-utils/script.c index 9b5aa778d8..37725162c0 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -102,7 +102,8 @@ UL_DEBUG_DEFINE_MASKNAMES(script) = UL_DEBUG_EMPTY_MASKNAMES; enum { SCRIPT_FMT_RAW = 1, /* raw slave/master data */ - SCRIPT_FMT_TIMING_SIMPLE, /* timing info in classic "