summaryrefslogtreecommitdiffstats
path: root/term-utils/scriptreplay.c
diff options
context:
space:
mode:
authorJesper Dahl Nyerup2014-02-10 11:53:18 +0100
committerKarel Zak2014-02-10 19:24:28 +0100
commit7f1d48363823f7da47ca56f84eb4b2155c5ed36b (patch)
tree6d381e67b551f2c151a6e9f25e10c60794ffb0fa /term-utils/scriptreplay.c
parentcal: remove unnecessary static variables (diff)
downloadkernel-qcow2-util-linux-7f1d48363823f7da47ca56f84eb4b2155c5ed36b.tar.gz
kernel-qcow2-util-linux-7f1d48363823f7da47ca56f84eb4b2155c5ed36b.tar.xz
kernel-qcow2-util-linux-7f1d48363823f7da47ca56f84eb4b2155c5ed36b.zip
scriptreplay: Add --maxdelay option.
This option caps the delay between updates, to avoid long pauses in transcript playback. Signed-off-by: Jesper Dahl Nyerup <nyerup@one.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'term-utils/scriptreplay.c')
-rw-r--r--term-utils/scriptreplay.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/term-utils/scriptreplay.c b/term-utils/scriptreplay.c
index 46468be24..4738a8c6a 100644
--- a/term-utils/scriptreplay.c
+++ b/term-utils/scriptreplay.c
@@ -46,6 +46,7 @@ usage(FILE *out)
fputs(_(" -t, --timing <file> script timing output file\n"
" -s, --typescript <file> script terminal session output file\n"
" -d, --divisor <num> speed up or slow down execution with time divisor\n"
+ " -m, --maxdelay <num> wait at most this many seconds between updates\n"
" -V, --version output version information and exit\n"
" -h, --help display this help and exit\n\n"), out);
@@ -130,8 +131,8 @@ main(int argc, char *argv[])
{
FILE *tfile, *sfile;
const char *sname = NULL, *tname = NULL;
- double divi = 1;
- int c, diviopt = FALSE, idx;
+ double divi = 1, maxdelay = 0;
+ int c, diviopt = FALSE, maxdelayopt = FALSE, idx;
unsigned long line;
size_t oldblk = 0;
char ch;
@@ -140,6 +141,7 @@ main(int argc, char *argv[])
{ "timing", required_argument, 0, 't' },
{ "typescript", required_argument, 0, 's' },
{ "divisor", required_argument, 0, 'd' },
+ { "maxdelay", required_argument, 0, 'm' },
{ "version", no_argument, 0, 'V' },
{ "help", no_argument, 0, 'h' },
{ NULL, 0, 0, 0 }
@@ -156,7 +158,7 @@ main(int argc, char *argv[])
textdomain(PACKAGE);
atexit(close_stdout);
- while ((ch = getopt_long(argc, argv, "t:s:d:Vh", longopts, NULL)) != -1)
+ while ((ch = getopt_long(argc, argv, "t:s:d:m:Vh", longopts, NULL)) != -1)
switch(ch) {
case 't':
tname = optarg;
@@ -168,6 +170,10 @@ main(int argc, char *argv[])
diviopt = TRUE;
divi = getnum(optarg);
break;
+ case 'm':
+ maxdelayopt = TRUE;
+ maxdelay = getnum(optarg);
+ break;
case 'V':
printf(_("%s from %s\n"), program_invocation_short_name,
PACKAGE_STRING);
@@ -191,7 +197,8 @@ main(int argc, char *argv[])
sname = idx < argc ? argv[idx++] : "typescript";
if (!diviopt)
divi = idx < argc ? getnum(argv[idx]) : 1;
-
+ if (maxdelay < 0)
+ maxdelay = 0;
tfile = fopen(tname, "r");
if (!tfile)
err(EXIT_FAILURE, _("cannot open %s"), tname);
@@ -219,6 +226,9 @@ main(int argc, char *argv[])
}
delay /= divi;
+ if (maxdelayopt && delay > maxdelay)
+ delay = maxdelay;
+
if (delay > SCRIPT_MIN_DELAY)
delay_for(delay);