]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
scriptreplay: Add --maxdelay option.
authorJesper Dahl Nyerup <nyerup@one.com>
Mon, 10 Feb 2014 10:53:18 +0000 (11:53 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 10 Feb 2014 18:24:28 +0000 (19:24 +0100)
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>
term-utils/scriptreplay.1
term-utils/scriptreplay.c

index 20b6d93bc6b325ce3938f3c80290375837bb3238..329dbc9f8e336fafc3ec2e88437e7255e538749c 100644 (file)
@@ -56,6 +56,12 @@ Speed up the replay displaying this
 of times.  The argument is a floating point number.  It's called divisor
 because it divides the timings by this factor.
 .TP
+.BR \-m , " \-\-maxdelay " \fInumber\fR
+Set the maximal delay between transcript updates to
+.I number
+seconds.  The argument is a floating point number.  This can be used to
+avoid long pauses in the transcript replay.
+.TP
 .BR \-V , " \-\-version"
 Display version information and exit.
 .TP
index 46468be248cf548f595c793e53357c49ab1d7c00..4738a8c6aeb4d6488fe96f96bafead1f1ea18d05 100644 (file)
@@ -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);